TileEntityDungeonSpawnerMars(火星地下城 Boss 刷怪笼)
事实基准:
/Users/evlos/a/mirror/Galacticraft(master,minecraftVersion = 1.7.10)逐行读源码。
注册信息
| 属性 | 值 | 来源 |
|---|---|---|
| TileEntity 注册名 | Mars Dungeon Spawner |
planets/mars/MarsModule.java:249 |
| 所属 modid | GalacticraftMars |
core/Constants.java:8,@Mod 见 planets/GalacticraftPlanets.java:37-38 |
| 注册方法入口 | MarsModule.registerTileEntities(),由 MarsModule.java:153 调用 |
planets/mars/MarsModule.java:241-252 |
| 关联方块 | micdoodle8.mods.galacticraft.planets.mars.blocks.BlockBasicMars |
planets/mars/blocks/BlockBasicMars.java:138-141 |
| 触发条件 | 方块 metadata 等于 10 才创建本 TE | planets/mars/blocks/BlockBasicMars.java:138-142 |
| 父类 | TileEntityDungeonSpawner |
planets/mars/tile/TileEntityDungeonSpawnerMars.java:16 |
| 实现接口 | 无(类声明 :16 不带 implements) |
planets/mars/tile/TileEntityDungeonSpawnerMars.java:16 |
| 槽位数 | 无(父类不实现 IInventory,源码中不存在 getSizeInventory()) |
planets/mars/tile/TileEntityDungeonSpawnerMars.java:1-35 |
⚠ 注册不在 GalacticraftCore.java 里——火星模块的 TE 全部在
planets/mars/MarsModule.java:241-252 注册,GalacticraftCore.java:702-743 只有 8 条
本清单类中的注册。
@Mod 注解在 GalacticraftPlanets 上(planets/GalacticraftPlanets.java:37-38),
modid 取自常量 Constants.MOD_ID_PLANETS = "GalacticraftMars"(core/Constants.java:8)——
不是从目录名 planets/mars 推断的。
本类只做了 3 件事
planets/mars/tile/TileEntityDungeonSpawnerMars.java 全文 35 行,
除构造器外只有 2 个方法覆写:
| 覆写 | 父类位置 | 本类实现 | 本类位置 |
|---|---|---|---|
| 构造器 | core/tile/TileEntityDungeonSpawner.java:39-41 |
super(EntityCreeperBoss.class) |
planets/mars/tile/TileEntityDungeonSpawnerMars.java:18-20 |
getDisabledCreatures() |
core/tile/TileEntityDungeonSpawner.java:134-141 |
返回 3 种火星怪 | planets/mars/tile/TileEntityDungeonSpawnerMars.java:22-29 |
playSpawnSound(Entity) |
core/tile/TileEntityDungeonSpawner.java:132(空实现) |
播放 ambience.scaryscape |
planets/mars/tile/TileEntityDungeonSpawnerMars.java:31-34 |
Boss 是 EntityCreeperBoss(:19),与月球的 EntitySkeletonBoss 不同。
会被清除的生物
planets/mars/tile/TileEntityDungeonSpawnerMars.java:25-27 返回:
EntityEvolvedSkeleton、EntityEvolvedZombie、EntityEvolvedSpider。
⚠ 比月球版少一种——父类清单里的 EntityEvolvedCreeper
(core/tile/TileEntityDungeonSpawner.java:137)在本类被去掉了。
刷出音效
planets/mars/tile/TileEntityDungeonSpawnerMars.java:33:
this.worldObj.playSoundAtEntity(entity, GalacticraftCore.TEXTURE_PREFIX + "ambience.scaryscape", 9.0F, 1.4F);
音量 9.0F、音调 1.4F。月球版此处是空实现(core/tile/TileEntityDungeonSpawner.java:132),
即月球 Boss 出场无声。
放置方与世界生成
与月球版一样,玩家拿不到:世界生成器
planets/mars/world/gen/dungeon/RoomBossMars.java:111-118 在火星 Boss 房生成时
setTileEntity 并 setRoom。
tick / 网络 / GUI
updateEntity 未覆写,全部逻辑继承自父类
(core/tile/TileEntityDungeonSpawner.java:43-130,含 ±15 搜索、玩家进房才刷等)。
网络同样继承:isNetworkedTile() 返回 false
(core/tile/TileEntityDungeonSpawner.java:204-207)、封包范围 0(:194-197)、
冷却 0(:199-202)。无 GUI。