TemporaWand

基本信息

属性 值
类名 com.colen.tempora.items.TemporaWand
注册名 admin_wand(CommonProxy.java:32)
本地化名 tempora_wand(setUnlocalizedName)
堆叠上限 1
创造栏 CreativeTabs.tabTools
纹理 tempora:tempora_wand
权限 仅 OP(PlayerUtils.isPlayerOp)

功能

管理员「取证棒」:右键方块某个面,查询该坐标在所有 logger 中的历史事件。

行为

方法 行为
onBlockStartBreak 左键破坏方块 → 查询该坐标事件;随后取消破坏(返回 true)并在服务端 markBlockForUpdate 强制刷新
onItemUse 右键 → 取被点击面的相邻方块坐标;客户端只造一个临时区域渲染出盒子并返回 false;服务端执行查询并返回 true
  • 客户端分支构造 TemporaWorldRegion,setRenderMode(RegionRenderMode.TEMPORA_WAND), setRenderStartTimeMs(System.currentTimeMillis()),UUID 随机生成,加入 ClientRegionStore。
  • checkSpot 对非 OP 玩家:向所有 OP 广播 player.tempora_wand.unauthorised 并 LOG.warn 记下坐标与维度。

实现要点

  • ⚠️ 注册名 admin_wand 与本地化名 tempora_wand 不一致,配方 / 数据包用前者,lang key 用后者。
  • 左键与右键都被用作查询,此物品不能破坏任何方块。
  • onBlockStartBreak 里 isServerSide() 判断写了两遍(TemporaWand.java:47 与 :51),第一次包住 checkSpot,第二次包住 markBlockForUpdate。
  • 单击时 onBlockStartBreak 返回 true 取消破坏,与 onItemUse 返回 true 的语义不同(后者阻止放置)。

相关条目