跳到正文
烈焰甘蔗Wiki

Constructable Trigger(构造触发器)

基本信息

属性 值
注册名 structurelib:item.structurelib.constructableTrigger
物品类 com.gtnewhorizon.structurelib.item.ItemConstructableTrigger
显示名 Multiblock Structure Hologram Projector
未本地化名称 item.structurelib.constructableTrigger
最大堆叠 64(未显式设置,使用默认)
创意模式标签 StructureLib

注册调用为 GameRegistry.registerItem(itemConstructableTrigger = new ItemConstructableTrigger(), itemConstructableTrigger.getUnlocalizedName())。第二个参数传入的是 getUnlocalizedName() 的结果,而该结果已经带有 item. 前缀,因此注册名中会再次出现一次 item.,形成 structurelib:item.structurelib.constructableTrigger。这一重复前缀在 1.7.10 Forge 中确实存在,本仓库其他分类(AkashicTome 的物品白名单)也记录了这一实际 ID。

功能

Constructable Trigger(中文社区常称"全息投影器")是 StructureLib 构造性多方块系统的核心交互物品,物品类本身很薄,所有逻辑都委托给 ConstructableUtility 和 ChannelDataAccessor。

物品承担三项功能:

  1. 通道配置 GUI:服务端、对空气右键且不潜行时打开 GuiScreenConfigureChannels
  2. 注册表配置 GUI:客户端、潜行且对空气右键时打开 Forge 配置 GUI 的 registries 页
  3. 结构检查 / 提示 / 自动放置:对多方块控制器方块右键时进入 ConstructableUtility.handle()

使用方式

操作 条件 效果
对空气右键 服务端(!world.isRemote)且不潜行 player.openGui(..., 0, ...) 打开通道配置 GUI
对空气右键 客户端(world.isRemote)且潜行 StructureLib.instance().proxy().displayConfigGUI("registries") 打开注册表配置 GUI
对控制器方块右键 onItemUseFirst ConstructableUtility.handle(stack, player, world, x, y, z, side)

前两项的前提是 getMovingObjectPositionFromPlayer(world, player, true) == null,即准星必须指向空气;若指向方块则两项都不触发,只走第三条路径。

构造流程

ConstructableUtility.handle 包裹 startHinting/endHinting,在内部按目标方块实体类型依次尝试解析出 IConstructable:

  1. 方块实体实现 IConstructableProvider → 取 getConstructable()
  2. 方块实体直接实现 IConstructable → 直接使用
  3. 该方块实体类在 IMultiblockInfoContainer 中注册过 → 转换出 IConstructable

三者都不满足则不触发任何构造逻辑。潜行与否决定走检查提示还是生存自动放置:不潜行时服务端直接返回 true,由客户端生成全息提示;潜行时进入服务端限流与 survivalConstruct 流程。

悬浮提示

不持 Shift 时依次显示(desc.0 无颜色,desc.1–4 为蓝色):

  • Triggers Constructable Interface
  • Shows multiblock construction schematic,
  • use on the multiblock controller.
  • (Sneak use on controller to build)
  • Quantity of schematics in item stack affects tier/mode/type

若该物品存在子通道(NBT channels 复合标签非空),再追加一行 Hold [LSHIFT] to display channel data。

持 Left Shift 时改为显示子通道数量与明细:首行为 Contain %d sub channel.,随后每行一个 键: 值,由 ChannelDataAccessor 遍历得出。

相关条目:/sl_channel、多方块构造机制、通道系统。

浏览全部模组