跳到正文
烈焰甘蔗Wiki

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()

相关条目:提示渲染系统。

浏览全部模组