Heraldic Crest

基本信息

属性 值
注册名 battlegear2:heraldric
类 mods.battlegear2.items.HeraldryCrest
继承 net.minecraft.item.ItemMap
接口 IHeraldryItem
注册方式 BattlegearConfig 反射循环(BattlegearConfig.java:293-306)
配置键 itemNames[0] = "heraldric"(BattlegearConfig.java:60-61)
堆叠上限 1(HeraldryCrest.java:26)
贴图 battlegear2:bg-icon(BattlegearConfig.java:195)

功能

纹章编辑器入口物品。右键打开本模组的纹章设计 GUI,用于绘制旗帜、盔甲等纹章图案。

核心特性:

  • 打开编辑器:右键调用 player.openGui(Battlegear.INSTANCE, BattlegearGUIHandeler.flagEditor, world, 0, 0, 0)(HeraldryCrest.java:40-43)
  • 纹章数据存储:通过 IHeraldryItem 的 getHeraldry / setHeraldry 读写 NBT 的 byte[](HeraldryCrest.java:71-97)
  • 无纹章时返回默认:getHeraldry 在缺少 NBT 或键时返回 HeraldryData.getDefault()(HeraldryCrest.java:72-80)
  • 自我容器物品:getContainerItem 返回自身,且 doesContainerItemLeaveCraftingGrid 返回 false —— 不会在合成后被消耗(HeraldryCrest.java:50-58, 99-102)
  • 分享标签:getShareTag 返回 true(HeraldryCrest.java:45-48)

作为 ItemMap 的空实现

HeraldryCrest 继承 ItemMap 但完全覆写了地图相关方法使其失效,仅借用其物品类别:

方法 返回 来源
getBaseIcon null HeraldryCrest.java:30-32
getTrimIcon null HeraldryCrest.java:35-37
getPostRenderIcon null HeraldryCrest.java:61-63
getMapData null HeraldryCrest.java:114-116
updateMapData 空实现 HeraldryCrest.java:118
onUpdate 空实现 HeraldryCrest.java:120-121
func_150911_c(地图数据包) null HeraldryCrest.java:123-126
onCreated 空实现 HeraldryCrest.java:128-129
addInformation 空实现(不显示任何提示) HeraldryCrest.java:131-134

渲染方面,useDefaultRenderer 返回 false(HeraldryCrest.java:104-107),shouldDoPass 排除 SecondaryColourTrim 渲染阶段(HeraldryCrest.java:109-112)。其专用渲染器 HeraldryCrestItemRenderer 仅在 Battlegear.debug 为 true 时注册(ClientProxy.java:110-118),而 Battlegear.debug 在全仓库中从未被赋值为 true —— 见 渲染配置。

数值

数值 值 来源
堆叠上限 1 HeraldryCrest.java:26
物品提示行数 0(addInformation 为空) HeraldryCrest.java:131-134

纹章图案的字节编码、图案库与调色板规则位于 mods.battlegear2.api.heraldry.*(Crest、HeraldryData、HeraldryPattern、PatternStore 等),其位级编码规则无法从本条目穷尽核实。

交互

触发 行为
右键 打开纹章编辑器 GUI(GUI id flagEditor)(HeraldryCrest.java:40-43)
放入合成栏 不消耗(doesContainerItemLeaveCraftingGrid 为 false,HeraldryCrest.java:99-102)

合成配方

纹章编辑器物品没有合成配方。registerRecipes 中不存在针对 itemNames[0](heraldric)的配方分支 —— 禁用配方的可选值列表也是从 itemNames 的索引 1 开始枚举的,明确跳过索引 0(BattlegearConfig.java:244-245)。

相关条目

  • Knight’s Armour - 盔甲同样实现 IHeraldyArmour,可承载纹章
  • Flag Pole - 纹章图案的另一种载体(TileEntity 存旗帜)