TileEntitySlimelingEgg(细流蛋)

事实基准:/Users/evlos/a/mirror/Galacticraft(master,minecraftVersion = 1.7.10)逐行读源码。

注册信息

属性 值 来源
TileEntity 注册名 Slimeling Egg MarsModule.java:242
注册类 micdoodle8.mods.galacticraft.planets.mars.tile.TileEntitySlimelingEgg 同上
关联方块 MarsBlocks.rock = new BlockSlimelingEgg().setHardness(0.75F).setBlockName("slimelingEgg") planets/mars/blocks/MarsBlocks.java:33
方块→TE 分派 createNewTileEntity 无条件返回本 TE planets/mars/blocks/BlockSlimelingEgg.java:171-174
父类 原版 net.minecraft.tileentity.TileEntity planets/mars/tile/TileEntitySlimelingEgg.java:9
实现接口 无 同上
所属 modid GalacticraftMars core/Constants.java:8
槽位数 无(不实现 IInventory) 类声明 planets/mars/tile/TileEntitySlimelingEgg.java:9

⚠ 方块变量名叫 rock,但它是蛋——MarsBlocks.rock(planets/mars/blocks/MarsBlocks.java:33) 指向 BlockSlimelingEgg,这是源码的命名遗留,不要据此把它写成「火星岩石」。

槽位与字段

本类没有任何 ItemStack[] 字段,getSizeInventory() 不存在。

字段 类型 / 初值 含义 源码
timeToHatch int = -1 剩余孵化 tick;-1 表示「未开始」 planets/mars/tile/TileEntitySlimelingEgg.java:11
lastTouchedPlayerUUID String = "" 最后一次右键的玩家 UUID planets/mars/tile/TileEntitySlimelingEgg.java:12
lastTouchedPlayerName String = "" 同上,名字(用于显示) planets/mars/tile/TileEntitySlimelingEgg.java:13

NBT 键:TimeToHatch(:70、:78)、OwnerUUID(:79)、 OwnerUsername(:72、:80)。OwnerUUID 的写入经 VersionUtil.readSlimelingEggFromNBT(this, nbt)(:71)——读走的不是我类里的 getString("OwnerUUID"),版本兼容处理在 VersionUtil 内。

能量

无。 父类是原版 TileEntity(planets/mars/tile/TileEntitySlimelingEgg.java:9), 不继承 EnergyStorageTile,没有 gJ 容量、不耗电。

tick / 特殊机制

updateEntity()(planets/mars/tile/TileEntitySlimelingEgg.java:15-65)是本类全部逻辑:

阶段 条件 行为 源码
倒计时 timeToHatch > 0 每 tick timeToHatch-- planets/mars/tile/TileEntitySlimelingEgg.java:20-21
孵化 timeToHatch == 0 且 lastTouchedPlayerUUID 非 null 且长度 > 0 生成 EntitySlimeling 并把自身清成空气 planets/mars/tile/TileEntitySlimelingEgg.java:22-63
其它 其余情况 什么都不做(timeToHatch 停在 -1) —

⚠ timeToHatch == -1(初值)不会孵化——倒计时只由方块侧右键启动:

planets/mars/blocks/BlockSlimelingEgg.java:79-84:

((TileEntitySlimelingEgg) tile).timeToHatch = world.rand.nextInt(50) + 20;

即右键后随机 20–69 tick 孵化(nextInt(50) 返回 0–49,加 20 → 20–69; 源码写的是 + 20,不是 + 20 之后再加 1)。

颜色由 metadata 决定

planets/mars/tile/TileEntitySlimelingEgg.java:24-41,metadata % 3 映射到 RGB:

metadata % 3 颜色 源码
0 红 (1.0, 0.0, 0.0) planets/mars/tile/TileEntitySlimelingEgg.java:31-33
1 蓝 (0.0, 0.0, 1.0) planets/mars/tile/TileEntitySlimelingEgg.java:34-36
2 黄 (1.0, 1.0, 0.0) planets/mars/tile/TileEntitySlimelingEgg.java:37-40

孵化后

planets/mars/tile/TileEntitySlimelingEgg.java:43-62: EntitySlimeling 生成在蛋正上方 y + 1.0、水平居中(x + 0.5 / z + 0.5), 经 VersionUtil.setSlimelingOwner 绑主、setOwnerUsername 记名、 setTamed(true)、setHealth(20.0F),最后 setBlockToAir 移除蛋方块。

GUI / Container

无。 没有 GuiHandler 分派,蛋也不可合成(createNewTileEntity 是唯一入口)。

相关条目