From e4fe75693a1aae957c142a4c848820cc9e129f4b Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 22 Jun 2020 09:40:29 +0200 Subject: [PATCH] Finish enter handler Signed-off-by: Lixfel --- .../de/steamwar/fightsystem/FightSystem.java | 18 ++------------- .../countdown/EnternCountdown.java | 12 +++++++--- .../fightsystem/utils/EnterHandler.java | 22 +++++++++++++++++-- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Main/src/de/steamwar/fightsystem/FightSystem.java index c1215e2..70fced4 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/FightSystem.java @@ -21,7 +21,6 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Objects; import java.util.logging.Level; @@ -77,6 +76,8 @@ public class FightSystem extends JavaPlugin { if(Core.getVersion() > 8) new ExtendedInventoryListener(); + new EnterHandler(); + new WinconditionAllDead(); new WinconditionCaptainDead(); new WinconditionPumpkinTechKO(); @@ -172,26 +173,11 @@ public class FightSystem extends JavaPlugin { setFightState(FightState.RUNNING); setAllPlayersGM(GameMode.SURVIVAL); - //TODO: Entern Countdowns and Entern chunk reload - FightStatistics.start(); WaterRemover.init(); Bukkit.broadcastMessage(PREFIX + "§aArena freigegeben!"); } - public static void setEntern() { - //TODO: Remove this function - - final List chunksBlue = TechHider.prepareChunkReload(Fight.getBlueTeam().getPlayers().iterator().next().getPlayer()); - final List chunksRed = TechHider.prepareChunkReload(Fight.getRedTeam().getPlayers().iterator().next().getPlayer()); - for(FightPlayer player : Fight.getBlueTeam().getPlayers()){ - TechHider.reloadChunks(player.getPlayer(), chunksBlue); - } - for(FightPlayer player : Fight.getRedTeam().getPlayers()){ - TechHider.reloadChunks(player.getPlayer(), chunksRed); - } - } - public static void setSpectateState(FightTeam winFightTeam, String windescription) { if(!fightState.ingame()) throw new SecurityException(fightState.name()); diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/countdown/EnternCountdown.java b/FightSystem_Main/src/de/steamwar/fightsystem/countdown/EnternCountdown.java index 09258f7..c18b4bc 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/countdown/EnternCountdown.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/countdown/EnternCountdown.java @@ -4,12 +4,17 @@ import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.fight.FightPlayer; import de.steamwar.fightsystem.listener.BasicListener; +import de.steamwar.fightsystem.utils.ITechHider; +import de.steamwar.fightsystem.utils.TechHider; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.entity.Player; +import java.util.List; + public class EnternCountdown extends Countdown { private final FightPlayer fightPlayer; + private List chunkPos; public EnternCountdown(FightPlayer fp) { super(fp.getKit().getEnterStage(), SWSound.BLOCK_NOTE_PLING, false); @@ -24,17 +29,17 @@ public class EnternCountdown extends Countdown { @Override public void countdownFinished() { fightPlayer.getPlayer().sendMessage(FightSystem.PREFIX + "§aEntern ist nun erlaubt!"); - //TODO + TechHider.reloadChunks(fightPlayer.getPlayer(), chunkPos); } @Override void count(){ - Player player = fightPlayer.getPlayer(); if(!fightPlayer.isLiving()){ disable(); return; } + Player player = fightPlayer.getPlayer(); int time = Config.EnterStages.get(fightPlayer.getKit().getEnterStage()) - FightSystem.getFightTime(); switch (time) { case 900: case 600: case 300: case 180: case 120: @@ -49,7 +54,8 @@ public class EnternCountdown extends Countdown { player.playSound(player.getLocation(), Countdown.getSound(SWSound.BLOCK_NOTE_PLING), 100.0F, 1.0F); BasicListener.toActionbar(player, TextComponent.fromLegacyText("§rNoch §a1 §rSekunde " + countdownCounting())); - //TODO + + chunkPos = TechHider.prepareChunkReload(player); break; case 0: player.playSound(player.getLocation(), Countdown.getSound(SWSound.BLOCK_NOTE_PLING), 100.0F, 2.0F); diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/utils/EnterHandler.java b/FightSystem_Main/src/de/steamwar/fightsystem/utils/EnterHandler.java index e2261e9..3eb6d4a 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/utils/EnterHandler.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/utils/EnterHandler.java @@ -1,26 +1,44 @@ package de.steamwar.fightsystem.utils; +import de.steamwar.fightsystem.Config; +import de.steamwar.fightsystem.countdown.EnternCountdown; +import de.steamwar.fightsystem.fight.Fight; +import de.steamwar.fightsystem.fight.FightPlayer; +import de.steamwar.fightsystem.fight.FightTeam; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.states.StateDependent; import java.util.EnumSet; +import java.util.HashSet; import java.util.Set; public class EnterHandler implements StateDependent { private static final Set enabled = EnumSet.of(FightState.RUNNING); + private static final Set countdowns = new HashSet<>(); @Override public Set enabled() { return enabled; } + private void registerTeam(FightTeam team){ + for(FightPlayer fp : team.getPlayers()){ + if(Config.EnterStages.size() > fp.getKit().getEnterStage() && fp.getKit().getEnterStage() >= 0) + countdowns.add(new EnternCountdown(fp)); + } + } + @Override public void enable() { - + registerTeam(Fight.getBlueTeam()); + registerTeam(Fight.getRedTeam()); } @Override public void disable() { - + for(EnternCountdown countdown : countdowns){ + countdown.disable(); + } + countdowns.clear(); } }