HoloInventory 指令

基本信息

属性 值
指令名 /holoinventory
注册位置 server/CommandHoloInventory.java
注册时机 HoloInventory.fmlEvent(FMLServerStartingEvent) 内 event.registerServerCommand(new CommandHoloInventory())
所需权限 0(任何玩家可调用)
是否仅 OP 部分子命令要求调用者是 OP(多人模式下);单人模式全部可用

子命令

子命令 权限 行为
(无参数) 任意玩家 在聊天栏打印帮助文本(按 enumChatFormatting.GOLD + " HoloInventory By Dries007" 样式列出所有子命令)
reset 任意玩家 向发起者发送 ResetMessage(清空客户端 Renderer.entityMap/requestMap/tileInventoryMap),并在该玩家上调用 ServerHandler.serverEventHandler.resetPlayer(player) 解除其与所有方块的订阅;最后打印 Cleared client cache
reload 任意玩家 先对发起者执行一次 reset 流程;若发起者是 OP 则额外调用 HoloInventory.getConfig().reload() 重新解析服务器端配置文件
overrideName <new Name...> 任意玩家 把发起者加入 ServerEventHandler.overrideUsers(键=玩家显示名,值=除首参外的完整字符串拼接);发起者接下来右键任意「被支持的」方块,服务器读取其原名称并通过 RenameMessage 推到发起者客户端,触发 Config.nameOverrides 写入。下一次渲染时 GroupRenderer.renderName 会优先取 nameOverrides.get(name)
ban OP 把发起者加入 ServerEventHandler.banUsers;接下来右键任意方块或实体若通过 Helper.weWant 检查,则将其 getClass().getCanonicalName() 加入 Config.bannedTiles 或 Config.bannedEntities;列表写入配置文件 bannedTiles / bannedEntities 字段(Config.overrideBannedThings())
unban <name> OP 若 <name> 已存在于 Config.bannedEntities 或 Config.bannedTiles 则移除并重写配置文件;缺省参数则打印已 ban 的完整类名清单

Tab 补全:

  • 第 1 参数:OP 玩家补全 [reset, reload, overrideName, ban, unban];非 OP 玩家补全 [reset, overrideName]。
  • 第 2 参数:仅当 args[0]==unban && OP 时补全为 Config.bannedEntities ∪ Config.bannedTiles。

错误信息(WrongUsageException 抛出)

触发 抛出文本
reset 由服务器控制台执行 You can't use this as the server...
overrideName 无名称参数 <RED>Give a name, can contain spaces.
overrideName 由服务器控制台执行 <RED>You can't use this as the server...

服务端数据结构(ServerEventHandler)

字段 类型 用途
banUsers List<String> 待 ban 的玩家显示名集合
overrideUsers HashMap<String, String> 待改名玩家显示名 → 新名称
mapBlockToInv Object2ObjectLinkedOpenHashMap<Coord, InventoryData> 全服共享的方块→库存快照缓存(最大 1024 项)
mapBlockToFluidHandler Object2ObjectLinkedOpenHashMap<Coord, FluidHandlerData> 全服共享的方块→流体缓存(同上)
pendingTasks ConcurrentLinkedQueue<Runnable> 跨 tick 延后执行的任务队列
pendingTaskCount Map<EntityPlayerMP, AtomicInteger>(弱引用同步) 单玩家未完成任务计数(硬上限 32)
wrappedInventoryCache WeakHashMap<IInventory, CachedPatternInventory> AE2 样板输出转换缓存(按 NBT 比较失效)

数值

数值 默认
MAX_CACHED 1024
MAX_PENDING_TASKS_PER_PLAYER 32

相关条目