跳到正文
烈焰甘蔗Wiki

魔杖等级系统(Wand Tier System)

BetterBuildersWands 的"等级"由两层机制共同决定,源码中并没有显式的 Tier 枚举:

  1. 单次操作的方块上限 —— 由 IWand 实现 + 物品最大耐久共同决定
  2. 锁定模式的自由度 —— 由物品类(ItemBasicWand 的三个子类)决定

⚠️ Unbreakable Wand 的等级同时还体现在 ItemStack 的 meta(= 耐久值) 上,见下文专节。

单次放置方块上限对比

上限公式只有两条,分别对应两个 IWand 实现:

// RestrictedWand —— 耐久型魔杖
Math.min(itemStack.getMaxDamage() - itemStack.getItemDamage(), this.blocklimit)

// UnbreakingWand —— 永恒魔杖
(itemStack.getItemDamage() <= 0) ? 4096 : 1 << itemStack.getItemDamage()
属性 Stone Wand Iron Wand Diamond Wand Unbreakable Wand
注册名 wandStone wandIron wandDiamond wandUnbreakable
物品类 ItemRestrictedWandBasic ItemRestrictedWandAdvanced ItemUnrestrictedWand ItemUnrestrictedWand
IWand 实现 RestrictedWand(5) RestrictedWand(9) RestrictedWand(EMERALD.getMaxUses()) = RestrictedWand(1561) UnbreakingWand()
blocklimit 5 9 1561 不适用
物品最大耐久 ToolMaterial.STONE.getMaxUses() = 131 ToolMaterial.IRON.getMaxUses() = 250 配置文件 diamond_wand_durability,默认 10000 未设置(setMaxDamage 从未调用,保持 0)
每次放置消耗耐久 1 1 1 0(永不消耗)
满耐久时单次上限 5 9 1561 4096
破旧时单次上限 随耐久线性下降 随耐久线性下降 随耐久线性下降 1 << damage 指数变化
耗尽行为 stackSize = 0(消失) stackSize = 0(消失) stackSize = 0(消失) 不会消失
锁定模式数量 1 种 2 种 7 种 7 种
流体模式数量 1 种 1 种 2 种 2 种

关键结论:Diamond Wand 的 1561 才是它的实际天花板

Diamond Wand 配置文件里给的是 10000 耐久,但 blocklimit 被硬编码为 Item.ToolMaterial.EMERALD.getMaxUses() = 1561。因此:

  • 耐久 0 ~ 8444 时:单次受物品数量限制,最多 1561 个方块
  • 耐久 8445 ~ 9999 时:单次上限才开始由剩余耐久决定
  • 把 diamond_wand_durability 调到 1561 以下才会真正限制单次放置量

Stone / Iron Wand 的 blocklimit(5 / 9)远小于其耐久(131 / 250), 所以升级到满耐久对单次放置量毫无帮助 —— 上限永远是 5 和 9。

Unbreakable Wand 的 7 个 meta 等级

UnbreakingWand.getMaxBlocks 直接读 getItemDamage(),而 Unbreakable Wand 的 meta 就是 durability 字段(new ItemStack(itemUnbreakableWand, 1, damage))。 所以每个 meta 等级同时决定了它的方块上限:

Meta 方块上限(1 << meta 或特判) 获得方式
0 4096(damage <= 0 特判) 创造模式 / 默认形态
4 16 ExtraUtilities builderswand + 木棒(Z 字形)
5 32 2 × meta 4(无序)
6 64 2 × meta 5(无序)
12 4096 ExtraUtilities creativebuilderswand + 木棒,或下界之星 + 木棒
13 8192 2 × meta 12(无序)
14 16384 2 × meta 13(无序)

⚠️ 常见误解:ExtraUtilities 合成链的 meta 4/5/6 方块上限只有 16/32/64, 远低于默认的 meta 0(4096)。ExtraUtilities 链不是"更强的魔杖", 而是一套形态更丰富的选择,真正的强度跃升在 meta 12 → 13 → 14。 meta 4/5/6 只有在安装了 ExtraUtilities 时才会通过 addSubMeta() 注册进创造模式物品栏。

锁定模式自由度对比

每种魔杖支持的模式数量由物品类决定,与等级无关:

物品类 使用的魔杖 nextMode 循环 支持模式数
ItemRestrictedWandBasic Stone Wand 恒定 HORIZONTAL 1
ItemRestrictedWandAdvanced Iron Wand HORIZONTAL ⇄ VERTICAL 2
ItemUnrestrictedWand Diamond Wand 7 种全部轮转 7
ItemUnrestrictedWand Unbreakable Wand 7 种全部轮转 7

循环顺序(ItemUnrestrictedWand.nextMode,从默认值 NOLOCK 起算):

NOLOCK → HORIZONTAL → VERTICAL → NORTHSOUTH → EASTWEST
       → VERTICALNORTHSOUTH → VERTICALEASTWEST → NOLOCK
切换次数 0 1 2 3 4 5 6 7+
Diamond / Unbreakable NOLOCK HORIZONTAL VERTICAL NORTHSOUTH EASTWEST VERTICALNORTHSOUTH VERTICALEASTWEST NOLOCK
Iron HORIZONTAL VERTICAL HORIZONTAL VERTICAL …
Stone HORIZONTAL HORIZONTAL HORIZONTAL —

流体模式切换则由物品类决定:ItemUnrestrictedWand 在 STOPAT ⇄ IGNORE 间轮转, ItemRestrictedWandBasic / ItemRestrictedWandAdvanced 的 nextFluidMode() 直接写死 STOPAT,按多少次都回不到 IGNORE。

面锁定(Face Lock)—— 第二根独立的轴

每根魔杖除方向锁定 getMode() 外,还有一根独立的 getFaceLock(), 决定"能不能在点中的那个面上放"。源码中它没有独立枚举,复用 EnumLock:

物品类 getFaceLock() 返回值 效果
ItemRestrictedWandBasic 恒定 HORIZONTAL Stone Wand 只能水平铺面,点顶面/底面时一个方块都不会放
ItemRestrictedWandAdvanced 恒定 NOLOCK Iron Wand 不受面限制
ItemUnrestrictedWand 当前模式是 HORIZONTAL 时返回 HORIZONTAL,否则 NOLOCK Diamond / Unbreakable 在 HORIZONTAL 模式下也不能点顶面铺层

Stone Wand 的 HORIZONTAL 模式 + HORIZONTAL 面锁定,是它只能盖平面的根本原因 —— 详见 BFS 方块扩展算法 的种子判定一节。

相关条目

浏览全部模组