Chisel
雕刻工具,用于在可雕刻方块上循环切换纹理变体。
基本属性
| 属性 | 值 |
|---|---|
| 父类 | Item(implements IChiselItem,ItemChisel.java:28) |
| 3D 渲染 | isFull3D() = true(ItemChisel.java:121-123) |
| 最大堆叠 | 1(ItemChisel.java:53) |
| 可损坏 | setMaxDamage(Configurations.allowChiselDamage ? type.maxDamage : 0)(ItemChisel.java:54) |
雕刻模式
ItemChisel.ChiselType 枚举(ItemChisel.java:30-44)定义 4 种材质,
每种绑定独立的耐久与攻击力:
| ChiselType | 默认最大耐久 | 注册名 | 本地化名 |
|---|---|---|---|
IRON |
500 | chisel:chisel |
chisel.chisel_iron |
DIAMOND |
5000 | chisel:diamondChisel |
chisel.chisel_diamond |
OBSIDIAN |
2500 | chisel:obsidianChisel |
chisel.chisel_obsidian |
NETHERSTAR |
32767 | chisel:netherStarChisel |
chisel.chisel_netherstar |
耐久默认值来自 Configurations.java:182-209;攻击力由
getAttributeModifiers 挂载名为 "Chisel Damage" 的攻击伤害修正器
(ItemChisel.java:127-133)。
功能接口
实现 IChiselItem 接口:
| 方法 | 行为 | 证据 |
|---|---|---|
canOpenGui |
始终返回 true |
ItemChisel.java:142-144 |
canChisel |
始终返回 true |
:147-149 |
onChisel |
返回 Configurations.allowChiselDamage |
:152-154 |
canChiselBlock |
仅 DIAMOND / OBSIDIAN / NETHERSTAR,或铁雕 + ironChiselCanLeftClick |
:157-161 |
hasModes |
仅 DIAMOND / OBSIDIAN / NETHERSTAR,或铁雕 + ironChiselHasModes |
:164-168 |
配置默认值:allowChiselDamage = true、ironChiselCanLeftClick = true、
ironChiselHasModes = false(Configurations.java:175-221)。
即默认状态下铁雕能左键雕刻,但没有模式切换。
使用方式
- 右键手持雕刻工具 - 打开 Chisel GUI 选择变体
(
ItemChisel.onItemRightClick→ChiselController.INSTANCE.openQueue,ItemChisel.java:171-176) - 左键点击可雕刻方块 - 在该方块所属变体组内循环切换纹理变体
已订正(左右键写反):原文第 2 条写"对可雕刻方块右键 - 循环切换到下一个纹理变体"。 错误:变体循环发生在左键。 事件判定是
if (event.action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK)(ChiselController.java:81)。右键只会打开 GUI,不会切换方块变体。 证据:ChiselController.java:81、:125-136(idx循环推进逻辑)。另:左键雕刻有两条限制,原文未提 ——
canChiselBlock为假时完全无法左键雕刻(ChiselController.java:113)- 带 TileEntity 的方块不能被雕刻,代码直接 return (
ChiselController.java:97-99,注释// Don't support chiseling tile entities) ——这意味着 信标 与 礼物盒 虽在变体组内,实际无法用左键改写。按住潜行(
isSneaking())时循环方向反向(ChiselController.java:82、:130)。
耐久消耗
onChisel返回 true 时,在ChiselMode.chiselAll中执行player.getCurrentEquippedItem().damageItem(1, player)(ChiselMode.java:117-126)- 耐久耗尽后物品被移除(
player.setCurrentItemOrArmor(0, null),:123) - 由
Configurations.allowChiselDamage控制(默认 true);关闭时setMaxDamage(0)且isDamageable()返回 false(ItemChisel.java:54、:73-76)
另有两条独立耗损:GUI 中选取变体会耗 1 点耐久 (
SlotChiselSelection.java:67);用雕刻工具攻击实体也耗 1 点 (ItemChisel.hitEntity,:136-139)。原文只提了onChisel一条。
修复材料
getIsRepairable(ItemChisel.java:78-95)——原文完全遗漏:
| 类型 | 修复材料 |
|---|---|
| DIAMOND | Items.diamond |
| IRON | Items.iron_ingot |
| OBSIDIAN | Blocks.obsidian 的物品 |
| NETHERSTAR | Items.nether_star |
工具变体
原文"工具变体"表中的 4 个名字实为注册名,正确
(Features.java:630-633)。原文称"4 种材质"亦正确。