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。

相关条目