From c1261a4fa25fe098a6400ba854d9e2cef759a6a8 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 7 Jul 2020 17:56:35 +0200 Subject: [PATCH] First ranked (ranked saving still missing) Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/Config.java | 2 ++ .../src/de/steamwar/fightsystem/FightSystem.java | 8 +++++--- .../src/de/steamwar/fightsystem/fight/Fight.java | 2 +- .../de/steamwar/fightsystem/fight/FightTeam.java | 5 ++++- .../winconditions/RankedPlayerLeftWincondition.java | 13 +++++++++++++ 5 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 FightSystem_Main/src/de/steamwar/fightsystem/winconditions/RankedPlayerLeftWincondition.java diff --git a/FightSystem_API/src/de/steamwar/fightsystem/Config.java b/FightSystem_API/src/de/steamwar/fightsystem/Config.java index 6bc2361..81141b4 100644 --- a/FightSystem_API/src/de/steamwar/fightsystem/Config.java +++ b/FightSystem_API/src/de/steamwar/fightsystem/Config.java @@ -81,6 +81,7 @@ public class Config { public static final String TeamChatDetection; public static final UUID BlueLeader; public static final UUID RedLeader; + public static final boolean Ranked; //Active win conditions public static final boolean Timeout; @@ -372,6 +373,7 @@ public class Config { RedLeader = null; CheckSchemID = Integer.parseInt(System.getProperty("checkSchemID", "0")); + Ranked = Boolean.parseBoolean(System.getProperty("ranked", "false")); } public static boolean event(){ diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/FightSystem.java b/FightSystem_Main/src/de/steamwar/fightsystem/FightSystem.java index c03ce3c..422081d 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/FightSystem.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/FightSystem.java @@ -101,7 +101,7 @@ public class FightSystem extends JavaPlugin { mainCountdown = new NoPlayersOnlineCountdown(); - if(Config.event()) { + if(Config.event() || Config.Ranked) { Objects.requireNonNull(getCommand("invite")).setExecutor(new EventDummyCommand()); Objects.requireNonNull(getCommand("ready")).setExecutor(new EventDummyCommand()); Objects.requireNonNull(getCommand("ak")).setExecutor(new EventDummyCommand()); @@ -196,8 +196,6 @@ public class FightSystem extends JavaPlugin { } public static void setSpectateState(FightTeam winFightTeam, String windescription) { - if(!fightState.ingame()) - throw new SecurityException(fightState.name()); setFightState(FightState.SPECTATE); setAllPlayersGM(GameMode.SPECTATOR); @@ -222,6 +220,10 @@ public class FightSystem extends JavaPlugin { getEventFight().setErgebnis(2); } + if(Config.Ranked){ + //TODO + } + if(!Config.test()){ new SpectateOverCountdown(); FightStatistics.saveStats(winFightTeam, windescription); diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java index 9053ae2..49a14fb 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/Fight.java @@ -122,7 +122,7 @@ public class Fight { return; } - if(Config.IgnorePublicOnly || Config.event()){ + if(Config.IgnorePublicOnly || Config.event() || Config.Ranked){ schemRank = 1000; return; } diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java index 22e7a21..5ecebdb 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/fight/FightTeam.java @@ -8,6 +8,7 @@ import de.steamwar.fightsystem.IFightSystem; import de.steamwar.fightsystem.kit.KitManager; import de.steamwar.fightsystem.states.FightState; import de.steamwar.fightsystem.utils.*; +import de.steamwar.fightsystem.winconditions.RankedPlayerLeftWincondition; import de.steamwar.inventory.SWItem; import de.steamwar.sql.NoClipboardException; import de.steamwar.sql.PersonalKit; @@ -194,6 +195,8 @@ public class FightTeam implements IFightTeam{ if(!players.isEmpty()) { setLeader(players.iterator().next()); Bukkit.broadcastMessage(FightSystem.PREFIX + "§aDer Spieler §e" + this.leader.getPlayer().getName() + " §aist nun Leader von Team " + getColoredName() + "§a!"); + }else if(Config.Ranked){ + RankedPlayerLeftWincondition.leaderQuit(this); }else if(!Config.event()){ FightSystem.shutdown(FightSystem.PREFIX + "§cTeam " + getColoredName() + " §chat keine Spieler mehr.\n Arena schließt..."); } @@ -209,7 +212,7 @@ public class FightTeam implements IFightTeam{ else inventory.setItem(1, new ItemBuilder(Material.AIR).build()); - if(!Config.event()){ + if(!Config.event() && !Config.Ranked){ inventory.setItem(2, new ItemBuilder(Material.PAPER).removeAllAttributs().setDisplayName("§eSpieler einladen").build()); inventory.setItem(3, new ItemBuilder(SWItem.getMaterial("FIREWORK_CHARGE")).removeAllAttributs().setDisplayName("§cSpieler rauswerfen").build()); } diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/winconditions/RankedPlayerLeftWincondition.java b/FightSystem_Main/src/de/steamwar/fightsystem/winconditions/RankedPlayerLeftWincondition.java new file mode 100644 index 0000000..58473d8 --- /dev/null +++ b/FightSystem_Main/src/de/steamwar/fightsystem/winconditions/RankedPlayerLeftWincondition.java @@ -0,0 +1,13 @@ +package de.steamwar.fightsystem.winconditions; + +import de.steamwar.fightsystem.FightSystem; +import de.steamwar.fightsystem.fight.Fight; +import de.steamwar.fightsystem.fight.FightTeam; + +public class RankedPlayerLeftWincondition { + private RankedPlayerLeftWincondition(){} + + public static void leaderQuit(FightTeam leaderlessTeam){ + FightSystem.setSpectateState(Fight.getOpposite(leaderlessTeam), "LeaderQuit"); + } +}