From 5b02e98c35aa576b554c4325b56e7bd7b9569e7d Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 8 Feb 2023 22:51:09 +0100 Subject: [PATCH 1/6] Debug HotbarKit Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/fight/HotbarKit.java | 1 + 1 file changed, 1 insertion(+) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java index bf0a686..09ca6a2 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java @@ -93,6 +93,7 @@ public class HotbarKit extends Kit { Player player = event.getPlayer(); int slot = player.getInventory().getHeldItemSlot(); Kit activeKit = activeKits.get(player); + System.out.println(event.getAction().name()); if(!(activeKit instanceof HotbarKit) || PersonalKitCreator.inKitCreator(player) || activeKit.getInventory()[slot] == null) return; From 8ffa6296b1e10698e4a123d33f1e0cb7a329baf1 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 17 Feb 2023 10:24:58 +0100 Subject: [PATCH 2/6] Prevent schem selection DOS Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/fight/HotbarKit.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java index 09ca6a2..6cd59f9 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java @@ -26,6 +26,7 @@ import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.listener.PersonalKitCreator; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependentListener; +import de.steamwar.fightsystem.states.StateDependentTask; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -37,7 +38,9 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.potion.PotionEffect; import java.util.Collection; +import java.util.HashSet; import java.util.Objects; +import java.util.Set; import java.util.function.Consumer; public class HotbarKit extends Kit { @@ -81,8 +84,11 @@ public class HotbarKit extends Kit { public static class HotbarKitListener implements Listener { + private static final Set clicked = new HashSet<>(); + public HotbarKitListener() { new StateDependentListener(ArenaMode.AntiReplay, FightState.Setup, this); + new StateDependentTask(ArenaMode.AntiReplay, FightState.Setup, clicked::clear, 1, 1); } @EventHandler @@ -93,11 +99,13 @@ public class HotbarKit extends Kit { Player player = event.getPlayer(); int slot = player.getInventory().getHeldItemSlot(); Kit activeKit = activeKits.get(player); - System.out.println(event.getAction().name()); if(!(activeKit instanceof HotbarKit) || PersonalKitCreator.inKitCreator(player) || activeKit.getInventory()[slot] == null) return; event.setCancelled(true); + if(!clicked.add(player)) + return; + ((HotbarKit)activeKit).onClicks[slot].accept(player); } } From 6ea17557eac9c457e1bef9a757f91e71dd1b8672 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 17 Feb 2023 10:56:46 +0100 Subject: [PATCH 3/6] Change extend area downwards Signed-off-by: Lixfel --- .../de/steamwar/fightsystem/ArenaMode.java | 1 + .../src/de/steamwar/fightsystem/Config.java | 6 ++--- .../de/steamwar/fightsystem/FightSystem.java | 7 +++++- .../fightsystem/FightSystem.properties | 1 + .../fightsystem/FightSystem_de.properties | 1 + .../fightsystem/listener/PistonListener.java | 22 +++++++++++++------ .../fightsystem/listener/TeamArea.java | 2 +- .../de/steamwar/fightsystem/utils/Region.java | 6 ++--- 8 files changed, 31 insertions(+), 15 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java b/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java index 62dd249..ad4e2a3 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/ArenaMode.java @@ -43,6 +43,7 @@ public enum ArenaMode { public static final Set AntiReplay = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(REPLAY))); public static final Set AntiTest = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(TEST, CHECK))); public static final Set AntiEvent = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(EVENT))); + public static final Set AntiTestCheckPrepare = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(TEST, CHECK, PREPARE))); public static final Set AntiPrepare = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(PREPARE))); public static final Set VariableTeams = Collections.unmodifiableSet(EnumSet.complementOf(EnumSet.of(EVENT, REPLAY))); public static final Set RankedEvent = Collections.unmodifiableSet(EnumSet.of(EVENT, REPLAY)); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/Config.java b/FightSystem_Core/src/de/steamwar/fightsystem/Config.java index f1affb4..00ea877 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/Config.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/Config.java @@ -305,9 +305,9 @@ public class Config { RedPasteRegion = new Region(teamRedCornerX, teamRedCornerY, teamRedCornerZ, schemsizeX, schemsizeY, schemsizeZ); BluePasteRegion = new Region(blueCornerX, blueCornerY, blueCornerZ, schemsizeX, schemsizeY, schemsizeZ); - RedExtendRegion = new Region(teamRedCornerX, underBorder, teamRedCornerZ, schemsizeX, arenaYSize, schemsizeZ, PreperationArea, PreperationArea); - BlueExtendRegion = new Region(blueCornerX, underBorder, blueCornerZ, schemsizeX, arenaYSize, schemsizeZ, PreperationArea, PreperationArea); - ArenaRegion = new Region(arenaMinX, underBorder, arenaMinZ, arenaMaxX - arenaMinX, arenaYSize, arenaMaxZ - arenaMinZ); + RedExtendRegion = new Region(teamRedCornerX, teamRedCornerY, teamRedCornerZ, schemsizeX, arenaYSize, schemsizeZ, PreperationArea, PreperationArea, PreperationArea); + BlueExtendRegion = new Region(blueCornerX, blueCornerY, blueCornerZ, schemsizeX, arenaYSize, schemsizeZ, PreperationArea, PreperationArea, PreperationArea); + ArenaRegion = new Region(arenaMinX, underBorder, arenaMinZ, arenaMaxX - arenaMinX, arenaYSize, arenaMaxZ - arenaMinZ); //TODO adjust ArenaRegion? EventKampfID = Integer.parseInt(System.getProperty("fightID", "0")); if(EventKampfID >= 1){ diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java index 8c2b5a0..e5cc1ba 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.java @@ -67,7 +67,12 @@ public class FightSystem extends JavaPlugin { new EntityDamage(); new WaterRemover(); new Permanent(); - new PistonListener(); + new PistonListener(ArenaMode.AntiTestCheckPrepare, e -> e.setCancelled(true)); + new PistonListener(ArenaMode.Test, e -> getMessage().broadcastActionbar("PISTON_PUSHED_OUTSIDE")); + new PistonListener(ArenaMode.Prepare, e -> { + getMessage().broadcast("PISTON_PUSHED_OUTSIDE"); + shutdown(); + }); new Chat(); new ArenaBorder(); new TeamArea(); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties index ef060ac..7a0114a 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem.properties @@ -156,6 +156,7 @@ PREPARE_SENT_IN=§aA team member will review the schematic soon PARTICIPANT_CHAT={0} {1}§8» §7{2} FIGHTLEADER_CHAT=§e{0}§8» §e{1} SPECTATOR_CHAT=§7{0}§8» §7{1} +PISTON_PUSHED_OUTSIDE=§cA piston pushed a block outside the allowed area! # Replay diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem_de.properties b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem_de.properties index 2809513..fff7bc4 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem_de.properties +++ b/FightSystem_Core/src/de/steamwar/fightsystem/FightSystem_de.properties @@ -150,6 +150,7 @@ PREPARE_SCHEM_EXISTS=§cEs existiert bereits eine Schem mit Namenszusatz -prepar PREPARE_ACTIVE_PISTON=§cIm Teambereich wurden sich noch bewegende Pistons gefunden, Einsenden wird abgebrochen. PREPARE_FAILED_SAVING=§cDie Schematic konnte nicht gespeichert werden, Einsenden wird abgebrochen. PREPARE_SENT_IN=§aDie Schematic wird nun zeitnah von einem Teammitglied überprüft +PISTON_PUSHED_OUTSIDE=§cEin Kolben hat einen Block aus dem erlaubten Bereich geschoben! # Replay diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java index 7aba189..26c2fb8 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/PistonListener.java @@ -28,17 +28,25 @@ import org.bukkit.block.BlockFace; import org.bukkit.block.PistonMoveReaction; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockPistonEvent; import org.bukkit.event.block.BlockPistonExtendEvent; import org.bukkit.event.block.BlockPistonRetractEvent; +import java.util.Set; +import java.util.function.Consumer; + public class PistonListener implements Listener { - public PistonListener() { + private final Consumer leftAreaHandler; + + public PistonListener(Set condition, Consumer leftAreaHandler) { + this.leftAreaHandler = leftAreaHandler; + if(!condition.contains(Config.mode)) + return; + //Wenn Entern aktiv ist, sollen Raketen etc. entern können - if(!ArenaMode.Check.contains(Config.mode)) { - new StateDependentListener(!Config.AllowMissiles, FightState.All, this); - new StateDependentListener(Config.AllowMissiles, FightState.Setup, this); - } + new StateDependentListener(!Config.AllowMissiles, FightState.All, this); + new StateDependentListener(Config.AllowMissiles, FightState.Setup, this); } @EventHandler @@ -50,7 +58,7 @@ public class PistonListener implements Listener { for(Block block : e.getBlocks()){ Block target = block.getRelative(face); if(!Config.BlueExtendRegion.inRegion(target) && !Config.RedExtendRegion.inRegion(target) && block.getPistonMoveReaction() != PistonMoveReaction.BREAK) { - e.setCancelled(true); + leftAreaHandler.accept(e); return; } } @@ -63,7 +71,7 @@ public class PistonListener implements Listener { for(Block block : e.getBlocks()){ if(!Config.BlueExtendRegion.inRegion(block) && !Config.RedExtendRegion.inRegion(block)) { - e.setCancelled(true); + leftAreaHandler.accept(e); return; } } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java index 44aef93..e091c92 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java @@ -80,7 +80,7 @@ public class TeamArea implements Listener { @EventHandler public void blockBreak(BlockBreakEvent event) { Block block = event.getBlock(); - if(Config.BluePasteRegion.getMinY() <= block.getY()) + if(Config.BlueExtendRegion.getMinY() <= block.getY()) return; event.setCancelled(true); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/Region.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/Region.java index ac6d9a3..9e547c8 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/Region.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/Region.java @@ -33,9 +33,9 @@ public class Region { private final int maxY; private final int maxZ; - public Region(int minX, int minY, int minZ, int sizeX, int sizeY, int sizeZ, int extendX, int extendZ) { - this(minX - extendX, minY, minZ - extendZ, - sizeX + extendX * 2, sizeY, sizeZ + extendZ * 2); + public Region(int minX, int minY, int minZ, int sizeX, int sizeY, int sizeZ, int extendX, int extendY, int extendZ) { + this(minX - extendX, minY - extendY, minZ - extendZ, + sizeX + extendX * 2, sizeY + extendY * 2, sizeZ + extendZ * 2); } public Region(int minX, int minY, int minZ, int sizeX, int sizeY, int sizeZ) { From 617246a21161353f1692070d4da658e33e78e1ca Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 17 Feb 2023 10:57:47 +0100 Subject: [PATCH 4/6] Remove TODO Signed-off-by: Lixfel --- FightSystem_Core/src/de/steamwar/fightsystem/Config.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/Config.java b/FightSystem_Core/src/de/steamwar/fightsystem/Config.java index 00ea877..8d28cfa 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/Config.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/Config.java @@ -307,7 +307,7 @@ public class Config { RedExtendRegion = new Region(teamRedCornerX, teamRedCornerY, teamRedCornerZ, schemsizeX, arenaYSize, schemsizeZ, PreperationArea, PreperationArea, PreperationArea); BlueExtendRegion = new Region(blueCornerX, blueCornerY, blueCornerZ, schemsizeX, arenaYSize, schemsizeZ, PreperationArea, PreperationArea, PreperationArea); - ArenaRegion = new Region(arenaMinX, underBorder, arenaMinZ, arenaMaxX - arenaMinX, arenaYSize, arenaMaxZ - arenaMinZ); //TODO adjust ArenaRegion? + ArenaRegion = new Region(arenaMinX, underBorder, arenaMinZ, arenaMaxX - arenaMinX, arenaYSize, arenaMaxZ - arenaMinZ); EventKampfID = Integer.parseInt(System.getProperty("fightID", "0")); if(EventKampfID >= 1){ From 00d7a9567a084634a75d37c4f0931e687a301cb7 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 17 Feb 2023 11:02:23 +0100 Subject: [PATCH 5/6] Increase period Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/fight/HotbarKit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java index 6cd59f9..ef2e3a3 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/HotbarKit.java @@ -88,7 +88,7 @@ public class HotbarKit extends Kit { public HotbarKitListener() { new StateDependentListener(ArenaMode.AntiReplay, FightState.Setup, this); - new StateDependentTask(ArenaMode.AntiReplay, FightState.Setup, clicked::clear, 1, 1); + new StateDependentTask(ArenaMode.AntiReplay, FightState.Setup, clicked::clear, 10, 10); } @EventHandler From 4252339d0b3fee2b438fec2ac223ef01b3c0fa7f Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 24 Feb 2023 10:48:18 +0100 Subject: [PATCH 6/6] Hotfix FightSystem Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/record/Recorder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/record/Recorder.java b/FightSystem_Core/src/de/steamwar/fightsystem/record/Recorder.java index c028429..39cc43f 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/record/Recorder.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/record/Recorder.java @@ -29,7 +29,7 @@ import de.steamwar.fightsystem.utils.BlockIdWrapper; import de.steamwar.fightsystem.utils.CraftbukkitWrapper; import de.steamwar.fightsystem.utils.Message; import de.steamwar.fightsystem.utils.SWSound; -import de.steamwar.sql.SchematicData; +import de.steamwar.sql.NodeData; import de.steamwar.sql.SchematicNode; import de.steamwar.sql.SteamwarUser; import org.bukkit.Bukkit; @@ -276,7 +276,7 @@ public interface Recorder { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); try{ - copy(new SchematicData(SchematicNode.getSchematicNode(schemId)).schemData(), buffer); + copy(NodeData.get(SchematicNode.getSchematicNode(schemId)).schemData(), buffer); }catch (EOFException e) { Bukkit.getLogger().log(Level.INFO, "EOFException ignored"); } catch (IOException e) {