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