From e9c766dbbb92b2ff5f76305940543527463a09ef Mon Sep 17 00:00:00 2001 From: Jakob Schulz <55949993+Lordikak@users.noreply.github.com> Date: Tue, 19 May 2026 18:37:57 +0200 Subject: [PATCH] migrate to per material config --- .../src/de/steamwar/sql/GameModeConfig.java | 24 ++++++++----------- FightSystem/FightSystem_Core/src/config.yml | 11 +++++---- .../listener/BlockFormListener.java | 22 +++-------------- 3 files changed, 20 insertions(+), 37 deletions(-) diff --git a/CommonCore/SQL/src/de/steamwar/sql/GameModeConfig.java b/CommonCore/SQL/src/de/steamwar/sql/GameModeConfig.java index fdebfb6b..8a8a9a1f 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/GameModeConfig.java +++ b/CommonCore/SQL/src/de/steamwar/sql/GameModeConfig.java @@ -411,7 +411,7 @@ public final class GameModeConfig { } @ToString - public static final class ArenaConfig { + public static final class ArenaConfig { public final boolean loaded; @@ -461,18 +461,11 @@ public final class GameModeConfig { public final boolean DisableSnowMelt; /** - * Disable ice forming + * Disable the forming of certain blocks * - * @implSpec {@code false} by default + * @implSpec {@code empty} by default */ - public final boolean DisableIceForm; - - /** - * Disable block generators such as cobblestone, stone, obsidian and basalt - * - * @implSpec {@code false} by default - */ - public final boolean DisableBlockGenerators; + public final Set BlockedFormedBlocks; /** * Allow leaving the arena area as spectator @@ -495,7 +488,7 @@ public final class GameModeConfig { */ public final boolean NoFloor; - private ArenaConfig(YMLWrapper loader, SchematicConfig.SizeConfig Size, List EnterStages) { + private ArenaConfig(YMLWrapper loader, SchematicConfig.SizeConfig Size, List EnterStages) { loaded = loader.canLoad(); WaterDepth = loader.getInt("WaterDepth", 0); WaterDamage = loader.getBoolean("WaterDamage", true); @@ -504,8 +497,11 @@ public final class GameModeConfig { BorderFromSchematic = loader.getInt("BorderFromSchematic", 21); GroundWalkable = loader.getBoolean("GroundWalkable", true); DisableSnowMelt = loader.getBoolean("DisableSnowMelt", false); - DisableIceForm = loader.getBoolean("DisableIceForm", false); - DisableBlockGenerators = loader.getBoolean("DisableBlockGenerators", false); + Set blockedFormedBlocks = new HashSet<>(loader.getMaterialList("BlockedFormedBlocks")); + if (loader.getBoolean("DisableIceForm", false)) { + blockedFormedBlocks.add(loader.materialMapper.apply("ICE")); + } + BlockedFormedBlocks = Collections.unmodifiableSet(blockedFormedBlocks); Leaveable = loader.getBoolean("Leaveable", false); AllowMissiles = loader.getBoolean("AllowMissiles", !EnterStages.isEmpty()); NoFloor = loader.getBoolean("NoFloor", false); diff --git a/FightSystem/FightSystem_Core/src/config.yml b/FightSystem/FightSystem_Core/src/config.yml index 0d700de5..81a8ff77 100644 --- a/FightSystem/FightSystem_Core/src/config.yml +++ b/FightSystem/FightSystem_Core/src/config.yml @@ -48,10 +48,13 @@ Arena: GroundWalkable: true # defaults to true if missing # Disable snow and ice melting DisableSnowMelt: false # defaults to false if missing - # Disable ice forming - DisableIceForm: false # defaults to false if missing - # Disable cobblestone, stone, obsidian and basalt generators - DisableBlockGenerators: false # defaults to false if missing + # Disabled blocks from forming + BlockedFormedBlocks: + # For Cobble Generators + # - COBBLESTONE + # - BASALT + # - STONE + # - OBSIDIAN # Allow leaving the arena area as spectator Leaveable: false # defaults to false if missing # Allow missiles to fly to the enemy and not stop at the schem border. diff --git a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFormListener.java b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFormListener.java index 275fc4c4..c50133c7 100644 --- a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFormListener.java +++ b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/listener/BlockFormListener.java @@ -27,25 +27,13 @@ import org.bukkit.Material; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockFormEvent; -import java.util.EnumSet; -import java.util.Set; @Linked public class BlockFormListener implements Listener { - private static final Set GENERATOR_BLOCKS = EnumSet.of( - Material.COBBLESTONE, - Material.STONE, - Material.OBSIDIAN, - Material.BASALT - ); - public BlockFormListener() { - boolean enabled = Config.GameModeConfig.Arena.DisableIceForm - || Config.GameModeConfig.Arena.DisableBlockGenerators; - new StateDependentListener(enabled, - Config.GameModeConfig.Arena.DisableIceForm ? FightState.All : FightState.Running, - this); + boolean enabled = !Config.GameModeConfig.Arena.BlockedFormedBlocks.isEmpty(); + new StateDependentListener(enabled, FightState.All, this); } @EventHandler @@ -53,11 +41,7 @@ public class BlockFormListener implements Listener { if (!Config.ArenaRegion.inRegion(event.getBlock())) return; Material material = event.getNewState().getType(); - if (Config.GameModeConfig.Arena.DisableIceForm && material == Material.ICE) { - event.setCancelled(true); - } else if (Config.GameModeConfig.Arena.DisableBlockGenerators - && FightState.infight() - && GENERATOR_BLOCKS.contains(material)) { + if (Config.GameModeConfig.Arena.BlockedFormedBlocks.contains(material)) { event.setCancelled(true); } }