StorageListener

基本信息

generators.enderstorage.StorageListener —— 监听末影存储的存取事件, 让已经打开的总览页在内容变化时自动刷新。

@EventBusSubscriber(side = Side.CLIENT)
public class StorageListener

订阅方法 clientStorageUpdate(EnderStorageStoredEvent) 为 @SideOnly(Side.CLIENT)。

事件分支

event.type 目标组 ID 后缀 来源类
TYPE_ITEM enderstorage.chestoverview + 全局/个人后缀 EnderStorageChestOverview.LOOKUP_GLOBAL_CHESTS_SUFFIX / LOOKUP_PERSONAL_CHESTS_SUFFIX
TYPE_LIQUID enderstorage.tankoverview + 全局/个人后缀 EnderStorageTankOverview.LOOKUP_GLOBAL_TANKS_SUFFIX / LOOKUP_PERSONAL_TANKS_SUFFIX
其它 ""(不刷新) —

刷新机制

if (!id.isEmpty() && id.startsWith(currentId)) {
    GuiUsageRecipe.openRecipeGui(id + REFRESH_VIEW_SUFFIX);
}

REFRESH_VIEW_SUFFIX = "-refreshView",currentId 取自 GuiRecipe_Accessor.invokeGetCurrentRecipeId(...) —— 见 GuiRecipe Accessor。

id.startsWith(currentId) 而非相等:允许后缀匹配, 因为 GUI 的 handler ID 可能带查询参数。

服务端开关

两个总览组都要求服务端开放数据功能,本监听器不能绕过该限制 —— 无数据时显示 nodataheader。

相关条目

源码

  • src/main/java/com/github/dcysteine/neicustomdiagram/generators/enderstorage/StorageListener.java