Labeler(标签器)
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | StevesAddons:labeler |
| 物品类 | stevesaddons.items.ItemLabeler |
| 未本地化名称 | labeler |
| 纹理 | stevesaddons:labeler |
| 最大堆叠 | 1 |
| 耐久 | 无 |
| 创意模式标签 | StevesFactoryManager |
功能
Labeler(标签器)是一种为方块添加描述性文本标签的工具。标签本身存在物品的 NBT 里(Label 字符串 = 当前选中标签,saved 字符串列表 = 标签库),而标签的作用对象是方块坐标:左键命名后写入 NameRegistry,可通过 WAILA 读出。默认标签器预置了 6 条 SFM 流量组件名。
使用方式
| 使用方式 | 触发条件 | 使用效果 | 条件/限制 |
|---|---|---|---|
| 右键 | 任意(空手目标或方块) | 打开标签编辑界面 GuiLabeler |
仅客户端开 GUI(world.isRemote 才 openGui);服务端无 GUI |
| 左键 + 开始破坏方块 | onBlockStartBreak(左键按住破坏的瞬间触发,方块不会被破坏) |
把当前 Label 写入该坐标;Label 为空串时改为清除该坐标的标签 |
目标 TileEntity 须实现 IInventory / IFluidHandler / IEnergyProvider / IEnergyReceiver 之一,或继承自 TileEntityClusterElement |
| 编辑界面内回车 | GuiLabeler.keyTyped(keyCode 28) |
新增一条标签(去重)或提交当前选中项的编辑 | 空字符串不入列表;选中文本清空则删除该条目 |
| 关闭编辑界面 | onGuiClosed |
回写标签列表与 Label,并向服务端发 LabelSyncMessage |
— |
⚠️ 标签名不区分大小写排序(
ALPHABETICAL_ORDER),搜索为子串匹配、大小写不敏感(GuiLabeler.java:29-37,170-177)。 已安装 WAILA 时,被命名的方块会在 WAILA 标签中显示该名称(waila/WailaLabelProvider.java:44)。
预置标签
默认标签器预置了以下标签:
- Energy Receiver(能量接收器)
- Energy Provider(能量提供者)
- Input Inventory(输入物品栏)
- Input Tank(输入储罐)
- Output Inventory(输出物品栏)
- Output Tank(输出储罐)
标签存储在 NBT 中,可通过 ItemLabeler.setLabel(ItemStack, String) 程序化设置。
合成配方
p p p p = 纸
i i i = 黑色染料
r r r = 红石粉
x x = 活塞
已订正(审计)
- 注册名:原文
stevesaddons:Labeler→ 实为StevesAddons:labeler(reference/Names.java:6,registry/ItemRegistry.java:26)。 - 未本地化名称:原文
LABELER→ 实为labeler。ItemLabeler调用的是setUnlocalizedName(Names.LABELER),而Names.LABELER就是小写"labeler"(ItemLabeler.java:35),并非常量名LABELER本身。 - 最大堆叠:原文
64→ 实为1。ItemLabeler.java:37调用setMaxStackSize(1)。 - 右键效果:原文「装备标签器待用」有误。实际是打开
GuiLabeler标签编辑 GUI(ItemLabeler.java:41-46→GuiHandler.java:17)。 - 左键条件:原文「目标必须是
TileEntityClusterElement」过窄。实际判定isValidTile接受IInventory、IFluidHandler、IEnergyProvider、IEnergyReceiver任一实现或TileEntityClusterElement子类(ItemLabeler.java:70-76),且同判定在naming/EventHandler.java:69-84另有一次PlayerInteractEvent路径。 - 「Shift + 右键切换标签」:源码中不存在该行为,已删除。
ItemLabeler未覆写onItemUseFirst/onItemUse,切换/新建标签在GuiLabeler界面内完成(GuiLabeler.java:122-152,190-212)。 - 预置 6 条标签(
ItemRegistry.java:43-50)与合成配方经核对属实,未改动。