Keep large and lingering particles out of the slot builder

Explosion, sonic boom, sweep attack, gusts, campfire and large smoke,
dust pillar, block marker and shriek are a block or more in size or rise
for seconds and wall players in once a design spawns many of them. They
stay available to presets only.
This commit is contained in:
2026-10-26 10:10:21 +01:00
parent aef26b5e9f
commit db915f7be7
@@ -25,7 +25,9 @@ import org.bukkit.Material;
import org.bukkit.Particle;
// Left out: ELDER_GUARDIAN, FLASH and the explosion/gust emitters cover other players' screens,
// BUBBLE, BUBBLE_COLUMN_UP and CURRENT_DOWN only show under water, VIBRATION needs a block or entity to fly to
// BUBBLE, BUBBLE_COLUMN_UP and CURRENT_DOWN only show under water, VIBRATION needs a block or entity to fly to.
// Not buildable: particles a block or more in size or rising for seconds, which wall in players once a design
// spawns many of them (a wing spawns over a hundred); presets may still use them.
@AllArgsConstructor
@Getter
public enum ParticleType {
@@ -36,8 +38,8 @@ public enum ParticleType {
TINTED_LEAVES(Material.OAK_LEAVES, Particle.TINTED_LEAVES, Data.COLOR, true),
BLOCK(Material.STONE, Particle.BLOCK, Data.BLOCK, true),
BLOCK_CRUMBLE(Material.CRACKED_STONE_BRICKS, Particle.BLOCK_CRUMBLE, Data.BLOCK, true),
BLOCK_MARKER(Material.GLASS, Particle.BLOCK_MARKER, Data.BLOCK, true),
DUST_PILLAR(Material.MUD, Particle.DUST_PILLAR, Data.BLOCK, true),
BLOCK_MARKER(Material.GLASS, Particle.BLOCK_MARKER, Data.BLOCK, false),
DUST_PILLAR(Material.MUD, Particle.DUST_PILLAR, Data.BLOCK, false),
FALLING_DUST(Material.SAND, Particle.FALLING_DUST, Data.BLOCK, true),
ITEM(Material.ITEM_FRAME, Particle.ITEM, Data.ITEM, true),
TRAIL(Material.LEAD, Particle.TRAIL, Data.TRAIL, true),
@@ -48,21 +50,21 @@ public enum ParticleType {
SOUL(Material.ZOMBIE_HEAD, Particle.SOUL, Data.NONE, true),
LAVA(Material.MAGMA_CREAM, Particle.LAVA, Data.NONE, true),
SMOKE(Material.COBWEB, Particle.SMOKE, Data.NONE, true),
LARGE_SMOKE(Material.GRAY_WOOL, Particle.LARGE_SMOKE, Data.NONE, true),
LARGE_SMOKE(Material.GRAY_WOOL, Particle.LARGE_SMOKE, Data.NONE, false),
WHITE_SMOKE(Material.LIGHT_GRAY_DYE, Particle.WHITE_SMOKE, Data.NONE, true),
CAMPFIRE_COSY_SMOKE(Material.CAMPFIRE, Particle.CAMPFIRE_COSY_SMOKE, Data.NONE, true),
CAMPFIRE_SIGNAL_SMOKE(Material.HAY_BLOCK, Particle.CAMPFIRE_SIGNAL_SMOKE, Data.NONE, true),
CAMPFIRE_COSY_SMOKE(Material.CAMPFIRE, Particle.CAMPFIRE_COSY_SMOKE, Data.NONE, false),
CAMPFIRE_SIGNAL_SMOKE(Material.HAY_BLOCK, Particle.CAMPFIRE_SIGNAL_SMOKE, Data.NONE, false),
ASH(Material.BASALT, Particle.ASH, Data.NONE, true),
WHITE_ASH(Material.BONE_MEAL, Particle.WHITE_ASH, Data.NONE, true),
POOF(Material.WHITE_DYE, Particle.POOF, Data.NONE, true),
CLOUD(Material.WHITE_WOOL, Particle.CLOUD, Data.NONE, true),
SNEEZE(Material.SLIME_BLOCK, Particle.SNEEZE, Data.NONE, true),
SPIT(Material.LLAMA_SPAWN_EGG, Particle.SPIT, Data.NONE, true),
EXPLOSION(Material.TNT, Particle.EXPLOSION, Data.NONE, true),
SONIC_BOOM(Material.ECHO_SHARD, Particle.SONIC_BOOM, Data.NONE, true),
SWEEP_ATTACK(Material.IRON_SWORD, Particle.SWEEP_ATTACK, Data.NONE, true),
GUST(Material.WIND_CHARGE, Particle.GUST, Data.NONE, true),
SMALL_GUST(Material.BREEZE_ROD, Particle.SMALL_GUST, Data.NONE, true),
EXPLOSION(Material.TNT, Particle.EXPLOSION, Data.NONE, false),
SONIC_BOOM(Material.ECHO_SHARD, Particle.SONIC_BOOM, Data.NONE, false),
SWEEP_ATTACK(Material.IRON_SWORD, Particle.SWEEP_ATTACK, Data.NONE, false),
GUST(Material.WIND_CHARGE, Particle.GUST, Data.NONE, false),
SMALL_GUST(Material.BREEZE_ROD, Particle.SMALL_GUST, Data.NONE, false),
DRIPPING_WATER(Material.WATER_BUCKET, Particle.DRIPPING_WATER, Data.NONE, true),
FALLING_WATER(Material.LIGHT_BLUE_DYE, Particle.FALLING_WATER, Data.NONE, true),
@@ -132,7 +134,7 @@ public enum ParticleType {
SCULK_SOUL(Material.SCULK_CATALYST, Particle.SCULK_SOUL, Data.NONE, true),
SCULK_CHARGE(Material.SCULK_SENSOR, Particle.SCULK_CHARGE, Data.ZERO_FLOAT, true),
SCULK_CHARGE_POP(Material.SCULK_VEIN, Particle.SCULK_CHARGE_POP, Data.NONE, true),
SHRIEK(Material.SCULK_SHRIEKER, Particle.SHRIEK, Data.ZERO_INT, true),
SHRIEK(Material.SCULK_SHRIEKER, Particle.SHRIEK, Data.ZERO_INT, false),
RAID_OMEN(Material.FIREWORK_STAR, Particle.RAID_OMEN, Data.NONE, true),
TRIAL_OMEN(Material.TRIAL_KEY, Particle.TRIAL_OMEN, Data.NONE, true),
OMINOUS_SPAWNING(Material.OMINOUS_TRIAL_KEY, Particle.OMINOUS_SPAWNING, Data.NONE, true),