Guardian Spawn Egg

基本信息

属性 值
显示名键 eggdisplay.VillageNames.guardian.name = Guardian(en_US.lang:118)
老年变体键 eggdisplay.VillageNames.guardian.elder.name = Elder Guardian(en_US.lang:119)
类 astrotibs.villagenames.spawnegg.ItemSpawnEggVN
注册条件 仅当 GeneralConfig.addOceanMonuments == true 时创建并注册
注册处 VillageNames.java:181-184
创造标签 CreativeTabs.tabMisc
未本地化名 monsterPlacer(ItemSpawnEggVN.java:42)

功能

本 mod 的刷怪蛋是自定义实现的,代码注释标明改编自 Better Spawn Eggs(ItemSpawnEggVN.java:32-34,引用 github.com/DavidGoldman/BetterSpawnEggs)。它不是原版 ItemMonsterEgg,而是自己实现了刷怪逻辑(类内 import 了 MovingObjectPosition、Facing、EntityList 等原版刷怪蛋依赖)。

注册细节

spawnEgg = new ItemSpawnEggVN();
GameRegistry.registerItem(spawnEgg, spawnEgg.getUnlocalizedName());
BlockDispenser.dispenseBehaviorRegistry.putObject(spawnEgg, new DispenserBehavior());

(VillageNames.java:181-183)

  • 注册名取自 getUnlocalizedName(),即 monsterPlacer
  • 同时注册了一个投掷器行为,使刷怪蛋可被投掷器发射
  • setHasSubtypes(true)(ItemSpawnEggVN.java:41),支持按 meta 区分普通/老年守卫者

双变体

刷怪蛋通过 meta 区分两个变体(由 en_US.lang:118-119 的两条键可见):

变体 显示名
普通 Guardian
老年 Elder Guardian

⚠️ 关于 meta 具体取值:已检查 ItemSpawnEggVN.java 与 EntityGuardian.java 的 dataWatcher 定义,老年状态由 setSyncedFlag(4, elder) 控制(prismarine/guardian/entity/monster/EntityGuardian.java:173),而刷怪蛋在生成后如何设置该标志的具体 meta 常量映射无法从源码直接核实。源码注释 VillageNames.java:78 给出的调试用指令为 summon Guardian ~ ~ ~ {Elder:1}。

相关条目

  • Guardian - 本刷怪蛋对应的实体,详见其老年变体数值
  • Ocean Monument - 触发本刷怪蛋注册的世界生成特性