Compass State

基本信息

属性 值
枚举类 com.chaosthedude.naturescompass.util.EnumCompassState
存储字段 NBT State(int)
默认值 INACTIVE(0)

行为

Nature’s Compass 的所有运行状态都落在 4 枚枚举值上。ItemNaturesCompass 在每次 tick、GUI 关闭、HUD 渲染时都会读取 State 来决定下一步动作。

ID 名称 触发场景 HUD 显示 GUI 行为
0 INACTIVE 玩家潜行右键 / 创建物品 / 玩家主动取消 无叠加文字 按钮可用
1 SEARCHING 玩家在 GUI 选了群系后服务端启动 BiomeSearchWorker Status: Searching + 群系名 关闭 GUI,由 server tick 推动 worker
2 FOUND BiomeSearchWorker 命中目标群系时调用 setFound() Status: Found + 群系名 + 坐标 + 距离 Teleport 按钮启用(OP/cheat)
3 NOT_FOUND worker 走到 maxDistance 或超过 maxSamples 仍未命中 Status: Not Found + 群系名 + 已扫描半径 不可传送

数值

数值 默认值
INACTIVE ID 0
SEARCHING ID 1
FOUND ID 2
NOT_FOUND ID 3

状态转换图

                ┌────────────┐
                │  INACTIVE  │ <──── 潜行右键 / 重置
                └─────┬──────┘
                      │ GUI 选择群系
                      ▼
                ┌────────────┐
       命中  ◄── │ SEARCHING  │
                └─────┬──────┘
       耗尽  ────────┤
                      ▼
        ┌────────────────────┐
        │ FOUND  / NOT_FOUND │
        └────────────────────┘

触发的设置方法(ItemNaturesCompass)

方法 何时调用 写入 NBT
setState(stack, EnumCompassState, player) 通用写入 State
setSearching(stack, biomeID, player) 搜索启动 State=1
setFound(stack, x, z, player) 命中 State=2, FoundX, FoundZ
setNotFound(stack, player, radius) 搜索结束未命中 State=3, SearchRadius
setInactive(stack, player) 玩家潜行右键取消 State=0
setSearchRadius(stack, radius, player) worker 每多扫 500 块写入一次 SearchRadius

相关条目