From 9fa918d04efd58b5956c14fdf0095e131c2679c8 Mon Sep 17 00:00:00 2001 From: Yaruma3341 Date: Sat, 23 Feb 2019 11:39:53 +0100 Subject: [PATCH] Not stable version Signed-off-by: Yaruma3341 --- config.yml | 1 + src/me/yaruma/fightsystem/FightSystem.java | 16 ++++++-- src/me/yaruma/fightsystem/fight/Fight.java | 5 ++- .../yaruma/fightsystem/fight/FightTeam.java | 2 + .../listener/PlayerJoinListener.java | 38 ++++++++++++++----- .../listener/PlayerMoveListener.java | 29 +++++++------- .../utils/countdown/FinishNoneEntern.java | 2 + .../utils/scoreboard/Scoreboard.java | 18 +++------ 8 files changed, 70 insertions(+), 41 deletions(-) diff --git a/config.yml b/config.yml index fe895ae..7fc7486 100644 --- a/config.yml +++ b/config.yml @@ -1,4 +1,5 @@ Times: + NoPlayersOnlineDuration: 0 SetupDuration: 0 PreFightDuration: 0 SpectatorDuration: 0 diff --git a/src/me/yaruma/fightsystem/FightSystem.java b/src/me/yaruma/fightsystem/FightSystem.java index 3ee7aff..54b215a 100644 --- a/src/me/yaruma/fightsystem/FightSystem.java +++ b/src/me/yaruma/fightsystem/FightSystem.java @@ -7,6 +7,7 @@ import me.yaruma.fightsystem.fight.*; import me.yaruma.fightsystem.listener.*; import me.yaruma.fightsystem.manager.FileManager; import me.yaruma.fightsystem.utils.countdown.Countdown; +import me.yaruma.fightsystem.utils.countdown.FinishNoPlayersOnline; import me.yaruma.fightsystem.utils.countdown.FinishSetupOver; import me.yaruma.fightsystem.utils.countdown.FinishSpectateOver; import me.yaruma.fightsystem.utils.scoreboard.Scoreboard; @@ -63,6 +64,9 @@ public class FightSystem extends JavaPlugin { public double getDamageBlue = 0D; + public boolean entern = false; + + public void onEnable() { plugin = this; @@ -143,8 +147,8 @@ public class FightSystem extends JavaPlugin { init(); fightState = FightState.SETUP; - int setupDuration = fileManager.getIntegerFromConfig("Times.SetupDuration"); - Countdown countdown = new Countdown(setupDuration, new FinishSetupOver()); + int setupDuration = fileManager.getIntegerFromConfig("Times.NoPlayersOnlineDuration"); + Countdown countdown = new Countdown(setupDuration, new FinishNoPlayersOnline()); countdown.startTimer(getPlugin()); System.out.println(PREFIX + "§aPlugin gestartet!"); @@ -156,7 +160,7 @@ public class FightSystem extends JavaPlugin { } - public void init() { + private void init() { PluginManager pm = Bukkit.getPluginManager(); pm.registerEvents(new PlayerJoinListener(), plugin); pm.registerEvents(new PlayerQuitListener(), plugin); @@ -176,7 +180,7 @@ public class FightSystem extends JavaPlugin { getCommand("ak").setExecutor(new AkCommand()); } - public void loadConfig() { + private void loadConfig() { if(!new File("plugins/" + this.getName() + "/config.yml").exists()) { saveDefaultConfig(); System.out.println(PREFIX + "config.yml erstellt und geladen!"); @@ -354,4 +358,8 @@ public class FightSystem extends JavaPlugin { public double getGetDamageBlue() { return getDamageBlue; } + + public boolean isEntern() { + return entern; + } } diff --git a/src/me/yaruma/fightsystem/fight/Fight.java b/src/me/yaruma/fightsystem/fight/Fight.java index cfb29a0..69c23f2 100644 --- a/src/me/yaruma/fightsystem/fight/Fight.java +++ b/src/me/yaruma/fightsystem/fight/Fight.java @@ -1,11 +1,12 @@ package me.yaruma.fightsystem.fight; +import me.yaruma.fightsystem.FightSystem; import org.bukkit.entity.Player; public class Fight { - public static FightTeam redTeam; - public static FightTeam blueTeam; + public static FightTeam redTeam = new FightTeam(null, FightSystem.getPlugin()); + public static FightTeam blueTeam = new FightTeam(null, FightSystem.getPlugin()); public static FightTeam getPlayerTeam(Player player) { diff --git a/src/me/yaruma/fightsystem/fight/FightTeam.java b/src/me/yaruma/fightsystem/fight/FightTeam.java index 1da349d..c70e7fc 100644 --- a/src/me/yaruma/fightsystem/fight/FightTeam.java +++ b/src/me/yaruma/fightsystem/fight/FightTeam.java @@ -54,6 +54,8 @@ public class FightTeam { } public boolean isPlayerInTeam(Player player) { + if(this.leader.getPlayer() == null) return false; + if(this.leader.getPlayer().equals(player)) { return true; } diff --git a/src/me/yaruma/fightsystem/listener/PlayerJoinListener.java b/src/me/yaruma/fightsystem/listener/PlayerJoinListener.java index 55c70a6..9325e8b 100644 --- a/src/me/yaruma/fightsystem/listener/PlayerJoinListener.java +++ b/src/me/yaruma/fightsystem/listener/PlayerJoinListener.java @@ -5,6 +5,9 @@ import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.fight.FightPlayer; import me.yaruma.fightsystem.fight.FightState; import me.yaruma.fightsystem.fight.FightTeam; +import me.yaruma.fightsystem.manager.FileManager; +import me.yaruma.fightsystem.utils.countdown.Countdown; +import me.yaruma.fightsystem.utils.countdown.FinishSetupOver; import me.yaruma.fightsystem.utils.inventory.SetupItems; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -15,6 +18,9 @@ import org.bukkit.event.player.PlayerJoinEvent; public class PlayerJoinListener implements Listener { + FightSystem instance = FightSystem.getPlugin(); + FileManager fileManager = instance.getFileManager(); + @EventHandler public void handlePlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); @@ -24,16 +30,24 @@ public class PlayerJoinListener implements Listener { player.getInventory().clear(); if (Fight.getPlayerTeam(player) == null) { - player.setGameMode(GameMode.SPECTATOR); - player.teleport(FightSystem.getPlugin().getSpecSpawnLoc()); - return; + if(!Fight.getRedTeam().hasTeamLeader()) { + Fight.getRedTeam().setLeader(new FightPlayer(player, false)); + return; + } else if(!Fight.getBlueTeam().hasTeamLeader()) { + Fight.getBlueTeam().setLeader(new FightPlayer(player, false)); + return; + } else { + player.setGameMode(GameMode.SPECTATOR); + player.teleport(instance.getSpecSpawnLoc()); + return; + } } FightTeam fightTeam = Fight.getPlayerTeam(player); FightPlayer fightPlayer = fightTeam.getFightPlayer(player); if (fightTeam == Fight.blueTeam) { - if (FightSystem.getPlugin().getFightState() == FightState.SETUP) { - player.teleport(FightSystem.getPlugin().getFightManager().getBlueTeleportLocation()); + if (instance.getFightState() == FightState.SETUP) { + player.teleport(instance.getFightManager().getBlueTeleportLocation()); player.setGameMode(GameMode.SURVIVAL); if(fightPlayer.isLeader()) SetupItems.giveSetupItems(player); if(fightPlayer.isOut()) { @@ -47,8 +61,8 @@ public class PlayerJoinListener implements Listener { } if (fightTeam == Fight.redTeam) { - if (FightSystem.getPlugin().getFightState() == FightState.SETUP) { - player.teleport(FightSystem.getPlugin().getFightManager().getRedTeleportLocation()); + if (instance.getFightState() == FightState.SETUP) { + player.teleport(instance.getFightManager().getRedTeleportLocation()); player.setGameMode(GameMode.SURVIVAL); if(fightPlayer.isLeader()) SetupItems.giveSetupItems(player); if(fightPlayer.isOut()) { @@ -57,11 +71,17 @@ public class PlayerJoinListener implements Listener { } } else { player.setGameMode(GameMode.SPECTATOR); - player.teleport(FightSystem.getPlugin().getTeam1SpawnLoc()); + player.teleport(instance.getTeam1SpawnLoc()); } } - FightSystem.getPlugin().getScoreboard().setAutoScoreboard(20*10, player); + if(Fight.getRedTeam().getLeader().getPlayer() != null && Fight.getBlueTeam().getLeader().getPlayer() != null) { + int setupDuration = fileManager.getIntegerFromConfig("Times.SetupDuration"); + Countdown countdown = new Countdown(setupDuration, new FinishSetupOver()); + countdown.startTimer(instance); + } + + instance.getScoreboard().setAutoScoreboard(20*10, player); } diff --git a/src/me/yaruma/fightsystem/listener/PlayerMoveListener.java b/src/me/yaruma/fightsystem/listener/PlayerMoveListener.java index 533c8ea..b6bd58a 100644 --- a/src/me/yaruma/fightsystem/listener/PlayerMoveListener.java +++ b/src/me/yaruma/fightsystem/listener/PlayerMoveListener.java @@ -22,9 +22,7 @@ public class PlayerMoveListener implements Listener { Location to = event.getTo(); Location from = event.getFrom(); - FightTeam fightTeam = Fight.getPlayerTeam(player); - - if(fightTeam == null) { + if(Fight.getPlayerTeam(player) == null) { if(Region.isInRegion(to, instance.getTeam1cornerX(), instance.getTeam1cornerY(), instance.getTeam1cornerZ(), instance.getTeam1cornerX() + instance.getSchemsizeX(), instance.getTeam1cornerY() + instance.getSchemsizeY(), instance.getTeam1cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic")) || Region.isInRegion(to, instance.getTeam2cornerX(), instance.getTeam2cornerY(), instance.getTeam2cornerZ(), instance.getTeam2cornerX() + instance.getSchemsizeX(), instance.getTeam2cornerY() + instance.getSchemsizeY(), instance.getTeam2cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic"))) { player.teleport(from); player.sendMessage(FightSystem.PREFIX + "§cDu darfst nicht weiter zu den Kämpfern!"); @@ -32,17 +30,20 @@ public class PlayerMoveListener implements Listener { return; } - if(Region.isInRegion(to, instance.getTeam1cornerX(), instance.getTeam1cornerY(), instance.getTeam1cornerZ(), instance.getTeam1cornerX() + instance.getSchemsizeX(), instance.getTeam1cornerY() + instance.getSchemsizeY(), instance.getTeam1cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic"))) { - if(fightTeam == Fight.blueTeam) { - player.teleport(from); - player.sendMessage(FightSystem.PREFIX + "§cDu darfst nicht zu Team " + fileManager.getStringFromConfig("Output.TeamRedColor") + fileManager.getStringFromConfig("Output.TeamRedName") + " §c!"); - return; - } - } else if(Region.isInRegion(to, instance.getTeam2cornerX(), instance.getTeam2cornerY(), instance.getTeam2cornerZ(), instance.getTeam2cornerX() + instance.getSchemsizeX(), instance.getTeam2cornerY() + instance.getSchemsizeY(), instance.getTeam2cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic"))) { - if(fightTeam == Fight.redTeam) { - player.teleport(from); - player.sendMessage(FightSystem.PREFIX + "§cDu darfst nicht zu Team " + fileManager.getStringFromConfig("Output.TeamBlueColor") + fileManager.getStringFromConfig("Output.TeamBlueName") + " §c!"); - return; + if(!instance.isEntern()) { + + FightTeam fightTeam = Fight.getPlayerTeam(player); + + if(Region.isInRegion(to, instance.getTeam1cornerX(), instance.getTeam1cornerY(), instance.getTeam1cornerZ(), instance.getTeam1cornerX() + instance.getSchemsizeX(), instance.getTeam1cornerY() + instance.getSchemsizeY(), instance.getTeam1cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic"))) { + if(fightTeam == Fight.blueTeam) { + player.teleport(from); + player.sendMessage(FightSystem.PREFIX + "§cDu darfst nicht zu Team " + fileManager.getStringFromConfig("Output.TeamRedColor") + fileManager.getStringFromConfig("Output.TeamRedName") + " §c!"); + } + } else if(Region.isInRegion(to, instance.getTeam2cornerX(), instance.getTeam2cornerY(), instance.getTeam2cornerZ(), instance.getTeam2cornerX() + instance.getSchemsizeX(), instance.getTeam2cornerY() + instance.getSchemsizeY(), instance.getTeam2cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic"))) { + if(fightTeam == Fight.redTeam) { + player.teleport(from); + player.sendMessage(FightSystem.PREFIX + "§cDu darfst nicht zu Team " + fileManager.getStringFromConfig("Output.TeamBlueColor") + fileManager.getStringFromConfig("Output.TeamBlueName") + " §c!"); + } } } diff --git a/src/me/yaruma/fightsystem/utils/countdown/FinishNoneEntern.java b/src/me/yaruma/fightsystem/utils/countdown/FinishNoneEntern.java index 1d5b134..ebabd91 100644 --- a/src/me/yaruma/fightsystem/utils/countdown/FinishNoneEntern.java +++ b/src/me/yaruma/fightsystem/utils/countdown/FinishNoneEntern.java @@ -1,5 +1,6 @@ package me.yaruma.fightsystem.utils.countdown; +import me.yaruma.fightsystem.FightSystem; import org.bukkit.Bukkit; public class FinishNoneEntern implements CountdownCallback { @@ -11,6 +12,7 @@ public class FinishNoneEntern implements CountdownCallback { @Override public void countdownFinished() { + FightSystem.getPlugin().entern = true; Bukkit.broadcastMessage("§aEntern ist nun erlaubt!"); } } diff --git a/src/me/yaruma/fightsystem/utils/scoreboard/Scoreboard.java b/src/me/yaruma/fightsystem/utils/scoreboard/Scoreboard.java index 2485825..e019b8d 100644 --- a/src/me/yaruma/fightsystem/utils/scoreboard/Scoreboard.java +++ b/src/me/yaruma/fightsystem/utils/scoreboard/Scoreboard.java @@ -3,6 +3,7 @@ package me.yaruma.fightsystem.utils.scoreboard; import me.yaruma.fightsystem.FightSystem; import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.fight.FightTeam; +import me.yaruma.fightsystem.winconditions.Methods; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scoreboard.DisplaySlot; @@ -55,19 +56,12 @@ public class Scoreboard { String gameName = FightSystem.getPlugin().getFileManager().getStringFromConfig("Output.GameName"); + objective.setDisplaySlot(DisplaySlot.SIDEBAR); objective.setDisplayName("§6Fight Info"); - if(gameName == "AirWargear" || gameName == "WarShip") { - objective.setDisplaySlot(DisplaySlot.SIDEBAR); - objective.getScore("§7Zeit: §a" + FightSystem.getPlugin().getFightTime()).setScore(0); - objective.getScore("§7Entern: " + (FightSystem.getPlugin().getFileManager().getBooleanFromConfig("Fight.Entern") ? "§aja" : "§cnein")).setScore(1); - objective.getScore("§7Spieltyp: §e" + gameName).setScore(2); - objective.getScore("§eSchaden ROT: " + FightSystem.getPlugin().getDamageRed()).setScore(3); - objective.getScore("§eSchaden BLAU: " + FightSystem.getPlugin().getGetDamageBlue()).setScore(4); - } else { - objective.setDisplaySlot(DisplaySlot.SIDEBAR); - objective.getScore("§7Zeit: §a" + FightSystem.getPlugin().getFightTime()).setScore(0); - objective.getScore("§7Spieltyp: §e" + gameName).setScore(2); - } + 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: " + FightSystem.getPlugin().getDamageRed()).setScore(2); + if(Methods.isEnabled("WinConditions.PercentSystem")) objective.getScore("§eSchaden BLAU: " + FightSystem.getPlugin().getGetDamageBlue()).setScore(3); } player.setScoreboard(scoreboard); index++;