From c9821053cee57bef3a30ac4459111ac8af460ec4 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Thu, 12 Jun 2025 19:45:45 +0200 Subject: [PATCH] Refactor TechareaCommand to support per-player REntityServer instances and add periodic tick updates --- .../fightsystem/commands/TechareaCommand.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/commands/TechareaCommand.java b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/commands/TechareaCommand.java index 64eb1105..916bf816 100644 --- a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/commands/TechareaCommand.java +++ b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/commands/TechareaCommand.java @@ -23,27 +23,38 @@ import de.steamwar.command.SWCommand; import de.steamwar.entity.CWireframe; import de.steamwar.entity.REntityServer; import de.steamwar.fightsystem.Config; +import de.steamwar.fightsystem.FightSystem; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + public class TechareaCommand extends SWCommand { - private final REntityServer server = new REntityServer(); - private final CWireframe wireframe = new CWireframe(server); + private final Map servers = new HashMap<>(); public TechareaCommand() { super("techarea"); - wireframe.setPos1(Config.BlueInsetRegion.getMinLocation(Config.world)); - wireframe.setPos2(Config.BlueInsetRegion.getMaxLocation(Config.world)); - wireframe.setBlock(Material.RED_CONCRETE.createBlockData()); + Bukkit.getScheduler().runTaskTimer(FightSystem.getPlugin(), () -> servers.forEach((uuid, rEntityServer) -> rEntityServer.tick()), 2, 2); } @Register public void genericCommand(Player player) { - if (server.getPlayers().contains(player)) { - server.removePlayer(player); + if (servers.containsKey(player.getUniqueId())) { + servers.get(player.getUniqueId()).close(); } else { + REntityServer server = new REntityServer(); + CWireframe wireframe = new CWireframe(server); + + wireframe.setPos1(Config.BlueInsetRegion.getMinLocation(Config.world)); + wireframe.setPos2(Config.BlueInsetRegion.getMaxLocation(Config.world)); + wireframe.setBlock(Material.RED_CONCRETE.createBlockData()); + server.addPlayer(player); + servers.put(player.getUniqueId(), server); } } }