Weightless Particle FX(失重粒子特效)
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | 无(本类未通过 Forge 实体注册系统注册) |
| 实体类 | com.gtnewhorizon.structurelib.entity.fx.WeightlessParticleFX |
| 适用侧 | 仅客户端(@SideOnly(Side.CLIENT)) |
| 父类 | net.minecraft.client.particle.EntityFX |
本 mod 没有注册任何实体。EntityFX 本身是原版客户端粒子基类,不需要也不参与 EntityRegistry 注册。WeightlessParticleFX 只是在 ClientProxy 中被直接 new 出来并交给 Minecraft.getMinecraft().effectRenderer.addEffect(particle) 渲染,因此不存在可供 /give @s structurelib:weightlessParticle 使用的注册名。
功能
WeightlessParticleFX 是提示全息系统附带的装饰性粒子,为提示位置叠加一层缓慢飘浮的光点。它自身不携带"这是哪个结构位置"的语义,位置信息由独立的提示立方体渲染负责。
生成方式
生成点在 ClientProxy.hintParticleTinted:每当客户端收到一条提示(全息方块被投影出来)时,就在其坐标加一个 0–0.5 的随机偏移后创建粒子。
需要注意的是,生成粒子与服务端同步提示是两件事。服务端与客户端之间传递提示状态的是 UpdateHintParticleMessage(更新某个提示的 RGBA 染色)和 ErrorHintParticleMessage(把某个提示标记为错误态)这两条消息,它们只是修改已存在提示的着色,并不会创建粒子。粒子始终由客户端本地生成。
行为细节
全部行为在构造函数与 onUpdate 中实现:
- 随机飘动:运动分量在传入速度(
ClientProxy传入 0)上叠加±0.05 * random的小扰动 - 衰减:
particleMaxAge计算为(int)(16.0 / (random * 0.8 + 0.2)) + 2,随particleMaxAge变化,寿命约 18–82 tick - 视觉:构造函数先把 RGB 三通道统一设为
random * 0.3 + 0.7(浅灰白),随后ClientProxy再用setRBGColorF(0, 0.6F * random, 0.8f)覆盖为偏蓝绿的色调 - 缩放:
particleScale为random² * 6 + 1,范围 1–7 - 无重力:
noClip = true,粒子不受重力与碰撞影响 - 运动阻尼:每 tick 对三个轴的速度乘以 0.9,产生平滑减速
- 纹理动画:
setParticleTextureIndex(7 - particleAge * 8 / particleMaxAge),纹理索引随老化递减 - 生命周期结束:
onUpdate中particleAge++ >= particleMaxAge时调用setDead()
相关条目:提示渲染系统。