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 - 触发本刷怪蛋注册的世界生成特性