From 2d03c39883cbce46f5546f00d4ffe1312f129c80 Mon Sep 17 00:00:00 2001 From: Yaruma3341 Date: Sun, 17 Feb 2019 20:29:32 +0100 Subject: [PATCH] Added method getFightPlayer() to Fight class; Code Cleanup PlayerDeathListener; Added WinConditions; Added Win/Lose/Undecided and give money to FightPlayers; Added money variables to config.yml; Signed-off-by: Yaruma3341 --- config.yml | 12 +++++-- src/me/yaruma/fightsystem/FightSystem.java | 35 ++++++++++++++---- src/me/yaruma/fightsystem/fight/Fight.java | 12 +++++++ .../listener/PlayerDeathListener.java | 2 +- .../fightsystem/winconditions/Methods.java | 12 +++++++ .../winconditions/WinconditionAllDead.java | 33 +++++++++++++++++ .../WinconditionCaptainDead.java | 36 +++++++++++++++++++ .../winconditions/WinconditionTimeout.java | 6 ++++ 8 files changed, 139 insertions(+), 9 deletions(-) create mode 100644 src/me/yaruma/fightsystem/winconditions/Methods.java create mode 100644 src/me/yaruma/fightsystem/winconditions/WinconditionAllDead.java create mode 100644 src/me/yaruma/fightsystem/winconditions/WinconditionCaptainDead.java create mode 100644 src/me/yaruma/fightsystem/winconditions/WinconditionTimeout.java diff --git a/config.yml b/config.yml index b24ed55..6174d9c 100644 --- a/config.yml +++ b/config.yml @@ -32,12 +32,20 @@ Output: GameName: AirWargear TeamChatDetection: + -ActiveWinConditions: +WinConditions: Timeout: boolean AllDead: boolean CaptainDead: boolean - Entern: boolean WinConditionParams: TimeoutTime: 0 EnterPhaseBegin: 0 + +Fight: + Entern: boolean + OnlyPublicSchematics: boolean + +Money: + Win: 0 + Lose: 0 + Undecided: 0 diff --git a/src/me/yaruma/fightsystem/FightSystem.java b/src/me/yaruma/fightsystem/FightSystem.java index c4bced3..3c03a2a 100644 --- a/src/me/yaruma/fightsystem/FightSystem.java +++ b/src/me/yaruma/fightsystem/FightSystem.java @@ -1,10 +1,9 @@ package me.yaruma.fightsystem; import com.sk89q.worldedit.bukkit.WorldEditPlugin; +import de.diamant.hunjy.CoinSystem.CoinSystem; import me.yaruma.fightsystem.commands.AkCommand; -import me.yaruma.fightsystem.fight.FightManager; -import me.yaruma.fightsystem.fight.FightState; -import me.yaruma.fightsystem.fight.FightTeam; +import me.yaruma.fightsystem.fight.*; import me.yaruma.fightsystem.listener.*; import me.yaruma.fightsystem.manager.FileManager; import me.yaruma.fightsystem.utils.countdown.Countdown; @@ -25,7 +24,6 @@ public class FightSystem extends JavaPlugin { private static FightSystem plugin; private FileManager fileManager; private FightManager fightManager; - private Coordinates coordinates; private FightState fightState; @@ -211,11 +209,36 @@ public class FightSystem extends JavaPlugin { this.fightState = FightState.SPECTATE; Bukkit.broadcastMessage(" "); - Bukkit.broadcastMessage(FightSystem.PREFIX + "§aDas Team von §6" + winFightTeam.getLeader().getPlayer().getName() + " §ahat gewonnen!"); - plugin.getFightManager().teleportAllToFightSpawn(); + + if(winFightTeam != null) { + + Bukkit.broadcastMessage(PREFIX + "§aDas Team von §6" + winFightTeam.getLeader().getPlayer().getName() + " §ahat gewonnen!"); + plugin.getFightManager().teleportAllToFightSpawn(); + + for(FightPlayer fightPlayer : winFightTeam.getPlayers()) { + CoinSystem.getCoinsManager(fightPlayer.getPlayer()).addCoins(getMoneyToPay("Money.Win")); + } + + for(FightPlayer fightPlayer : Fight.getOpposite(winFightTeam).getPlayers()) { + CoinSystem.getCoinsManager(fightPlayer.getPlayer()).addCoins(getMoneyToPay("Money.Lose")); + } + } else { + //Keine Message! Wird in FinishTimeOver gesendet! + for(FightPlayer fightPlayer : winFightTeam.getPlayers()) { + CoinSystem.getCoinsManager(fightPlayer.getPlayer()).addCoins(getMoneyToPay("Money.Undecided")); + } + + for(FightPlayer fightPlayer : Fight.getOpposite(winFightTeam).getPlayers()) { + CoinSystem.getCoinsManager(fightPlayer.getPlayer()).addCoins(getMoneyToPay("Money.Undecided")); + } + } } } + public int getMoneyToPay(String moneyPath) { + return fileManager.getIntegerFromConfig(moneyPath); + } + public static WorldEditPlugin getWorldEditPlugin() { return (WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit"); } diff --git a/src/me/yaruma/fightsystem/fight/Fight.java b/src/me/yaruma/fightsystem/fight/Fight.java index afecfc7..cfb29a0 100644 --- a/src/me/yaruma/fightsystem/fight/Fight.java +++ b/src/me/yaruma/fightsystem/fight/Fight.java @@ -42,6 +42,18 @@ public class Fight { redTeam.broadcast(message); } + public static FightPlayer getFightPlayer(Player player) { + if(redTeam.isPlayerInTeam(player)) { + FightPlayer fightPlayer = redTeam.getFightPlayer(player); + return fightPlayer; + } + if(blueTeam.isPlayerInTeam(player)) { + FightPlayer fightPlayer = blueTeam.getFightPlayer(player); + return fightPlayer; + } + return null; + } + public static FightTeam getRedTeam() { return redTeam; } diff --git a/src/me/yaruma/fightsystem/listener/PlayerDeathListener.java b/src/me/yaruma/fightsystem/listener/PlayerDeathListener.java index f42d61a..9a2a754 100644 --- a/src/me/yaruma/fightsystem/listener/PlayerDeathListener.java +++ b/src/me/yaruma/fightsystem/listener/PlayerDeathListener.java @@ -15,7 +15,7 @@ public class PlayerDeathListener implements Listener { @EventHandler public void handlePlayerDeath(PlayerDeathEvent event) { - Player player = event.getEntity(); + Player player = event.getEntity().getPlayer(); if(Fight.getPlayerTeam(player) == null) return; FightTeam fightTeam = Fight.getPlayerTeam(player); FightTeam oppositeFightTeam = Fight.getOpposite(fightTeam); diff --git a/src/me/yaruma/fightsystem/winconditions/Methods.java b/src/me/yaruma/fightsystem/winconditions/Methods.java new file mode 100644 index 0000000..f386831 --- /dev/null +++ b/src/me/yaruma/fightsystem/winconditions/Methods.java @@ -0,0 +1,12 @@ +package me.yaruma.fightsystem.winconditions; + +import me.yaruma.fightsystem.FightSystem; + +public class Methods { + + public static boolean isEnabled(String conditionPath) { + return FightSystem.getPlugin().getFileManager().getBooleanFromConfig(conditionPath) ? true : false; + } + + +} diff --git a/src/me/yaruma/fightsystem/winconditions/WinconditionAllDead.java b/src/me/yaruma/fightsystem/winconditions/WinconditionAllDead.java new file mode 100644 index 0000000..dda3d8e --- /dev/null +++ b/src/me/yaruma/fightsystem/winconditions/WinconditionAllDead.java @@ -0,0 +1,33 @@ +package me.yaruma.fightsystem.winconditions; + +import me.yaruma.fightsystem.FightSystem; +import me.yaruma.fightsystem.fight.Fight; +import me.yaruma.fightsystem.fight.FightPlayer; +import me.yaruma.fightsystem.fight.FightTeam; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; + +public class WinconditionAllDead implements Listener { + + FightSystem instance = FightSystem.getPlugin(); + + @EventHandler + public void handlePlayerDeath(PlayerDeathEvent event) { + if(!Methods.isEnabled("WinConditions.AllDead")) return; + Player player = event.getEntity().getPlayer(); + if(Fight.getPlayerTeam(player) == null) return; + FightTeam fightTeam = Fight.getPlayerTeam(player); + FightTeam oppositeFightTeam = Fight.getOpposite(fightTeam); + + if(fightTeam.allPlayersOut()) { + Bukkit.broadcastMessage(FightSystem.PREFIX + "§cAlle Spieler aus dem Team von " + fightTeam.getLeader().getPlayer().getName() + " §csind gestorben!"); + instance.setSpectateState(oppositeFightTeam); + return; + } + } + + +} diff --git a/src/me/yaruma/fightsystem/winconditions/WinconditionCaptainDead.java b/src/me/yaruma/fightsystem/winconditions/WinconditionCaptainDead.java new file mode 100644 index 0000000..e8db57c --- /dev/null +++ b/src/me/yaruma/fightsystem/winconditions/WinconditionCaptainDead.java @@ -0,0 +1,36 @@ +package me.yaruma.fightsystem.winconditions; + +import me.yaruma.fightsystem.FightSystem; +import me.yaruma.fightsystem.fight.Fight; +import me.yaruma.fightsystem.fight.FightTeam; +import me.yaruma.fightsystem.manager.FileManager; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; + +public class WinconditionCaptainDead implements Listener { + + FightSystem instance = FightSystem.getPlugin(); + FileManager fileManager = instance.getFileManager(); + + @EventHandler + public void handlePlayerDeath(PlayerDeathEvent event) { + if(!Methods.isEnabled("WinConditions.CaptainDead")) return; + Player player = event.getEntity().getPlayer(); + if(Fight.getPlayerTeam(player) == null) return; + FightTeam fightTeam = Fight.getPlayerTeam(player); + FightTeam oppositeFightTeam = Fight.getOpposite(fightTeam); + + String team = Fight.getRedTeam().isPlayerLeader(player) ? "Red" : "Blue"; + + if(fightTeam.isPlayerLeader(player)) { + Bukkit.broadcastMessage(FightSystem.PREFIX + "§cDer Leader von Team " + fileManager.getStringFromConfig("Output.Team" + team + "Color") + fileManager.getStringFromConfig("Output.Team" + team + "Name") + " §cist gestorben!"); + instance.setSpectateState(oppositeFightTeam); + return; + } + } + + +} diff --git a/src/me/yaruma/fightsystem/winconditions/WinconditionTimeout.java b/src/me/yaruma/fightsystem/winconditions/WinconditionTimeout.java new file mode 100644 index 0000000..5e81ccb --- /dev/null +++ b/src/me/yaruma/fightsystem/winconditions/WinconditionTimeout.java @@ -0,0 +1,6 @@ +package me.yaruma.fightsystem.winconditions; + +public class WinconditionTimeout { + + +}