From 39ccff44a529f49641f846bce278f2c64f118508 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 16 Sep 2021 12:43:22 +0200 Subject: [PATCH] Fix performance and bugs Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/commands/ReplayCommand.java | 6 +++++- src/de/steamwar/bungeecore/inventory/SWStreamInv.java | 4 ++-- src/de/steamwar/bungeecore/sql/Fight.java | 8 +++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/ReplayCommand.java b/src/de/steamwar/bungeecore/commands/ReplayCommand.java index 71d92806..df013917 100644 --- a/src/de/steamwar/bungeecore/commands/ReplayCommand.java +++ b/src/de/steamwar/bungeecore/commands/ReplayCommand.java @@ -26,6 +26,10 @@ public class ReplayCommand extends BasicCommand { //TODO Translate ProxiedPlayer player = (ProxiedPlayer) sender; new SWStreamInv<>(player, "Letzte Kämpfe", (click, fight) -> { + if(!fight.isReplayAvailable()) { + player.sendMessage("Replay nicht möglich"); + return; + } ArenaMode mode = fight.getGameMode(); if(mode == null){ player.sendMessage("Replay kann aufgrund deaktivertem Spielmodus nicht gestartet werden"); @@ -38,7 +42,7 @@ public class ReplayCommand extends BasicCommand { private SWItem getFightItem(ProxiedPlayer player, Fight fight) { String title = "§3" + (fight.getWin() == 1 ? "§l" : "") + fight.getBlueLeader().getUserName() + " §r§8vs §c" + (fight.getWin() == 2 ? "§l" : "") + fight.getRedLeader().getUserName(); - SWItem item = new SWItem("JUKEBOX", title); + SWItem item = new SWItem(fight.isReplayAvailable() ? "JUKEBOX" : "STONE", title); item.setLore(Arrays.asList( "§7" + fight.getStartTime().toString(), "§7" + fight.getServer(), diff --git a/src/de/steamwar/bungeecore/inventory/SWStreamInv.java b/src/de/steamwar/bungeecore/inventory/SWStreamInv.java index ef41dcb3..1235de0c 100644 --- a/src/de/steamwar/bungeecore/inventory/SWStreamInv.java +++ b/src/de/steamwar/bungeecore/inventory/SWStreamInv.java @@ -29,13 +29,13 @@ public class SWStreamInv extends SWInventory { else addItem(45, new SWItem("§7Seite zurück", 8), (InvCallback.ClickType click) -> {}); - if(entries.size() < 45) + if(entries.size() == 45) addItem(53, new SWItem("§eSeite vor", 10), (InvCallback.ClickType click) -> { page++; open(); }); else - addItem(53, new SWItem("§eSeite vor", 8), (InvCallback.ClickType click) -> {}); + addItem(53, new SWItem("§7Seite vor", 8), (InvCallback.ClickType click) -> {}); for(int i = 0; i < entries.size(); i++) { SWListInv.SWListEntry item = entries.get(i); diff --git a/src/de/steamwar/bungeecore/sql/Fight.java b/src/de/steamwar/bungeecore/sql/Fight.java index 50e16a80..f9172b16 100644 --- a/src/de/steamwar/bungeecore/sql/Fight.java +++ b/src/de/steamwar/bungeecore/sql/Fight.java @@ -11,7 +11,7 @@ import java.util.stream.Collectors; public class Fight { - private static final Statement getPage = new Statement("SELECT FightID, GameMode, Server, StartTime, Duration, BlueLeader, RedLeader, BlueSchem, RedSchem, Win, WinCondition FROM Fight WHERE Replay is not NULL ORDER BY FightID DESC LIMIT ?, ?"); + private static final Statement getPage = new Statement("SELECT FightID, GameMode, Server, StartTime, Duration, BlueLeader, RedLeader, BlueSchem, RedSchem, Win, WinCondition, Replay is not NULL AS ReplayAvailable FROM Fight ORDER BY FightID DESC LIMIT ?, ?"); private final int fightID; private final String gameMode; @@ -25,6 +25,7 @@ public class Fight { private final int redSchem; private final int win; private final String winCondition; + private final boolean replayAvailable; private final List bluePlayers = new ArrayList<>(); private final List redPlayers = new ArrayList<>(); @@ -41,6 +42,7 @@ public class Fight { redSchem = rs.getInt("RedSchem"); win = rs.getInt("Win"); winCondition = rs.getString("WinCondition"); + replayAvailable = rs.getBoolean("ReplayAvailable"); } private void initPlayers(List fightPlayers) { @@ -123,4 +125,8 @@ public class Fight { public List getRedPlayers() { return redPlayers; } + + public boolean isReplayAvailable() { + return replayAvailable; + } }