NMS Worldv1.0.0已發布

NMS 進階粒子效果

NMS Particle Effect

透過 ClientboundLevelParticlesPacket 實現進階 NMS 粒子效果:客戶端專屬、大量粒子、自定義參數(Paper NMS + Mojang mappings)。

nmsparticleeffectlevelparticlesvisualmojang-mapped
更新:2026年4月30日GitHub

NMS Particle Effect

目的

透過 ClientboundLevelParticlesPacket 直接發送 NMS 粒子封包,實現 Bukkit World.spawnParticle() 無法達到的效果:客戶端專屬粒子、超大量粒子、精確速度/偏移控制。


平台需求

  • Paper 1.21 – 1.21.3
  • Paperweight userdev 1.7.2+
  • Mojang mappings(Paper 1.20.5+ 原生支援)
  • Java 21

產生的代碼

ParticleEffect.java

// 發送客戶端專屬粒子
ParticleEffect.send(player, ParticleTypes.FLAME, loc, 10, 0.1, 0.3, 0.1, 0.05f, false);

// Builder 模式廣播
new ParticleBuilder()
    .particle(ParticleTypes.ENCHANT)
    .at(center).count(50).receivers(world.getPlayers())
    .spawn();

ParticleShapes.java(預設形狀)

ParticleShapes.circle(player, center, 2.0, 36, ParticleTypes.ENCHANT);
ParticleShapes.helix(player, base, 0.5, 3.0, 3, 16, ParticleTypes.SOUL);

執行緒安全

  • ParticleEffect.send() 可在任意執行緒呼叫
  • Location 若依賴世界狀態,封包建構須在主執行緒完成