Diamond Wand
BetterBuildersWands 的高级魔杖,具有较高耐久和全部锁定模式。
基本信息
| 属性 | 值 |
|---|---|
| 物品 ID | betterbuilderswands:wandDiamond |
| 物品类 | ItemUnrestrictedWand |
IWand 实现 |
RestrictedWand(EMERALD.getMaxUses()) = RestrictedWand(1561) |
| 最大耐久 | 配置文件 diamond_wand_durability,默认 10000 |
| 配方 | gemDiamond + stickWood(对角线形) |
| 默认锁定模式 | NOLOCK |
面锁定 getFaceLock() |
模式为 HORIZONTAL 时为 HORIZONTAL,否则 NOLOCK |
| 默认流体锁定模式 | STOPAT |
| 单次方块上限 | 1561 |
行为
Diamond Wand 每次放置方块消耗 1 点耐久。最大可放置方块数量为:
Math.min(itemStack.getMaxDamage() - itemStack.getItemDamage(), 1561)
⚠️ 类名有误导性:Diamond Wand 用的物品类是
ItemUnrestrictedWand, 但内部装的是RestrictedWand(会掉耐久)。“Unrestricted” 指的是锁定模式 不受限,不是耐久无限。真正无限耐久的是 Unbreakable Wand。
1561 才是真正的天花板
配置项 diamond_wand_durability 给的是物品最大耐久(默认 10000),
但 blocklimit 被硬编码为 Item.ToolMaterial.EMERALD.getMaxUses() = 1561:
| 当前耐久 | 单次上限由谁决定 |
|---|---|
| 0 ~ 8439 | 物品数量(countItems),魔杖本身不构成瓶颈 |
| 8440 ~ 9999 | 剩余耐久,才开始低于 1561 |
也就是说,把 diamond_wand_durability 调到 1561 以上不会提高单次放置量。
想让上限超过 1561,只能靠 Botania 花盆、AE2 网络等材料来源把
countItems 顶上去 —— 而 countItems 无论多大都会被 min 压到 1561。
锁定模式
Diamond Wand 支持全部 7 种锁定模式,可循环切换:
| 切换次数 | 锁定模式 | 说明 |
|---|---|---|
| 0(默认) | NOLOCK |
无限制,全方向扩展 |
| 1 | HORIZONTAL |
水平面扩展 |
| 2 | VERTICAL |
垂直方向扩展 |
| 3 | NORTHSOUTH |
南北方向扩展 |
| 4 | EASTWEST |
东西方向扩展 |
| 5 | VERTICALNORTHSOUTH |
垂直+南北 |
| 6 | VERTICALEASTWEST |
垂直+东西 |
| 7+ | NOLOCK |
回到无限制 |
面锁定:随模式联动
ItemUnrestrictedWand.getFaceLock() 有条件返回:
public EnumLock getFaceLock(ItemStack itemStack) {
if (getMode(itemStack) == EnumLock.HORIZONTAL) return EnumLock.HORIZONTAL;
return EnumLock.NOLOCK;
}
| 当前模式 | 面锁定 | 点顶面/底面时 |
|---|---|---|
HORIZONTAL |
HORIZONTAL |
❌ 种子被拒,一个都不放 |
| 其它 6 种 | NOLOCK |
✅ 正常放置 |
所以切到 HORIZONTAL 模式时就变成了"只能点侧面",
与 Stone Wand 的行为一致(但只有这一次切换周期);切走即恢复。
流体锁定
| 模式 | 说明 | 可达 |
|---|---|---|
STOPAT |
遇到流体时停止放置 | ✅ 默认 |
IGNORE |
穿过流体放置(含源块与流动块) | ✅ 可切换 |
ItemUnrestrictedWand.nextFluidMode() 在两者间正常轮转。
配置
Diamond Wand 耐久可通过配置文件调整:
diamond_wand_durability=10000
可通过配置文件禁用配方:enable_diamond_wand=false
配方
[ ] [ ] [D]
[ ] [S] [ ]
[S] [ ] [ ]
D= 钻石(gemDiamond)S= 木棒(stickWood)
源码为 new ShapedOreRecipe(itemDiamondWand, " H", " S ", "S ", 'S', "stickWood", 'H', "gemDiamond")。
耐久消耗
| 触发 | 消耗 |
|---|---|
| 成功放置 1 个方块 | 1 |
| 左键破坏方块 | 2 |
| 攻击实体 | 2 |
| 切换模式 / 流体模式 | 0 |
耗尽时 stackSize = 0,物品直接消失(不会破碎掉落)。
相关条目
- 魔杖等级系统 - 四根魔杖的完整对比
- BFS 方块扩展算法 - 种子判定与九道过滤
- Unbreakable Wand - 真正无限耐久的版本
- EnumLock - 7 种模式的掩码定义
- 魔杖物品通用行为 - 通用属性与 NBT 结构