diff --git a/src/me/yaruma/fightsystem/FightSystem.java b/src/me/yaruma/fightsystem/FightSystem.java index 06d895e..133b25d 100644 --- a/src/me/yaruma/fightsystem/FightSystem.java +++ b/src/me/yaruma/fightsystem/FightSystem.java @@ -57,6 +57,8 @@ public class FightSystem extends JavaPlugin { public int team2cornerY; public int team2cornerZ; + public int underArenaBorder; + public int fightTime = 0; public double damageRed = 0D; @@ -96,6 +98,8 @@ public class FightSystem extends JavaPlugin { World world = Bukkit.getWorld(fileManager.getStringFromConfig("Arena.WorldName")); + underArenaBorder = fileManager.getIntegerFromConfig("Arena.underArenaBorder"); + //Rotate team1corner to edge (min. x, min. y, min. z) if(schemsizeX < 0){ schemsizeX = -schemsizeX; @@ -184,7 +188,7 @@ public class FightSystem extends JavaPlugin { if(fileManager.getBooleanFromConfig("WinConditions.AllDead")) pm.registerEvents(new WinconditionAllDead(), plugin); if(fileManager.getBooleanFromConfig("WinConditions.CaptainDead")) pm.registerEvents(new WinconditionCaptainDead(), plugin); if(fileManager.getBooleanFromConfig("WinConditions.AllDead")) pm.registerEvents(new WinconditionAllDead(), plugin); - if(fileManager.getBooleanFromConfig("WinConditions.PercentWin")) pm.registerEvents(new WinconditionPercentSystem(), plugin); + if(fileManager.getBooleanFromConfig("WinConditions.PercentSystem")) pm.registerEvents(new WinconditionPercentSystem(), plugin); getCommand("ak").setExecutor(new AkCommand()); } @@ -283,7 +287,6 @@ public class FightSystem extends JavaPlugin { Countdown.cancelAllTimers(); setAllPlayersGM(GameMode.SPECTATOR); - entern = true; Bukkit.broadcastMessage(" "); if(winFightTeam != null) { @@ -309,8 +312,7 @@ public class FightSystem extends JavaPlugin { } } - Countdown cancelAllCountdowns = new Countdown(); - cancelAllCountdowns.cancelAllTimers(); + Countdown.cancelAllTimers(); Countdown countdown = new Countdown(20*60, new FinishSpectateOver()); countdown.startTimer(FightSystem.getPlugin()); } @@ -396,6 +398,10 @@ public class FightSystem extends JavaPlugin { return team2cornerZ; } + public int getUnderArenaBorder() { + return underArenaBorder; + } + public int getFightTime() { return fightTime; } diff --git a/src/me/yaruma/fightsystem/listener/EntityDamageByEntityListener.java b/src/me/yaruma/fightsystem/listener/EntityDamageByEntityListener.java index 55e9476..ffd49f3 100644 --- a/src/me/yaruma/fightsystem/listener/EntityDamageByEntityListener.java +++ b/src/me/yaruma/fightsystem/listener/EntityDamageByEntityListener.java @@ -3,11 +3,8 @@ package me.yaruma.fightsystem.listener; import me.yaruma.fightsystem.FightSystem; import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.fight.FightState; -import me.yaruma.fightsystem.fight.FightTeam; import org.bukkit.entity.Arrow; -import org.bukkit.entity.Item; import org.bukkit.entity.Player; -import org.bukkit.entity.TNTPrimed; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; @@ -34,6 +31,7 @@ public class EntityDamageByEntityListener implements Listener { } } else event.setCancelled(true); + return; } if(event.getDamager() instanceof Arrow) { @@ -48,6 +46,7 @@ public class EntityDamageByEntityListener implements Listener { damagerArrow.setFireTicks(0); player.setFireTicks(0); } + return; } } } diff --git a/src/me/yaruma/fightsystem/listener/EntityDamageListener.java b/src/me/yaruma/fightsystem/listener/EntityDamageListener.java index 1c3cf67..8c137e2 100644 --- a/src/me/yaruma/fightsystem/listener/EntityDamageListener.java +++ b/src/me/yaruma/fightsystem/listener/EntityDamageListener.java @@ -12,6 +12,7 @@ public class EntityDamageListener implements Listener { @EventHandler public void handleEntityDamage(EntityDamageEvent event) { + if(!(event.getEntity() instanceof Player)) return; Player player = (Player) event.getEntity(); if(Fight.getPlayerTeam(player) != null) { if(FightSystem.getPlugin().getFightState() != FightState.RUNNING) event.setCancelled(true); diff --git a/src/me/yaruma/fightsystem/listener/PlayerDeathListener.java b/src/me/yaruma/fightsystem/listener/PlayerDeathListener.java index aa62c50..2d176cb 100644 --- a/src/me/yaruma/fightsystem/listener/PlayerDeathListener.java +++ b/src/me/yaruma/fightsystem/listener/PlayerDeathListener.java @@ -18,7 +18,6 @@ public class PlayerDeathListener implements Listener { Player player = event.getEntity().getPlayer(); if(Fight.getPlayerTeam(player) == null) return; FightTeam fightTeam = Fight.getPlayerTeam(player); - FightTeam oppositeFightTeam = Fight.getOpposite(fightTeam); fightTeam.getFightPlayer(player).setOut(true); Bukkit.broadcastMessage(FightSystem.PREFIX + "§cDer Spieler §6" + player.getName() + " §cist gestorben!"); } diff --git a/src/me/yaruma/fightsystem/listener/PlayerJoinListener.java b/src/me/yaruma/fightsystem/listener/PlayerJoinListener.java index 4094958..6296a3c 100644 --- a/src/me/yaruma/fightsystem/listener/PlayerJoinListener.java +++ b/src/me/yaruma/fightsystem/listener/PlayerJoinListener.java @@ -60,6 +60,7 @@ public class PlayerJoinListener implements Listener { if(fightPlayer.isLeader()) SetupItems.giveSetupItems(player); if(fightPlayer.isOut()) { fightPlayer.setOut(false); + Countdown.cancelTimerType(CountdownType.NO_PLAYERS_ONLINE); Bukkit.broadcastMessage(FightSystem.PREFIX + "§aDer Spieler §6" + fightPlayer.getPlayer().getName() + " §aist dem Kampf wieder beigetreten!"); } else Bukkit.broadcastMessage(FightSystem.PREFIX + "§aDer Spieler §6" + fightPlayer.getPlayer().getName() + " §aist dem Kampf beigetreten!"); diff --git a/src/me/yaruma/fightsystem/listener/PlayerMoveListener.java b/src/me/yaruma/fightsystem/listener/PlayerMoveListener.java index d3d7320..f9d7e9f 100644 --- a/src/me/yaruma/fightsystem/listener/PlayerMoveListener.java +++ b/src/me/yaruma/fightsystem/listener/PlayerMoveListener.java @@ -32,7 +32,7 @@ public class PlayerMoveListener implements Listener { } //Check under Arena - if(to.getBlockY() <= fileManager.getIntegerFromConfig("Arena.underArenaBorder")) { + if(to.getBlockY() <= instance.underArenaBorder) { if(fightTeam == null){ player.teleport(from); player.sendMessage(FightSystem.PREFIX + "§cDu darfst die Arena nicht verlassen!"); diff --git a/src/me/yaruma/fightsystem/listener/PlayerQuitListener.java b/src/me/yaruma/fightsystem/listener/PlayerQuitListener.java index 335bdd6..0591688 100644 --- a/src/me/yaruma/fightsystem/listener/PlayerQuitListener.java +++ b/src/me/yaruma/fightsystem/listener/PlayerQuitListener.java @@ -17,12 +17,13 @@ public class PlayerQuitListener implements Listener { @EventHandler public void handlePlayerQuit(PlayerQuitEvent event) { + event.setQuitMessage(null); Player player = event.getPlayer(); if(Fight.getPlayerTeam(player) == null) return; FightTeam fightTeam = Fight.getPlayerTeam(player); fightTeam.getFightPlayer(player).setOut(true); - Bukkit.broadcastMessage(FightSystem.PREFIX + "§cDer Spieler §6" + player.getName() + " §chat den Fight verlassen!"); + Bukkit.broadcastMessage(FightSystem.PREFIX + "§cDer Spieler §6" + player.getName() + " §chat den Kampf verlassen!"); if(fightTeam.allPlayersOut() && FightSystem.getPlugin().getFightState() == FightState.SETUP) { Bukkit.broadcastMessage(FightSystem.PREFIX + "§cAlle Spieler aus dem Team von §6" + fightTeam.getLeader().getPlayer() + " §chaben den Kampf verlassen! \n §4Stoppe Server in 30 Sekunden..."); diff --git a/src/me/yaruma/fightsystem/listener/PlayerRespawnListener.java b/src/me/yaruma/fightsystem/listener/PlayerRespawnListener.java index 48e87e2..0f368a0 100644 --- a/src/me/yaruma/fightsystem/listener/PlayerRespawnListener.java +++ b/src/me/yaruma/fightsystem/listener/PlayerRespawnListener.java @@ -18,9 +18,9 @@ public class PlayerRespawnListener implements Listener { player.teleport(instance.getSpecSpawnLoc()); } else { if(Fight.getPlayerTeam(player) == Fight.redTeam) - event.setRespawnLocation(instance.getTeam1SpawnLoc()); + instance.getTeam1SpawnLoc(); else - event.setRespawnLocation(instance.getTeam2SpawnLoc()); + instance.getTeam2SpawnLoc(); } } diff --git a/src/me/yaruma/fightsystem/utils/WorldEdit.java b/src/me/yaruma/fightsystem/utils/WorldEdit.java index e5d4bd6..5332af9 100644 --- a/src/me/yaruma/fightsystem/utils/WorldEdit.java +++ b/src/me/yaruma/fightsystem/utils/WorldEdit.java @@ -38,7 +38,7 @@ public class WorldEdit { try { int tnt = editSession.replaceBlocks(cuboidSelection.getRegionSelector().getRegion(), targetObsidian, new BaseBlock(46)); - int slime = editSession.replaceBlocks(cuboidSelection.getRegionSelector().getRegion(), targetObsidian, new BaseBlock(7)); + int slime = editSession.replaceBlocks(cuboidSelection.getRegionSelector().getRegion(), targetBedrock, new BaseBlock(165)); editSession.flushQueue(); } catch (Exception ex){ diff --git a/src/me/yaruma/fightsystem/utils/countdown/Countdown.java b/src/me/yaruma/fightsystem/utils/countdown/Countdown.java index 377088d..23bfc61 100644 --- a/src/me/yaruma/fightsystem/utils/countdown/Countdown.java +++ b/src/me/yaruma/fightsystem/utils/countdown/Countdown.java @@ -14,10 +14,6 @@ public class Countdown { private CountdownCallback countdownCallback; private int taskID; - public Countdown() { - - } - public Countdown(int time, CountdownCallback countdownCallback) { this.time = time; this.countdownCallback = countdownCallback; diff --git a/src/me/yaruma/fightsystem/utils/countdown/FinishTimeOver.java b/src/me/yaruma/fightsystem/utils/countdown/FinishTimeOver.java index 1e284d5..4d32f58 100644 --- a/src/me/yaruma/fightsystem/utils/countdown/FinishTimeOver.java +++ b/src/me/yaruma/fightsystem/utils/countdown/FinishTimeOver.java @@ -7,12 +7,12 @@ public class FinishTimeOver implements CountdownCallback { @Override public String countdownCounting() { - return "bis die Zeit abgelaufen ist!"; + return "bis der Kampf vorbei ist!"; } @Override public void countdownFinished() { - Bukkit.broadcastMessage("§aZeit abgelaufen!"); + Bukkit.broadcastMessage("§aZeit abgelaufen! Der Kampf ist vorbei..."); FightSystem.getPlugin().setSpectateState(null); } diff --git a/src/me/yaruma/fightsystem/utils/scoreboard/Scoreboard.java b/src/me/yaruma/fightsystem/utils/scoreboard/Scoreboard.java index ce592a4..54a01d5 100644 --- a/src/me/yaruma/fightsystem/utils/scoreboard/Scoreboard.java +++ b/src/me/yaruma/fightsystem/utils/scoreboard/Scoreboard.java @@ -52,10 +52,10 @@ public class Scoreboard { objective.setDisplaySlot(DisplaySlot.SIDEBAR); objective.setDisplayName("§6Fight Info"); - objective.getScore("§7Zeit: §a" + FightSystem.getPlugin().getFightTime()).setScore(0); - if(Methods.isEnabled("Fight.Entern")) objective.getScore("§7Entern: " + (FightSystem.getPlugin().isEntern() ? "§aja" : "§cnein")).setScore(1); - if(Methods.isEnabled("WinConditions.PercentSystem")) objective.getScore("§eSchaden ROT: §c" + FightSystem.getPlugin().getDamageRed() + "%").setScore(2); - if(Methods.isEnabled("WinConditions.PercentSystem")) objective.getScore("§eSchaden BLAU: §c" + FightSystem.getPlugin().getGetDamageBlue() + "%").setScore(3); + objective.getScore("§7Zeit: §a" + FightSystem.getPlugin().getFightTime()).setScore(3); + if(Methods.isEnabled("Fight.Entern")) objective.getScore("§7Entern: " + (FightSystem.getPlugin().isEntern() ? "§aja" : "§cnein")).setScore(2); + if(Methods.isEnabled("WinConditions.PercentSystem")) objective.getScore("§eSchaden ROT: §c" + FightSystem.getPlugin().getDamageRed() + "%").setScore(1); + if(Methods.isEnabled("WinConditions.PercentSystem")) objective.getScore("§eSchaden BLAU: §c" + FightSystem.getPlugin().getGetDamageBlue() + "%").setScore(0); index = 0; } player.setScoreboard(scoreboard); @@ -65,10 +65,10 @@ public class Scoreboard { private FightTeam getIndexDisplay(int index) { if(index == 0) { - return Fight.blueTeam; + return Fight.redTeam; } if(index == 1) { - return Fight.redTeam; + return Fight.blueTeam; } if(index == 2) { return null; diff --git a/src/me/yaruma/fightsystem/winconditions/Methods.java b/src/me/yaruma/fightsystem/winconditions/Methods.java index f386831..3016bc4 100644 --- a/src/me/yaruma/fightsystem/winconditions/Methods.java +++ b/src/me/yaruma/fightsystem/winconditions/Methods.java @@ -5,7 +5,7 @@ import me.yaruma.fightsystem.FightSystem; public class Methods { public static boolean isEnabled(String conditionPath) { - return FightSystem.getPlugin().getFileManager().getBooleanFromConfig(conditionPath) ? true : false; + return FightSystem.getPlugin().getFileManager().getBooleanFromConfig(conditionPath); } diff --git a/src/me/yaruma/fightsystem/winconditions/WinconditionAllDead.java b/src/me/yaruma/fightsystem/winconditions/WinconditionAllDead.java index 8d4963c..fc48a09 100644 --- a/src/me/yaruma/fightsystem/winconditions/WinconditionAllDead.java +++ b/src/me/yaruma/fightsystem/winconditions/WinconditionAllDead.java @@ -24,7 +24,7 @@ public class WinconditionAllDead implements Listener { FightTeam oppositeFightTeam = Fight.getOpposite(fightTeam); if(fightTeam.allPlayersOut()) { - Bukkit.broadcastMessage(FightSystem.PREFIX + "§cAlle Spieler aus dem Team von " + fightTeam.getLeader().getPlayer().getName() + " §csind gestorben!"); + Bukkit.broadcastMessage(FightSystem.PREFIX + "§cAlle Spieler aus dem Team von " + fightTeam.getLeader().getPlayer().getName() + " §csind gestorben oder haben den Kampf verlassen!"); instance.setSpectateState(oppositeFightTeam); return; } @@ -39,7 +39,7 @@ public class WinconditionAllDead implements Listener { FightTeam oppositeFightTeam = Fight.getOpposite(fightTeam); if(fightTeam.allPlayersOut()) { - Bukkit.broadcastMessage(FightSystem.PREFIX + "§cAlle Spieler aus dem Team von §6" + fightTeam.getLeader().getPlayer() + " §csind tot oder haben den Kampf verlassen! \n §60 Sekunden Zeit zum Begutachten!"); + Bukkit.broadcastMessage(FightSystem.PREFIX + "§cAlle Spieler aus dem Team von §6" + fightTeam.getLeader().getPlayer().getName() + " §csind gestorben oder haben den Kampf verlassen!"); instance.setSpectateState(oppositeFightTeam); return; } diff --git a/src/me/yaruma/fightsystem/winconditions/WinconditionPercentSystem.java b/src/me/yaruma/fightsystem/winconditions/WinconditionPercentSystem.java index 08ed795..9800511 100644 --- a/src/me/yaruma/fightsystem/winconditions/WinconditionPercentSystem.java +++ b/src/me/yaruma/fightsystem/winconditions/WinconditionPercentSystem.java @@ -4,8 +4,7 @@ import me.yaruma.fightsystem.FightSystem; import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.manager.FileManager; import me.yaruma.fightsystem.utils.Region; -import me.yaruma.fightsystem.utils.countdown.Countdown; -import me.yaruma.fightsystem.utils.countdown.FinishSpectateOver; +import org.bukkit.Bukkit; import org.bukkit.entity.Entity; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -27,29 +26,29 @@ public class WinconditionPercentSystem implements Listener { @EventHandler public void handleEntityExplode(EntityExplodeEvent event) { - if(!Methods.isEnabled("WinConditions.PercentWin")) return; + Bukkit.broadcastMessage("boom"); + if(!Methods.isEnabled("WinConditions.PercentSystem")) return; + Bukkit.broadcastMessage("enabled"); Entity entity = event.getEntity(); //Team 1 / Rot if(Region.isInRegion(entity.getLocation(), instance.getTeam1cornerX(), instance.getTeam1cornerY(), instance.getTeam1cornerZ(), instance.getTeam1cornerX() + instance.getSchemsizeX(), instance.getTeam1cornerY() + instance.getSchemsizeY(), instance.getTeam1cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic"))) { team1DestroyedBlocks = team1DestroyedBlocks + event.blockList().size(); + Bukkit.broadcastMessage("red"); double destroyPercent = team1DestroyedBlocks * 100 / schematicSize; + Bukkit.broadcastMessage(" " + destroyPercent); if(destroyPercent >= fileManager.getIntegerFromConfig("WinConditionParams.PercentWin")) { instance.setSpectateState(Fight.blueTeam); - Countdown countdown = new Countdown(fileManager.getIntegerFromConfig("Times.SpectatorDuration"), new FinishSpectateOver()); - countdown.startTimer(instance); } return; } //Team 2 / Blau - if(Region.isInRegion(entity.getLocation(), instance.getTeam2cornerX(), instance.getTeam1cornerY(), instance.getTeam2cornerZ(), instance.getTeam2cornerX() + instance.getSchemsizeX(), instance.getTeam2cornerY() + instance.getSchemsizeY(), instance.getTeam2cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic"))) { + if(Region.isInRegion(entity.getLocation(), instance.getTeam2cornerX(), instance.getTeam2cornerY(), instance.getTeam2cornerZ(), instance.getTeam2cornerX() + instance.getSchemsizeX(), instance.getTeam2cornerY() + instance.getSchemsizeY(), instance.getTeam2cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic"))) { team2DestroyedBlocks = team2DestroyedBlocks + event.blockList().size(); double destroyPercent = team2DestroyedBlocks * 100 / schematicSize; if(destroyPercent >= fileManager.getIntegerFromConfig("WinConditionParams.PercentWin")) { instance.setSpectateState(Fight.redTeam); - Countdown countdown = new Countdown(fileManager.getIntegerFromConfig("Times.SpectatorDuration"), new FinishSpectateOver()); - countdown.startTimer(instance); } return; }