From 131134b8b8537f8c814aead0291a91e49151eb86 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 15 Oct 2020 21:15:54 +0200 Subject: [PATCH 01/16] Removing Developer exception Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/listeners/TablistManager.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/de/steamwar/bungeecore/listeners/TablistManager.java b/src/de/steamwar/bungeecore/listeners/TablistManager.java index 8e63258..d79be22 100644 --- a/src/de/steamwar/bungeecore/listeners/TablistManager.java +++ b/src/de/steamwar/bungeecore/listeners/TablistManager.java @@ -109,8 +109,6 @@ public class TablistManager extends BasicListener { ServerInfo server = pserver.getInfo(); String serverName = server.getName(); - if(serverName.equals("Developer")) - continue; Subserver subserver = Subserver.getSubserver(server); List players; From 38f90d025ae0a27cdb02f4a2357661ceac144ad3 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 18 Oct 2020 00:50:18 +0200 Subject: [PATCH 02/16] Allow HH:mm on /ban and /mute --- pom.xml | 2 +- .../bungeecore/commands/BanCommand.java | 20 ++++++++++++------- .../bungeecore/commands/MuteCommand.java | 8 ++++---- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index dbf2760..32086a5 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ - bungeecore + BungeeCore diff --git a/src/de/steamwar/bungeecore/commands/BanCommand.java b/src/de/steamwar/bungeecore/commands/BanCommand.java index 9382031..64aec3e 100644 --- a/src/de/steamwar/bungeecore/commands/BanCommand.java +++ b/src/de/steamwar/bungeecore/commands/BanCommand.java @@ -37,8 +37,8 @@ public class BanCommand extends BasicCommand { @Override public void execute(CommandSender sender, String[] args) { - if(args.length < 3){ - BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/ban [Spieler] [dd.mm.yyyy oder perma] [Grund]"); + if(args.length < 4){ + BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/ban [Spieler] [dd.mm.yyyy oder perma] [hh:mm] [Grund]"); return; } @@ -46,12 +46,12 @@ public class BanCommand extends BasicCommand { if(target == null) return; - Timestamp banTime = parseTime(sender, args[1]); + Timestamp banTime = parseTime(sender, String.join(args[1], args[2])); if(banTime == null) return; StringBuilder banReason = new StringBuilder(); - for (int i = 2; i < args.length; i++){ + for (int i = 3; i < args.length; i++){ banReason.append(args[i]).append(" "); } String msg = banReason.toString(); @@ -63,13 +63,19 @@ public class BanCommand extends BasicCommand { if(arg.equalsIgnoreCase("perma")) { return Timestamp.from(Instant.ofEpochSecond(946674800)); }else{ - SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy"); + SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm"); try{ Date parsedDate = dateFormat.parse(arg); return new java.sql.Timestamp(parsedDate.getTime()); }catch(ParseException e){ - BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "§cUngültige Zeitangabe."); - return null; + dateFormat = new SimpleDateFormat("dd.MM.yyyy"); + try{ + Date parsedDate = dateFormat.parse(arg.split(" ")[0]); + return new java.sql.Timestamp(parsedDate.getTime()); + }catch(ParseException exception){ + BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "§cUngültige Zeitangabe."); + return null; + } } } } diff --git a/src/de/steamwar/bungeecore/commands/MuteCommand.java b/src/de/steamwar/bungeecore/commands/MuteCommand.java index f3421aa..69cac56 100644 --- a/src/de/steamwar/bungeecore/commands/MuteCommand.java +++ b/src/de/steamwar/bungeecore/commands/MuteCommand.java @@ -33,8 +33,8 @@ public class MuteCommand extends BasicCommand { @Override public void execute(CommandSender sender, String[] args) { - if(args.length < 3){ - BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/mute [Spieler] [dd.mm.yyyy oder perma] [Grund]"); + if(args.length < 4){ + BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/mute [Spieler] [dd.mm.yyyy oder perma] [hh:mm] [Grund]"); return; } @@ -42,12 +42,12 @@ public class MuteCommand extends BasicCommand { if(target == null) return; - Timestamp muteTime = BanCommand.parseTime(sender, args[1]); + Timestamp muteTime = BanCommand.parseTime(sender, String.join(args[1], args[2])); if(muteTime == null) return; StringBuilder muteReason = new StringBuilder(); - for (int i = 2; i < args.length; i++){ + for (int i = 3; i < args.length; i++){ muteReason.append(args[i]).append(" "); } String msg = muteReason.toString(); From 50770242a7aab662f3b0c1a1d641511e1f385ed4 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 18 Oct 2020 16:07:48 +0200 Subject: [PATCH 03/16] Fixed Badlion not Disabling Mods --- .../bungeecore/listeners/mods/Badlion.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/de/steamwar/bungeecore/listeners/mods/Badlion.java b/src/de/steamwar/bungeecore/listeners/mods/Badlion.java index 1215624..b003616 100644 --- a/src/de/steamwar/bungeecore/listeners/mods/Badlion.java +++ b/src/de/steamwar/bungeecore/listeners/mods/Badlion.java @@ -3,6 +3,7 @@ package de.steamwar.bungeecore.listeners.mods; import de.steamwar.bungeecore.listeners.BasicListener; import net.md_5.bungee.api.event.PostLoginEvent; import net.md_5.bungee.event.EventHandler; +import net.md_5.bungee.protocol.packet.PluginMessage; public class Badlion extends BasicListener { @@ -22,17 +23,17 @@ public class Badlion extends BasicListener { "ToggleSprint":{"disabled":true} } */ - event.getPlayer().sendData("badlion:mods", ("{" + - "\"Clear Glass\":{\"disabled\":true}," + - "\"ClearWater\":{\"disabled\":true}," + - "\"FOV Changer\":{\"disabled\":true}," + - "\"Hitboxes\":{\"disabled\":true}," + - "\"MiniMap\":{\"disabled\":true}," + - "\"MLG Cobweb\":{\"disabled\":true}," + - "\"Replay\":{\"disabled\":true}," + - "\"Schematica\":{\"disabled\":true}," + - "\"ToggleSneak\":{\"disabled\":true}," + - "\"ToggleSprint\":{\"disabled\":true}" + - "}").getBytes()); + event.getPlayer().unsafe().sendPacket(new PluginMessage("badlion:mods", ("{" + + "\"Clear Glass\":{\"disabled\":true}," + + "\"ClearWater\":{\"disabled\":true}," + + "\"FOV Changer\":{\"disabled\":true}," + + "\"Hitboxes\":{\"disabled\":true}," + + "\"MiniMap\":{\"disabled\":true}," + + "\"MLG Cobweb\":{\"disabled\":true}," + + "\"Replay\":{\"disabled\":true}," + + "\"Schematica\":{\"disabled\":true}," + + "\"ToggleSneak\":{\"disabled\":true}," + + "\"ToggleSprint\":{\"disabled\":true}" + + "}").getBytes(), false)); } } From c3ff72373b20d10a2b2c80e6f424b1fc3e1aa5f4 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Tue, 20 Oct 2020 22:08:08 +0200 Subject: [PATCH 04/16] Fixing... --- pom.xml | 2 +- src/de/steamwar/bungeecore/commands/BanCommand.java | 2 +- src/de/steamwar/bungeecore/commands/MuteCommand.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 32086a5..dbf2760 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ - BungeeCore + bungeecore diff --git a/src/de/steamwar/bungeecore/commands/BanCommand.java b/src/de/steamwar/bungeecore/commands/BanCommand.java index 64aec3e..0368256 100644 --- a/src/de/steamwar/bungeecore/commands/BanCommand.java +++ b/src/de/steamwar/bungeecore/commands/BanCommand.java @@ -38,7 +38,7 @@ public class BanCommand extends BasicCommand { @Override public void execute(CommandSender sender, String[] args) { if(args.length < 4){ - BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/ban [Spieler] [dd.mm.yyyy oder perma] [hh:mm] [Grund]"); + BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/ban [Spieler] [dd.mm.yyyy oder perma] {hh:mm} [Grund]"); return; } diff --git a/src/de/steamwar/bungeecore/commands/MuteCommand.java b/src/de/steamwar/bungeecore/commands/MuteCommand.java index 69cac56..57e6aff 100644 --- a/src/de/steamwar/bungeecore/commands/MuteCommand.java +++ b/src/de/steamwar/bungeecore/commands/MuteCommand.java @@ -34,7 +34,7 @@ public class MuteCommand extends BasicCommand { @Override public void execute(CommandSender sender, String[] args) { if(args.length < 4){ - BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/mute [Spieler] [dd.mm.yyyy oder perma] [hh:mm] [Grund]"); + BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/mute [Spieler] [dd.mm.yyyy oder perma] {hh:mm} [Grund]"); return; } From a959b20370251bfd370c4b07e737cf3929616e91 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Tue, 20 Oct 2020 22:10:57 +0200 Subject: [PATCH 05/16] Fixing... --- src/de/steamwar/bungeecore/commands/BanCommand.java | 13 ++++++++++++- .../steamwar/bungeecore/commands/MuteCommand.java | 3 ++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/BanCommand.java b/src/de/steamwar/bungeecore/commands/BanCommand.java index 0368256..9ab6cad 100644 --- a/src/de/steamwar/bungeecore/commands/BanCommand.java +++ b/src/de/steamwar/bungeecore/commands/BanCommand.java @@ -51,7 +51,8 @@ public class BanCommand extends BasicCommand { return; StringBuilder banReason = new StringBuilder(); - for (int i = 3; i < args.length; i++){ + int start = hasTimestamp(args[2])?2:3; + for (int i = start; i < args.length; i++){ banReason.append(args[i]).append(" "); } String msg = banReason.toString(); @@ -79,4 +80,14 @@ public class BanCommand extends BasicCommand { } } } + + public static boolean hasTimestamp(String time) { + SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm"); + try{ + dateFormat.parse(time); + return true; + }catch(ParseException exception){ + return false; + } + } } diff --git a/src/de/steamwar/bungeecore/commands/MuteCommand.java b/src/de/steamwar/bungeecore/commands/MuteCommand.java index 57e6aff..9cc0ca9 100644 --- a/src/de/steamwar/bungeecore/commands/MuteCommand.java +++ b/src/de/steamwar/bungeecore/commands/MuteCommand.java @@ -47,7 +47,8 @@ public class MuteCommand extends BasicCommand { return; StringBuilder muteReason = new StringBuilder(); - for (int i = 3; i < args.length; i++){ + int start = BanCommand.hasTimestamp(args[2])?2:3; + for (int i = start; i < args.length; i++){ muteReason.append(args[i]).append(" "); } String msg = muteReason.toString(); From 25ed4e7f00513101ee03567bd97083a190b0b614 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Tue, 20 Oct 2020 22:16:47 +0200 Subject: [PATCH 06/16] Fixing... --- .../bungeecore/commands/BanCommand.java | 23 +++++-------------- .../bungeecore/commands/MuteCommand.java | 9 ++++---- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/BanCommand.java b/src/de/steamwar/bungeecore/commands/BanCommand.java index 9ab6cad..9ac7ff8 100644 --- a/src/de/steamwar/bungeecore/commands/BanCommand.java +++ b/src/de/steamwar/bungeecore/commands/BanCommand.java @@ -37,8 +37,8 @@ public class BanCommand extends BasicCommand { @Override public void execute(CommandSender sender, String[] args) { - if(args.length < 4){ - BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/ban [Spieler] [dd.mm.yyyy oder perma] {hh:mm} [Grund]"); + if(args.length < 3){ + BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/ban [Spieler] [dd.mm.yyyy oder dd.mm.yyyy_hh:mm oder perma] [Grund]"); return; } @@ -46,13 +46,12 @@ public class BanCommand extends BasicCommand { if(target == null) return; - Timestamp banTime = parseTime(sender, String.join(args[1], args[2])); + Timestamp banTime = parseTime(sender, args[1]); if(banTime == null) return; StringBuilder banReason = new StringBuilder(); - int start = hasTimestamp(args[2])?2:3; - for (int i = start; i < args.length; i++){ + for (int i = 2; i < args.length; i++){ banReason.append(args[i]).append(" "); } String msg = banReason.toString(); @@ -64,14 +63,14 @@ public class BanCommand extends BasicCommand { if(arg.equalsIgnoreCase("perma")) { return Timestamp.from(Instant.ofEpochSecond(946674800)); }else{ - SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm"); + SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy_HH:mm"); try{ Date parsedDate = dateFormat.parse(arg); return new java.sql.Timestamp(parsedDate.getTime()); }catch(ParseException e){ dateFormat = new SimpleDateFormat("dd.MM.yyyy"); try{ - Date parsedDate = dateFormat.parse(arg.split(" ")[0]); + Date parsedDate = dateFormat.parse(arg.split("_")[0]); return new java.sql.Timestamp(parsedDate.getTime()); }catch(ParseException exception){ BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "§cUngültige Zeitangabe."); @@ -80,14 +79,4 @@ public class BanCommand extends BasicCommand { } } } - - public static boolean hasTimestamp(String time) { - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm"); - try{ - dateFormat.parse(time); - return true; - }catch(ParseException exception){ - return false; - } - } } diff --git a/src/de/steamwar/bungeecore/commands/MuteCommand.java b/src/de/steamwar/bungeecore/commands/MuteCommand.java index 9cc0ca9..dc0d681 100644 --- a/src/de/steamwar/bungeecore/commands/MuteCommand.java +++ b/src/de/steamwar/bungeecore/commands/MuteCommand.java @@ -33,8 +33,8 @@ public class MuteCommand extends BasicCommand { @Override public void execute(CommandSender sender, String[] args) { - if(args.length < 4){ - BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/mute [Spieler] [dd.mm.yyyy oder perma] {hh:mm} [Grund]"); + if(args.length < 3){ + BungeeCore.send(sender, BungeeCore.CHAT_PREFIX + "/mute [Spieler] [dd.mm.yyyy oder dd.mm.yyyy_hh:mm oder perma] [Grund]"); return; } @@ -42,13 +42,12 @@ public class MuteCommand extends BasicCommand { if(target == null) return; - Timestamp muteTime = BanCommand.parseTime(sender, String.join(args[1], args[2])); + Timestamp muteTime = BanCommand.parseTime(sender, args[1]); if(muteTime == null) return; StringBuilder muteReason = new StringBuilder(); - int start = BanCommand.hasTimestamp(args[2])?2:3; - for (int i = start; i < args.length; i++){ + for (int i = 2; i < args.length; i++){ muteReason.append(args[i]).append(" "); } String msg = muteReason.toString(); From 67695b6ce35296bd64c2a0a041823b4b7c8d1af9 Mon Sep 17 00:00:00 2001 From: jojo Date: Sat, 24 Oct 2020 13:14:53 +0200 Subject: [PATCH 07/16] Fix Leader remove on /team --- src/de/steamwar/bungeecore/commands/TeamCommand.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/de/steamwar/bungeecore/commands/TeamCommand.java b/src/de/steamwar/bungeecore/commands/TeamCommand.java index 4d8ff64..601bd58 100644 --- a/src/de/steamwar/bungeecore/commands/TeamCommand.java +++ b/src/de/steamwar/bungeecore/commands/TeamCommand.java @@ -264,6 +264,11 @@ public class TeamCommand extends BasicCommand { return; } + if (team.getTeamLeader() == target.getId()) { + BungeeCore.send(player, BungeeCore.CHAT_PREFIX + "§cLeader entfernen sich nicht selbst"); + return; + } + if(teamInvitations.containsKey(target.getId())){ if(teamInvitations.get(target.getId()).remove((Integer) team.getTeamId())){ BungeeCore.send(player, BungeeCore.CHAT_PREFIX + "§7Die Einladung wurde zurückgezogen"); From b6973b73f72b4f689d6538d0255503d1e8600c84 Mon Sep 17 00:00:00 2001 From: jojo Date: Sat, 24 Oct 2020 14:52:14 +0200 Subject: [PATCH 08/16] Remove duplicate E-Mail exception in database --- src/de/steamwar/bungeecore/commands/WebregisterCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/commands/WebregisterCommand.java b/src/de/steamwar/bungeecore/commands/WebregisterCommand.java index acc8ed0..06ed25d 100644 --- a/src/de/steamwar/bungeecore/commands/WebregisterCommand.java +++ b/src/de/steamwar/bungeecore/commands/WebregisterCommand.java @@ -59,7 +59,7 @@ public class WebregisterCommand extends BasicCommand { break; case "email_exists": BungeeCore.send(player, BungeeCore.CHAT_PREFIX + "§cDie E-Mail hast du bereits für einen anderen Account verwendet..."); - SWException.log("Bungee", "Duplicate E-Mail", player.getName() + " " + args[0]); + // SWException.log("Bungee", "Duplicate E-Mail", player.getName() + " " + args[0]); break; case "invalid_email": BungeeCore.send(player, BungeeCore.CHAT_PREFIX + "§c[E-Mail], nicht [Freitext]!"); From 23cd9b2334bfe76ad652360b663719b49eaa6045 Mon Sep 17 00:00:00 2001 From: jojo Date: Sat, 24 Oct 2020 19:01:03 +0200 Subject: [PATCH 09/16] =?UTF-8?q?Remove=20PUB=20(=C3=96ffentlich)=20team?= =?UTF-8?q?=20from=20/team=20info=20after=20/softreload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/de/steamwar/bungeecore/sql/Team.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/sql/Team.java b/src/de/steamwar/bungeecore/sql/Team.java index e32049b..b44feb2 100644 --- a/src/de/steamwar/bungeecore/sql/Team.java +++ b/src/de/steamwar/bungeecore/sql/Team.java @@ -43,7 +43,9 @@ public class Team { teamKuerzel = kuerzel; teamName = name; teamLeader = leader; - teamCache.add(this); + if (leader != 0) { + teamCache.add(this); + } } private Team(ResultSet rs) throws SQLException { From bf895903f8d2046379f2af21c1946be68634b4a6 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sat, 24 Oct 2020 19:20:31 +0200 Subject: [PATCH 10/16] Fixing... --- src/de/steamwar/bungeecore/commands/FightCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/commands/FightCommand.java b/src/de/steamwar/bungeecore/commands/FightCommand.java index 91af7b6..aa0485a 100644 --- a/src/de/steamwar/bungeecore/commands/FightCommand.java +++ b/src/de/steamwar/bungeecore/commands/FightCommand.java @@ -128,7 +128,7 @@ public class FightCommand extends BasicCommand { if(!(sender instanceof ProxiedPlayer)) return; - if(Fabric.isFabric((ProxiedPlayer) sender)) { + if(Fabric.isFabric((ProxiedPlayer) sender) && !precommand.equals("/bau testarena")) { BungeeCore.send((ProxiedPlayer) sender, BungeeCore.CHAT_PREFIX + "§cHabe ich dir nicht gesagt, dass man mit Fabric nicht auf die Arenen darf?"); return; } From 055aaa2acad58a954d441489168fbb17bd8f3ad4 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 29 Oct 2020 12:06:12 +0100 Subject: [PATCH 11/16] Untested tablist name handling Signed-off-by: Lixfel --- .../bungeecore/comms/PacketIdManager.java | 2 ++ .../bungeecore/comms/SpigotReceiver.java | 2 ++ .../comms/handlers/TablistNameHandler.java | 21 +++++++++++++++++++ .../bungeecore/listeners/TablistManager.java | 4 ++++ 4 files changed, 29 insertions(+) create mode 100644 src/de/steamwar/bungeecore/comms/handlers/TablistNameHandler.java diff --git a/src/de/steamwar/bungeecore/comms/PacketIdManager.java b/src/de/steamwar/bungeecore/comms/PacketIdManager.java index 32d25e3..349c24e 100644 --- a/src/de/steamwar/bungeecore/comms/PacketIdManager.java +++ b/src/de/steamwar/bungeecore/comms/PacketIdManager.java @@ -23,6 +23,8 @@ public class PacketIdManager { //0x0(X) Standalone Packets public final static byte PING_PACKET = 0x01; + public final static byte TABLIST_NAME = 0x02; + //0x1(X) Bungee Inventory public final static byte INVENTORY_PACKET = 0x10; public final static byte INVENTORY_CALLBACK_PACKET = 0x11; diff --git a/src/de/steamwar/bungeecore/comms/SpigotReceiver.java b/src/de/steamwar/bungeecore/comms/SpigotReceiver.java index 9a8da48..b18b3a0 100644 --- a/src/de/steamwar/bungeecore/comms/SpigotReceiver.java +++ b/src/de/steamwar/bungeecore/comms/SpigotReceiver.java @@ -22,6 +22,7 @@ package de.steamwar.bungeecore.comms; import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteStreams; import de.steamwar.bungeecore.comms.handlers.InventoryCallbackHandler; +import de.steamwar.bungeecore.comms.handlers.TablistNameHandler; import de.steamwar.bungeecore.listeners.BasicListener; import net.md_5.bungee.api.event.PluginMessageEvent; import net.md_5.bungee.event.EventHandler; @@ -53,5 +54,6 @@ public class SpigotReceiver extends BasicListener { static { registerHandler(PacketIdManager.INVENTORY_CALLBACK_PACKET, new InventoryCallbackHandler()); + registerHandler(PacketIdManager.TABLIST_NAME, new TablistNameHandler()); } } diff --git a/src/de/steamwar/bungeecore/comms/handlers/TablistNameHandler.java b/src/de/steamwar/bungeecore/comms/handlers/TablistNameHandler.java new file mode 100644 index 0000000..bd5acbc --- /dev/null +++ b/src/de/steamwar/bungeecore/comms/handlers/TablistNameHandler.java @@ -0,0 +1,21 @@ +package de.steamwar.bungeecore.comms.handlers; + +import com.google.common.io.ByteArrayDataInput; +import de.steamwar.bungeecore.Subserver; +import de.steamwar.bungeecore.comms.SpigotHandler; +import de.steamwar.bungeecore.sql.SteamwarUser; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.connection.ProxiedPlayer; + +public class TablistNameHandler implements SpigotHandler { + + @Override + public void handle(ByteArrayDataInput byteArrayDataInput) { + ProxiedPlayer player = ProxyServer.getInstance().getPlayer( + SteamwarUser.get( + byteArrayDataInput.readInt() + ).getUuid() + ); + Subserver.getSubserver(player).getTablistNames().set(player, byteArrayDataInput.readUTF()); + } +} diff --git a/src/de/steamwar/bungeecore/listeners/TablistManager.java b/src/de/steamwar/bungeecore/listeners/TablistManager.java index d79be22..7f5d354 100644 --- a/src/de/steamwar/bungeecore/listeners/TablistManager.java +++ b/src/de/steamwar/bungeecore/listeners/TablistManager.java @@ -196,6 +196,10 @@ public class TablistManager extends BasicListener { } private String getTablistName(ProxiedPlayer p, boolean sameServer) { + String tablistName = Subserver.getSubserver(p).getTablistNames().get(p); + if(tablistName != null) + return tablistName; + StringBuilder st = new StringBuilder(); if (p.hasPermission("bungeecore.group.admin")) st.append("§4"); else if (p.hasPermission("bungeecore.group.developer")) st.append("§3"); From c2f3ab8094e833a11843cd8f798b10a5c3dcba73 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 29 Oct 2020 20:54:25 +0100 Subject: [PATCH 12/16] Fix errors in impl. Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/comms/PacketIdManager.java | 11 ++++++----- .../bungeecore/comms/handlers/TablistNameHandler.java | 8 ++------ 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/de/steamwar/bungeecore/comms/PacketIdManager.java b/src/de/steamwar/bungeecore/comms/PacketIdManager.java index 349c24e..b2c3300 100644 --- a/src/de/steamwar/bungeecore/comms/PacketIdManager.java +++ b/src/de/steamwar/bungeecore/comms/PacketIdManager.java @@ -20,13 +20,14 @@ package de.steamwar.bungeecore.comms; public class PacketIdManager { + private PacketIdManager(){} //0x0(X) Standalone Packets - public final static byte PING_PACKET = 0x01; - public final static byte TABLIST_NAME = 0x02; + public static final byte PING_PACKET = 0x01; + public static final byte TABLIST_NAME = 0x02; //0x1(X) Bungee Inventory - public final static byte INVENTORY_PACKET = 0x10; - public final static byte INVENTORY_CALLBACK_PACKET = 0x11; - public final static byte INVENTORY_CLOSE_PACKET = 0x12; + public static final byte INVENTORY_PACKET = 0x10; + public static final byte INVENTORY_CALLBACK_PACKET = 0x11; + public static final byte INVENTORY_CLOSE_PACKET = 0x12; } diff --git a/src/de/steamwar/bungeecore/comms/handlers/TablistNameHandler.java b/src/de/steamwar/bungeecore/comms/handlers/TablistNameHandler.java index bd5acbc..6f04943 100644 --- a/src/de/steamwar/bungeecore/comms/handlers/TablistNameHandler.java +++ b/src/de/steamwar/bungeecore/comms/handlers/TablistNameHandler.java @@ -11,11 +11,7 @@ public class TablistNameHandler implements SpigotHandler { @Override public void handle(ByteArrayDataInput byteArrayDataInput) { - ProxiedPlayer player = ProxyServer.getInstance().getPlayer( - SteamwarUser.get( - byteArrayDataInput.readInt() - ).getUuid() - ); - Subserver.getSubserver(player).getTablistNames().set(player, byteArrayDataInput.readUTF()); + ProxiedPlayer player = ProxyServer.getInstance().getPlayer(SteamwarUser.get(byteArrayDataInput.readInt()).getUuid()); + Subserver.getSubserver(player).getTablistNames().put(player, byteArrayDataInput.readUTF()); } } From f721cfaed6ea3de30d2eac07dff03f4156ddad28 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 30 Oct 2020 07:33:50 +0100 Subject: [PATCH 13/16] Hotfix NPE Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/listeners/TablistManager.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/bungeecore/listeners/TablistManager.java b/src/de/steamwar/bungeecore/listeners/TablistManager.java index 7f5d354..b24c10e 100644 --- a/src/de/steamwar/bungeecore/listeners/TablistManager.java +++ b/src/de/steamwar/bungeecore/listeners/TablistManager.java @@ -196,9 +196,12 @@ public class TablistManager extends BasicListener { } private String getTablistName(ProxiedPlayer p, boolean sameServer) { - String tablistName = Subserver.getSubserver(p).getTablistNames().get(p); - if(tablistName != null) - return tablistName; + Subserver server = Subserver.getSubserver(p); + if(server != null){ + String tablistName = server.getTablistNames().get(p); + if(tablistName != null) + return tablistName; + } StringBuilder st = new StringBuilder(); if (p.hasPermission("bungeecore.group.admin")) st.append("§4"); From b63b5f021c8b164d301b0de9efd1cb150cc9304c Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 30 Oct 2020 08:03:11 +0100 Subject: [PATCH 14/16] Shorten name for ranked matches Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/SubserverSystem.java | 8 ++++++-- src/de/steamwar/bungeecore/commands/RankedCommand.java | 5 ++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/de/steamwar/bungeecore/SubserverSystem.java b/src/de/steamwar/bungeecore/SubserverSystem.java index 66493aa..1f83898 100644 --- a/src/de/steamwar/bungeecore/SubserverSystem.java +++ b/src/de/steamwar/bungeecore/SubserverSystem.java @@ -82,8 +82,12 @@ public class SubserverSystem { //Generate missing parameters int port = freePort(2500); - if(serverName == null) - serverName = modus.getDisplayName() + (port - 2500); + if(serverName == null){ + if(ranked) + serverName = "Ranked" + (port - 2500); + else + serverName = modus.getDisplayName() + (port - 2500); + } if(mapName == null) mapName = serverName; diff --git a/src/de/steamwar/bungeecore/commands/RankedCommand.java b/src/de/steamwar/bungeecore/commands/RankedCommand.java index 5626f09..3f0914a 100644 --- a/src/de/steamwar/bungeecore/commands/RankedCommand.java +++ b/src/de/steamwar/bungeecore/commands/RankedCommand.java @@ -165,12 +165,11 @@ public class RankedCommand extends BasicCommand { removeFromAll(wp1.player); removeFromAll(wp2.player); - String serverName = wp1.player.getName() + " vs " + wp2.player.getName(); - Subserver arena = SubserverSystem.startArena(mode, mode.getRandomMap(), 0, 0, serverName, serverName.replace(' ', '_'), wp1.player.getUniqueId(), wp2.player.getUniqueId(), true); + Subserver arena = SubserverSystem.startArena(mode, mode.getRandomMap(), 0, 0, null, null, wp1.player.getUniqueId(), wp2.player.getUniqueId(), true); arena.sendPlayer(wp1.player); arena.sendPlayer(wp2.player); - BungeeCore.broadcast(BungeeCore.CHAT_PREFIX + "§7" + mode.getDisplayName() + "§8-§7Ranglistenspiel§8: §e" + serverName, + BungeeCore.broadcast(BungeeCore.CHAT_PREFIX + "§7" + mode.getDisplayName() + "§8-§7Ranglistenspiel§8: §e" + wp1.player.getName() + " vs " + wp2.player.getName(), "§aZuschauen", new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/join " + wp1.player.getName())); } From f39b7787d98120736193aa43df65718b923f2fd5 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 30 Oct 2020 14:49:45 +0100 Subject: [PATCH 15/16] Implementing event mode for event bungee Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/BungeeCore.java | 23 +++++++----- src/de/steamwar/bungeecore/EventStarter.java | 4 +++ .../bungeecore/commands/BauCommand.java | 3 ++ .../listeners/EventModeListener.java | 36 +++++++++++++++++++ src/de/steamwar/bungeecore/sql/Event.java | 5 +++ 5 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 src/de/steamwar/bungeecore/listeners/EventModeListener.java diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index 466f971..25ccdf6 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -62,6 +62,7 @@ public class BungeeCore extends Plugin { public static String LOBBY_SERVER; public static String USERWORLDS15; public static String BAUWELT15; + public static boolean EVENT_MODE; private static BungeeCore instance; @@ -97,17 +98,14 @@ public class BungeeCore extends Plugin { new MsgCommand(); new RCommand(); new PingCommand(); - new WebregisterCommand(); new AlertCommand(); new KickCommand(); new JoinmeCommand(); new TpCommand(); - new FightCommand(); new HelpCommand(); new BanCommand(); new UnbanCommand(); new DenyCommand("watchcat", "wc"); - new ChallengeCommand(); new TeamCommand(); new ServerTeamchatCommand(); new EventCommand(); @@ -118,18 +116,26 @@ public class BungeeCore extends Plugin { new BugCommand(); new WhoisCommand(); new RegelnCommand(); - new HistoricCommand(); - new CheckCommand(); - new RankedCommand(); new RankCommand(); new IgnoreCommand(); new UnIgnoreCommand(); + if(!EVENT_MODE){ + new WebregisterCommand(); + new FightCommand(); + new ChallengeCommand(); + new HistoricCommand(); + new CheckCommand(); + new RankedCommand(); + + new Broadcaster(); + }else{ + new EventModeListener(); + } + new EventStarter(); - new Broadcaster(); new SessionManager(); new SpigotReceiver(); - new TablistManager(); getProxy().getScheduler().schedule(this, () -> { @@ -226,6 +232,7 @@ public class BungeeCore extends Plugin { LOBBY_SERVER = config.getString("lobbyserver"); USERWORLDS15 = config.getString("userworlds15"); BAUWELT15 = config.getString("bauwelt15"); + EVENT_MODE = config.getBoolean("eventmode"); Broadcaster.setBroadCastMsgs(config.getStringList("broadcasts").toArray(new String[1])); PollSystem.init(config.getString("poll.question"), config.getStringList("poll.answers")); CheckCommand.loadCheckQuestions(config.getSection("checkquestions")); diff --git a/src/de/steamwar/bungeecore/EventStarter.java b/src/de/steamwar/bungeecore/EventStarter.java index e2a44f8..9cb1eaf 100644 --- a/src/de/steamwar/bungeecore/EventStarter.java +++ b/src/de/steamwar/bungeecore/EventStarter.java @@ -19,6 +19,7 @@ package de.steamwar.bungeecore; +import de.steamwar.bungeecore.sql.Event; import de.steamwar.bungeecore.sql.EventFight; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.bungeecore.sql.Team; @@ -58,6 +59,9 @@ public class EventStarter implements Runnable { EventFight next; while((next = nextFight(fights)) != null){ + if(!BungeeCore.EVENT_MODE && Event.get(next.getEventID()).spectateSystem()) + break; //Don't start EventServer if not the event bungee + Team blue = Team.get(next.getTeamBlue()); Team red = Team.get(next.getTeamRed()); String serverName = blue.getTeamKuerzel() + " vs " + red.getTeamKuerzel(); diff --git a/src/de/steamwar/bungeecore/commands/BauCommand.java b/src/de/steamwar/bungeecore/commands/BauCommand.java index 045e1bb..3385650 100644 --- a/src/de/steamwar/bungeecore/commands/BauCommand.java +++ b/src/de/steamwar/bungeecore/commands/BauCommand.java @@ -37,6 +37,9 @@ public class BauCommand { private static final String UNKNOWN_PLAYER = BungeeCore.CHAT_PREFIX + "§cUnbekannter Spieler"; public static void onBau(ChatEvent e, String[] command){ + if(BungeeCore.EVENT_MODE) + return; + ProxiedPlayer p = (ProxiedPlayer) e.getSender(); Subserver server = Subserver.getSubserver(p); Bauserver bau = (server != null && server.getType() == Servertype.BAUSERVER) ? (Bauserver)server : null; diff --git a/src/de/steamwar/bungeecore/listeners/EventModeListener.java b/src/de/steamwar/bungeecore/listeners/EventModeListener.java new file mode 100644 index 0000000..c5bc256 --- /dev/null +++ b/src/de/steamwar/bungeecore/listeners/EventModeListener.java @@ -0,0 +1,36 @@ +package de.steamwar.bungeecore.listeners; + +import de.steamwar.bungeecore.sql.Event; +import de.steamwar.bungeecore.sql.EventFight; +import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.bungeecore.sql.TeamTeilnahme; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.event.PostLoginEvent; +import net.md_5.bungee.event.EventHandler; + +public class EventModeListener extends BasicListener { + + private static final BaseComponent[] nonParticipant = TextComponent.fromLegacyText("§cDu bist kein Eventteilnehmer."); + + @EventHandler + public void onPostLogin(PostLoginEvent e) { + SteamwarUser user = SteamwarUser.get(e.getPlayer().getUniqueId()); + + Event event = Event.get(); + if(event == null){ + e.getPlayer().disconnect(nonParticipant); + return; + } + + if(TeamTeilnahme.nimmtTeil(user.getTeam(), event.getEventID())) + return; + + for(EventFight eventFight : EventFight.getEvent(event.getEventID())){ + if(eventFight.getKampfleiter() == user.getId()) + return; + } + + e.getPlayer().disconnect(nonParticipant); + } +} diff --git a/src/de/steamwar/bungeecore/sql/Event.java b/src/de/steamwar/bungeecore/sql/Event.java index fae76cd..336128e 100644 --- a/src/de/steamwar/bungeecore/sql/Event.java +++ b/src/de/steamwar/bungeecore/sql/Event.java @@ -36,6 +36,7 @@ public class Event { private final Timestamp end; private final int maximumTeamMembers; private final boolean publicSchemsOnly; + private final boolean spectateSystem; private static Event current = null; @@ -46,6 +47,7 @@ public class Event { this.end = rs.getTimestamp("End"); this.maximumTeamMembers = rs.getInt("MaximumTeamMembers"); this.publicSchemsOnly = rs.getBoolean("PublicSchemsOnly"); + this.spectateSystem = rs.getBoolean("SpectateSystem"); } public static Event get(){ @@ -128,4 +130,7 @@ public class Event { public boolean publicSchemsOnly() { return publicSchemsOnly; } + public boolean spectateSystem(){ + return spectateSystem; + } } From 84c2c2f825b83ccc091a8cbb986b0615c5aaa4a0 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 30 Oct 2020 15:16:34 +0100 Subject: [PATCH 16/16] Fix port clash Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/SubserverSystem.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/de/steamwar/bungeecore/SubserverSystem.java b/src/de/steamwar/bungeecore/SubserverSystem.java index 66493aa..3fcb39a 100644 --- a/src/de/steamwar/bungeecore/SubserverSystem.java +++ b/src/de/steamwar/bungeecore/SubserverSystem.java @@ -41,6 +41,15 @@ public class SubserverSystem { private static final String SERVER_PATH = BACKBONE + "server/"; private static final String EVENT_PATH = BACKBONE + "event/"; + private static final int firstArenaPort; + + static { + if(BungeeCore.EVENT_MODE) + firstArenaPort = 6000; + else + firstArenaPort = 2500; + } + /** * This function starts every arena (even test- and eventarenas). * @@ -80,10 +89,10 @@ public class SubserverSystem { */ public static Subserver startArena(ArenaMode modus, String map, int eventFightID, int checkSchemID, String serverName, String mapName, UUID player1, UUID player2, boolean ranked){ //Generate missing parameters - int port = freePort(2500); + int port = freePort(firstArenaPort); if(serverName == null) - serverName = modus.getDisplayName() + (port - 2500); + serverName = modus.getDisplayName() + (port - firstArenaPort); if(mapName == null) mapName = serverName;