Mini Ghast(迷你幽灵)
事实基准:
/Users/evlos/a/mirror/twilightforest(minecraftVersion = 1.7.10)逐行读源码。
基本信息
| 属性 | 值 | 来源 |
|---|---|---|
| 注册实体名 | TwilightForest:Mini Ghast |
TwilightForestMod.java:628-633 |
| 英文显示名 | Carminite Ghastling(entity.TwilightForest.Mini Ghast.name) |
assets/twilightforest/lang/en_US.lang:601 |
| 实体 ID 常量 | idMobMiniGhast = 214 |
TwilightForestMod.java:1116 |
| 蛋色 | 主 0xbcbcbc / 副 0xa74343 |
TwilightForestMod.java:632-633 |
| 类 | twilightforest.entity.EntityTFMiniGhast(155 行) |
entity/EntityTFMiniGhast.java:14 |
| 父类 | twilightforest.entity.EntityTFTowerGhast → net.minecraft.entity.monster.EntityGhast |
entity/EntityTFTowerGhast.java:18 |
| 体型 | setSize(1.1F, 1.5F)(父类 4.0×6.0) |
EntityTFMiniGhast.java:20 |
| 所属结构 | 黑暗高塔(TFFeature ID 14),权重 10、1~4 只 |
TFFeature.java:175 |
注册名
Mini Ghast与游戏内显示名Carminite Ghastling不一致。 召唤用前者,界面上显示后者。兄弟类 Tower Ghast 同理 (entity.TwilightForest.Tower Ghast.name=Carminite Ghastguard,lang/en_US.lang:602)。中文显示名为迷你幽灵(lang/zh_CN.lang:601), 也就是说中英文显示名互相不对应。
数值
| 属性 | 值 | 来源 |
|---|---|---|
maxHealth(普通) |
10 | EntityTFMiniGhast.java:43 |
maxHealth(Boss 随从 isMinion) |
6 | 同上 |
父类 maxHealth |
30(已被本类覆写,不生效) | EntityTFTowerGhast.java:63 |
仇恨半径 aggroRange |
16.0F(父类 64.0F) | EntityTFMiniGhast.java:23 |
凝视半径 stareRange |
8.0F(父类 32.0F) | EntityTFMiniGhast.java:24 |
游荡幅度 wanderFactor |
4.0F(父类 16.0F) | EntityTFMiniGhast.java:26 |
| 单区块上限 | 16(父类 8) | EntityTFMiniGhast.java:33-35 |
| 声音音量 | 0.5F(父类,本类未覆写) | EntityTFTowerGhast.java:69-71 |
| 说话间隔 | 160 tick(父类,本类未覆写) | EntityTFTowerGhast.java:76-78 |
movementSpeed / attackDamage |
源码中未设置 —— 检索方式:EntityTFMiniGhast.java 全文无 movementSpeed / attackDamage,EntityTFTowerGhast.java 亦无,沿用 EntityGhast 链上的父类默认 |
— |
AI 行为 / 特殊机制
Boss 随从模式(EntityTFMiniGhast.java:123-128):makeBossMinion() 把
wanderFactor 压到 0.005F(几乎原地不动)、isMinion = true、并回满血。
NBT 键 isMinion 在 writeEntityToNBT / readEntityFromNBT 间持久化
(:141-153),读档时自动重放该模式。
随从不掉落:dropFewItems 被 if (!this.isMinion) 包住(:134-138)。
随从不受光照限制:isValidLightLevel() 在 isMinion 时恒 true(:95-98)。
攻击判定(shouldAttackPlayer,:71-89)三段式,与末影人同类逻辑:
① 玩家头戴南瓜 ⇒ 不打;② 距离 ≤ 3.5 且互相可见 ⇒ 打;
③ 否则算玩家视线向量与「幽灵→玩家眼睛」向量的点积,
大于 1.0 - 0.025 / 距离 才打。
火焰弹:使用父类 spitFireball()(EntityTFTowerGhast.java:289-311),
生成的是原版 EntityLargeFireball,不是暮色森林自有投射物;
从体心 + 视线方向 0.5 格处生成,播放音效 1007(蓄力)/ 1008(发射)。
每次发射后有 1/6 概率主动解除攻击(:308-310)。
塔内束缚(checkForTowerHome,EntityTFTowerGhast.java:421-448):
若不在黑暗高塔区域内则 detachHome() 并 entityAge += 5(快速老化直至死亡);
在塔内则把家设到塔中心 y + 128、半径 64。
「被陷阱困住」:setInTrap() 把 inTrapCounter 设为 10,
期间直接 return,不索敌不攻击(EntityTFTowerGhast.java:150-155、:470-472)。
老化:onLivingUpdate 在亮度 > 0.5 时 entityAge += 2(EntityTFTowerGhast.java:119-121),
并有 50% 概率生成一个 reddust 粒子(:123-132)。
死代码:
EntityTFMiniGhast.java:49-63与EntityTFTowerGhast.java:90-104两处按aggroStatus切换贴图的switch块整段被注释掉,是 1.6 时代遗留的this.texture = ...写法。EntityTFTowerGhast.java:52-55注释掉的getMaxHealth() { return 30; }覆写。EntityTFMiniGhast.java:21注释掉的towerghast.png贴图赋值。
相关条目
- Ur Ghast(尿素幽灵) - 父类
EntityTFTowerGhast的同族塔主,注册名Tower Boss - Dark Tower(黑暗高塔) - 迷你幽灵的生成区域
- Carminite(砷铅铁) - 与显示名
Carminite Ghastling同源的方块材料