From ae2a1d5779ebd65b4ed5f61cba1f01037c3bda9b Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 14 Jun 2022 20:10:07 +0200 Subject: [PATCH 01/39] Update ArenaCommand --- .../bungeecore/commands/ArenaCommand.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/ArenaCommand.java b/src/de/steamwar/bungeecore/commands/ArenaCommand.java index 339c66a..929510f 100644 --- a/src/de/steamwar/bungeecore/commands/ArenaCommand.java +++ b/src/de/steamwar/bungeecore/commands/ArenaCommand.java @@ -19,30 +19,26 @@ package de.steamwar.bungeecore.commands; -import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.Servertype; import de.steamwar.bungeecore.Subserver; -import net.md_5.bungee.api.CommandSender; +import de.steamwar.command.SWCommand; +import de.steamwar.messages.ChatSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; -public class ArenaCommand extends BasicCommand { +public class ArenaCommand extends SWCommand { public ArenaCommand() { - super("arena", null); + super("arena"); } - @Override - public void execute(CommandSender sender, String[] args) { - if(!(sender instanceof ProxiedPlayer)) - return; - ProxiedPlayer player = (ProxiedPlayer) sender; - - ServerInfo server = ProxyServer.getInstance().getServerInfo(String.join(" ", args)); + @Register + public void arenaJoin(ProxiedPlayer player, String... serverInfo) { + ServerInfo server = ProxyServer.getInstance().getServerInfo(String.join(" ", serverInfo)); Subserver subserver = Subserver.getSubserver(server); if(server == null || subserver == null || subserver.getType() != Servertype.ARENA) { - Message.send("ARENA_NOT_FOUND", player); + ChatSender.of(player).system("ARENA_NOT_FOUND"); return; } From 5c55bdacdec610469cb782a162f53d39f4309e4b Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 14 Jun 2022 20:16:36 +0200 Subject: [PATCH 02/39] Add tab completion to ArenaCommand --- .../bungeecore/commands/ArenaCommand.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/ArenaCommand.java b/src/de/steamwar/bungeecore/commands/ArenaCommand.java index 929510f..2108fa7 100644 --- a/src/de/steamwar/bungeecore/commands/ArenaCommand.java +++ b/src/de/steamwar/bungeecore/commands/ArenaCommand.java @@ -22,11 +22,16 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Servertype; import de.steamwar.bungeecore.Subserver; import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeMapper; import de.steamwar.messages.ChatSender; +import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; +import java.util.Collection; +import java.util.stream.Collectors; + public class ArenaCommand extends SWCommand { public ArenaCommand() { @@ -34,8 +39,7 @@ public class ArenaCommand extends SWCommand { } @Register - public void arenaJoin(ProxiedPlayer player, String... serverInfo) { - ServerInfo server = ProxyServer.getInstance().getServerInfo(String.join(" ", serverInfo)); + public void arenaJoin(ProxiedPlayer player, ServerInfo server) { Subserver subserver = Subserver.getSubserver(server); if(server == null || subserver == null || subserver.getType() != Servertype.ARENA) { ChatSender.of(player).system("ARENA_NOT_FOUND"); @@ -44,4 +48,22 @@ public class ArenaCommand extends SWCommand { TpCommand.teleport(player, server); } + + @ClassMapper(ServerInfo.class) + public TypeMapper serverInfoTypeMapper() { + return new TypeMapper() { + @Override + public ServerInfo map(CommandSender commandSender, String[] previousArguments, String s) { + return ProxyServer.getInstance().getServerInfo(s); + } + + @Override + public Collection tabCompletes(CommandSender sender, String[] previousArguments, String s) { + return ProxyServer.getInstance().getServersCopy().values().stream().filter(server -> { + Subserver subserver = Subserver.getSubserver(server); + return subserver != null && subserver.getType() == Servertype.ARENA; + }).map(ServerInfo::getName).collect(Collectors.toList()); + } + }; + } } From cfa1ccc4b84802e09a25a980c919c6604bee2dfd Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 15 Jul 2022 22:57:35 +0200 Subject: [PATCH 03/39] Test 1.19 OpenJDK Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/Node.java | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/de/steamwar/bungeecore/Node.java b/src/de/steamwar/bungeecore/Node.java index f07293a..6d67b89 100644 --- a/src/de/steamwar/bungeecore/Node.java +++ b/src/de/steamwar/bungeecore/Node.java @@ -81,6 +81,8 @@ public abstract class Node { protected void constructServerstart(File directory, List cmd, String serverJar, String worldDir, String levelName, int port, String xmx, String... dParams) { if (JAVA_8.contains(serverJar)) cmd.add("/usr/lib/jvm/java-8-openj9-amd64/bin/java"); + else if(serverJar.equals("paper-1.19.jar")) + cmd.add("/usr/lib/jvm/java-17-openjdk-amd64/bin/java"); else cmd.add("java"); @@ -88,8 +90,30 @@ public abstract class Node { cmd.add("-D" + param); } cmd.add("-Xmx" + xmx); - cmd.add("-Xshareclasses:nonfatal,name=" + directory.getName()); - cmd.addAll(OPENJ9_ARGS); + if(serverJar.equals("paper-1.19.jar")) { + cmd.add("-XX:+UseG1GC"); + cmd.add("-XX:+ParallelRefProcEnabled"); + cmd.add("-XX:MaxGCPauseMillis=200"); + cmd.add("-XX:+UnlockExperimentalVMOptions"); + cmd.add("-XX:+DisableExplicitGC"); + cmd.add("-XX:+AlwaysPreTouch"); + cmd.add("-XX:G1NewSizePercent=30"); + cmd.add("-XX:G1MaxNewSizePercent=40"); + cmd.add("-XX:G1HeapRegionSize=8M"); + cmd.add("-XX:G1ReservePercent=20"); + cmd.add("-XX:G1HeapWastePercent=5"); + cmd.add("-XX:G1MixedGCCountTarget=4"); + cmd.add("-XX:InitiatingHeapOccupancyPercent=15"); + cmd.add("-XX:G1MixedGCLiveThresholdPercent=90"); + cmd.add("-XX:G1RSetUpdatingPauseTimePercent=5"); + cmd.add("-XX:SurvivorRatio=32"); + cmd.add("-XX:+PerfDisableSharedMem"); + cmd.add("-XX:MaxTenuringThreshold=1"); + } else { + cmd.add("-Xshareclasses:nonfatal,name=" + directory.getName()); + cmd.addAll(OPENJ9_ARGS); + } + if (!JAVA_8.contains(serverJar)) { cmd.add("--add-opens"); cmd.add("java.base/jdk.internal.misc=ALL-UNNAMED"); From c79f49b166017d2c3fc44712b7022b98c5924c35 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sun, 17 Jul 2022 16:31:55 +0200 Subject: [PATCH 04/39] Remove OpenJDK Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/Node.java | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/src/de/steamwar/bungeecore/Node.java b/src/de/steamwar/bungeecore/Node.java index 6d67b89..f07293a 100644 --- a/src/de/steamwar/bungeecore/Node.java +++ b/src/de/steamwar/bungeecore/Node.java @@ -81,8 +81,6 @@ public abstract class Node { protected void constructServerstart(File directory, List cmd, String serverJar, String worldDir, String levelName, int port, String xmx, String... dParams) { if (JAVA_8.contains(serverJar)) cmd.add("/usr/lib/jvm/java-8-openj9-amd64/bin/java"); - else if(serverJar.equals("paper-1.19.jar")) - cmd.add("/usr/lib/jvm/java-17-openjdk-amd64/bin/java"); else cmd.add("java"); @@ -90,30 +88,8 @@ public abstract class Node { cmd.add("-D" + param); } cmd.add("-Xmx" + xmx); - if(serverJar.equals("paper-1.19.jar")) { - cmd.add("-XX:+UseG1GC"); - cmd.add("-XX:+ParallelRefProcEnabled"); - cmd.add("-XX:MaxGCPauseMillis=200"); - cmd.add("-XX:+UnlockExperimentalVMOptions"); - cmd.add("-XX:+DisableExplicitGC"); - cmd.add("-XX:+AlwaysPreTouch"); - cmd.add("-XX:G1NewSizePercent=30"); - cmd.add("-XX:G1MaxNewSizePercent=40"); - cmd.add("-XX:G1HeapRegionSize=8M"); - cmd.add("-XX:G1ReservePercent=20"); - cmd.add("-XX:G1HeapWastePercent=5"); - cmd.add("-XX:G1MixedGCCountTarget=4"); - cmd.add("-XX:InitiatingHeapOccupancyPercent=15"); - cmd.add("-XX:G1MixedGCLiveThresholdPercent=90"); - cmd.add("-XX:G1RSetUpdatingPauseTimePercent=5"); - cmd.add("-XX:SurvivorRatio=32"); - cmd.add("-XX:+PerfDisableSharedMem"); - cmd.add("-XX:MaxTenuringThreshold=1"); - } else { - cmd.add("-Xshareclasses:nonfatal,name=" + directory.getName()); - cmd.addAll(OPENJ9_ARGS); - } - + cmd.add("-Xshareclasses:nonfatal,name=" + directory.getName()); + cmd.addAll(OPENJ9_ARGS); if (!JAVA_8.contains(serverJar)) { cmd.add("--add-opens"); cmd.add("java.base/jdk.internal.misc=ALL-UNNAMED"); From b80827ed1eb3b6395830086fca0a59be2955d942 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sun, 17 Jul 2022 17:12:48 +0200 Subject: [PATCH 05/39] Fix local colorcodes Signed-off-by: Lixfel --- .../bungeecore/listeners/ChatListener.java | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/src/de/steamwar/bungeecore/listeners/ChatListener.java b/src/de/steamwar/bungeecore/listeners/ChatListener.java index a815f6a..b632ef1 100644 --- a/src/de/steamwar/bungeecore/listeners/ChatListener.java +++ b/src/de/steamwar/bungeecore/listeners/ChatListener.java @@ -82,27 +82,27 @@ public class ChatListener extends BasicListener { } public static void sendChat(ChatSender sender, Stream receivers, String format, ChatSender msgReceiver, String message) { - String finalMessage = modifyFilter(sender, message); - if(finalMessage == null) + if(chatFilter(sender, message)) return; SteamwarUser user = sender.user(); + String coloredMessage = (user.getUserGroup() != UserGroup.Member || coloredTeams.contains(user.getTeam())) ? ChatColor.translateAlternateColorCodes('&', message) : message; AtomicBoolean noReceiver = new AtomicBoolean(true); receivers.filter(ChatSender::chatShown).forEach(player -> { if(sender.user().getId() != player.user().getId()) noReceiver.set(false); - chatToReciever(player, msgReceiver, user, format, finalMessage); + chatToReciever(player, msgReceiver, user, format, coloredMessage); }); - chatToReciever(ChatSender.console(), msgReceiver, user, format, finalMessage); + chatToReciever(ChatSender.console(), msgReceiver, user, format, coloredMessage); if(format.equals("CHAT_GLOBAL")) { if (SteamwarDiscordBot.instance() != null) - chatToReciever(ChatSender.discordChannel(SteamwarDiscordBot.instance().getIngameChatListener()), msgReceiver, user, format, finalMessage); + chatToReciever(ChatSender.discordChannel(SteamwarDiscordBot.instance().getIngameChatListener()), msgReceiver, user, format, coloredMessage); } else if (format.equals("CHAT_SERVERTEAM")) { if (SteamwarDiscordBot.instance() != null) - chatToReciever(ChatSender.discordChannel(SteamwarDiscordBot.instance().getServerTeamChatListener()), msgReceiver, user, format, finalMessage); + chatToReciever(ChatSender.discordChannel(SteamwarDiscordBot.instance().getServerTeamChatListener()), msgReceiver, user, format, coloredMessage); } else if (noReceiver.get()) { sender.system("CHAT_NO_RECEIVER"); } @@ -119,40 +119,35 @@ public class ChatListener extends BasicListener { if(ChatListener.filteredCommand(player, message)) return; - if(!message.startsWith("/")) { - message = modifyFilter(sender, message); - if(message == null) - return; - } + + if(!message.startsWith("/") && chatFilter(sender, message)) + return; Chat19.chat(player, message); } - private static String modifyFilter(ChatSender sender, String message) { + private static boolean chatFilter(ChatSender sender, String message) { if(!sender.chatShown()) { sender.system("CHAT_RECEIVE"); - return null; + return true; } SteamwarUser user = sender.user(); UserGroup group = user.getUserGroup(); if(!group.isTeamGroup() && (message.contains("http:") || message.contains("https:") || message.contains("www."))){ sender.system("CHAT_NO_LINKS"); - return null; + return true; } if (user.isPunishedWithMessage(sender, Punishment.PunishmentType.Mute)) - return null; - - if(group != UserGroup.Member || coloredTeams.contains(user.getTeam())) - message = ChatColor.translateAlternateColorCodes('&', message); + return true; if (message.contains("LIXFEL")) specialAlert(sender, "Lixfel", "CHAT_LIXFEL_", 3, 6, 11, 12, 15); if (message.contains("YOYONOW")) specialAlert(sender, "YoyoNow", "CHAT_YOYONOW_", 3, 6, 11, 12); - return message; + return false; } private static void chatToReciever(ChatSender receiver, ChatSender msgReceiver, SteamwarUser sender, String format, String message) { From 3053d5d3012bdbcfdffd3e7ac93aec85e9b953b7 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sun, 17 Jul 2022 17:31:11 +0200 Subject: [PATCH 06/39] Fix empty messages Signed-off-by: Lixfel --- .../steamwar/bungeecore/listeners/ChatListener.java | 12 ++++++++---- src/de/steamwar/messages/BungeeCore.properties | 1 + src/de/steamwar/messages/BungeeCore_de.properties | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/de/steamwar/bungeecore/listeners/ChatListener.java b/src/de/steamwar/bungeecore/listeners/ChatListener.java index b632ef1..df006f9 100644 --- a/src/de/steamwar/bungeecore/listeners/ChatListener.java +++ b/src/de/steamwar/bungeecore/listeners/ChatListener.java @@ -82,11 +82,10 @@ public class ChatListener extends BasicListener { } public static void sendChat(ChatSender sender, Stream receivers, String format, ChatSender msgReceiver, String message) { - if(chatFilter(sender, message)) - return; - SteamwarUser user = sender.user(); - String coloredMessage = (user.getUserGroup() != UserGroup.Member || coloredTeams.contains(user.getTeam())) ? ChatColor.translateAlternateColorCodes('&', message) : message; + final String coloredMessage = (user.getUserGroup() != UserGroup.Member || coloredTeams.contains(user.getTeam())) ? ChatColor.translateAlternateColorCodes('&', message) : message; + if(chatFilter(sender, coloredMessage)) + return; AtomicBoolean noReceiver = new AtomicBoolean(true); receivers.filter(ChatSender::chatShown).forEach(player -> { @@ -132,6 +131,11 @@ public class ChatListener extends BasicListener { return true; } + if(message.replace("§[a-f0-9klmno]", "").trim().isEmpty()) { + sender.system("CHAT_EMPTY"); + return true; + } + SteamwarUser user = sender.user(); UserGroup group = user.getUserGroup(); if(!group.isTeamGroup() && (message.contains("http:") || message.contains("https:") || message.contains("www."))){ diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties index 7dfaa7c..58633d2 100644 --- a/src/de/steamwar/messages/BungeeCore.properties +++ b/src/de/steamwar/messages/BungeeCore.properties @@ -521,6 +521,7 @@ CHAT_RECEIVE=§cTo be able to send chat messages, you must also receive them! CHAT_NO_LINKS=§cYou may not send links. CHAT_BC_USAGE=§8/§7bc §8[§emessage§8] CHAT_NO_RECEIVER=§cNobody receives your message +CHAT_EMPTY=§cDon't write meaningless empty messages. CHAT_SERVERTEAM=§8STC §e{0}§8» §f{2} CHAT_GLOBAL={3}{4}{5}{6}{0}§8» {7}{2} diff --git a/src/de/steamwar/messages/BungeeCore_de.properties b/src/de/steamwar/messages/BungeeCore_de.properties index 6fc780b..0c93d45 100644 --- a/src/de/steamwar/messages/BungeeCore_de.properties +++ b/src/de/steamwar/messages/BungeeCore_de.properties @@ -500,6 +500,7 @@ CHAT_RECEIVE=§cUm Chatnachrichten versenden zu können, musst du auch welche em CHAT_NO_LINKS=§cDu darfst keine Links versenden. CHAT_BC_USAGE=§8/§7bc §8[§eNachricht§8] CHAT_NO_RECEIVER=§cNiemand empfängt deine Nachricht +CHAT_EMPTY=§cSchreibe keine inhaltslosen Nachrichten. CHAT_SERVERTEAM=§8STC §e{0}§8» §f{2} CHAT_GLOBAL={3}{4}{5}{6}{0}§8» {7}{2} From 3a54797d07c39e50a649da158b7f7f8db7e832c4 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sun, 17 Jul 2022 17:34:15 +0200 Subject: [PATCH 07/39] Use strip Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/listeners/ChatListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/listeners/ChatListener.java b/src/de/steamwar/bungeecore/listeners/ChatListener.java index df006f9..ba37c77 100644 --- a/src/de/steamwar/bungeecore/listeners/ChatListener.java +++ b/src/de/steamwar/bungeecore/listeners/ChatListener.java @@ -131,7 +131,7 @@ public class ChatListener extends BasicListener { return true; } - if(message.replace("§[a-f0-9klmno]", "").trim().isEmpty()) { + if(message.replace("§[a-f0-9klmno]", "").strip().isEmpty()) { sender.system("CHAT_EMPTY"); return true; } From e30f4cc2eebd3b98522b9ef6b4d8a61ca63cc728 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sun, 17 Jul 2022 17:36:27 +0200 Subject: [PATCH 08/39] Fix strip Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/listeners/ChatListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/listeners/ChatListener.java b/src/de/steamwar/bungeecore/listeners/ChatListener.java index ba37c77..df006f9 100644 --- a/src/de/steamwar/bungeecore/listeners/ChatListener.java +++ b/src/de/steamwar/bungeecore/listeners/ChatListener.java @@ -131,7 +131,7 @@ public class ChatListener extends BasicListener { return true; } - if(message.replace("§[a-f0-9klmno]", "").strip().isEmpty()) { + if(message.replace("§[a-f0-9klmno]", "").trim().isEmpty()) { sender.system("CHAT_EMPTY"); return true; } From 183248c0b10c38e1e4920a719f72819f2bc8ebef Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sun, 17 Jul 2022 20:38:59 +0200 Subject: [PATCH 09/39] Update ArenaCommand --- .../bungeecore/commands/ArenaCommand.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/ArenaCommand.java b/src/de/steamwar/bungeecore/commands/ArenaCommand.java index 2108fa7..b73d6d2 100644 --- a/src/de/steamwar/bungeecore/commands/ArenaCommand.java +++ b/src/de/steamwar/bungeecore/commands/ArenaCommand.java @@ -39,22 +39,25 @@ public class ArenaCommand extends SWCommand { } @Register - public void arenaJoin(ProxiedPlayer player, ServerInfo server) { - Subserver subserver = Subserver.getSubserver(server); - if(server == null || subserver == null || subserver.getType() != Servertype.ARENA) { - ChatSender.of(player).system("ARENA_NOT_FOUND"); - return; - } - - TpCommand.teleport(player, server); + public void arenaJoin(ProxiedPlayer player, Subserver server) { + TpCommand.teleport(player, server.getServer()); } - @ClassMapper(ServerInfo.class) - public TypeMapper serverInfoTypeMapper() { - return new TypeMapper() { + @ClassMapper(value = ServerInfo.class, local = true) + public TypeMapper serverInfoTypeMapper() { + return new TypeMapper() { @Override - public ServerInfo map(CommandSender commandSender, String[] previousArguments, String s) { - return ProxyServer.getInstance().getServerInfo(s); + public Subserver map(CommandSender commandSender, String[] previousArguments, String s) { + return Subserver.getSubserver(ProxyServer.getInstance().getServerInfo(s)); + } + + @Override + public boolean validate(CommandSender sender, Subserver value, MessageSender messageSender) { + if (value == null || value.getType() != Servertype.ARENA) { + messageSender.send("ARENA_NOT_FOUND"); + return false; + } + return true; } @Override From 8bcefb102c8f17cebb46ad3930d1d8aaf4799654 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Mon, 18 Jul 2022 16:19:48 +0200 Subject: [PATCH 10/39] Update ArenaCommand --- src/de/steamwar/bungeecore/commands/ArenaCommand.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/ArenaCommand.java b/src/de/steamwar/bungeecore/commands/ArenaCommand.java index b73d6d2..83558ae 100644 --- a/src/de/steamwar/bungeecore/commands/ArenaCommand.java +++ b/src/de/steamwar/bungeecore/commands/ArenaCommand.java @@ -30,6 +30,7 @@ import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; import java.util.Collection; +import java.util.List; import java.util.stream.Collectors; public class ArenaCommand extends SWCommand { @@ -62,10 +63,10 @@ public class ArenaCommand extends SWCommand { @Override public Collection tabCompletes(CommandSender sender, String[] previousArguments, String s) { - return ProxyServer.getInstance().getServersCopy().values().stream().filter(server -> { - Subserver subserver = Subserver.getSubserver(server); - return subserver != null && subserver.getType() == Servertype.ARENA; - }).map(ServerInfo::getName).collect(Collectors.toList()); + List subserverList = Subserver.getServerList(); + synchronized (subserverList) { + return subserverList.stream().filter(subserver -> subserver.getType() == Servertype.ARENA).map(subserver -> subserver.getServer().getName()).collect(Collectors.toList()); + } } }; } From 0e376456e88a609b9623fe0f471ca8fe14db3028 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 21 Jul 2022 11:31:53 +0200 Subject: [PATCH 11/39] Potential tp fix, added link descriptor, MWG 1.19 build servers Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/commands/BauCommand.java | 10 +++++----- src/de/steamwar/bungeecore/util/Chat19.java | 5 +---- src/de/steamwar/messages/BungeeCore.properties | 2 +- src/de/steamwar/messages/BungeeCore_de.properties | 2 +- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/BauCommand.java b/src/de/steamwar/bungeecore/commands/BauCommand.java index ee6181a..aebf76a 100644 --- a/src/de/steamwar/bungeecore/commands/BauCommand.java +++ b/src/de/steamwar/bungeecore/commands/BauCommand.java @@ -139,7 +139,9 @@ public class BauCommand extends BasicCommand { private static void versionSelector(ProxiedPlayer p, String[] args, int pos, Runnable run19, Runnable run15, Runnable run12, Runnable runElse) { if(args.length <= pos) { int version = p.getPendingConnection().getVersion(); - if(version > 340) { // Version > 1.12.2 + if(version > 578) { // Version > 1.15.2 + run19.run(); + } else if(version > 340) { // Version > 1.12.2 run15.run(); } else { run12.run(); @@ -150,16 +152,14 @@ public class BauCommand extends BasicCommand { switch (args[pos].toLowerCase()) { case "19": case "1.19": - case "18": - case "1.18": + case "mwg": + case "miniwargear": run19.run(); break; case "ws": case "warship": case "as": case "airship": - case "mwg": - case "miniwargear": case "wg": case "wargear": case "15": diff --git a/src/de/steamwar/bungeecore/util/Chat19.java b/src/de/steamwar/bungeecore/util/Chat19.java index 1110355..ab4e792 100644 --- a/src/de/steamwar/bungeecore/util/Chat19.java +++ b/src/de/steamwar/bungeecore/util/Chat19.java @@ -27,8 +27,6 @@ import net.md_5.bungee.protocol.PacketWrapper; import net.md_5.bungee.protocol.ProtocolConstants; import net.md_5.bungee.protocol.packet.Chat; -import java.time.Instant; - public class Chat19 extends Chat { public static void chat(ProxiedPlayer p, String message) { @@ -44,7 +42,6 @@ public class Chat19 extends Chat { } } - private final Instant timestamp = Instant.now(); private final long salt = 0L; private final byte[] signature = new byte[0]; private final boolean signedPreview = false; @@ -59,7 +56,7 @@ public class Chat19 extends Chat { throw new UnsupportedOperationException(); writeString(getMessage(), buf); - buf.writeLong(timestamp.toEpochMilli()); + buf.writeLong(System.currentTimeMillis()); buf.writeLong(salt); writeArray(signature, buf); buf.writeBoolean(signedPreview); diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties index 58633d2..203618f 100644 --- a/src/de/steamwar/messages/BungeeCore.properties +++ b/src/de/steamwar/messages/BungeeCore.properties @@ -20,7 +20,7 @@ DISABLED=§cCurrently disabled. #ModLoader blocker MODLOADER_INSTALLED=§7You play with §e{0} §7client. Therefore you can't join arenas. -MODLOADER_INSTALLED_FABRIC=§7You play with §e{0} §7client. You can only join arenas with the SteamWar Modsender installed. +MODLOADER_INSTALLED_FABRIC=§7You play with §e{0} §7client. You can join arenas only with the FabricModSender https://steamwar.de/downloads installed. MODLOADER_DENIED=§cYou cannot join arenas with Fabric and LiteLoader. #Help command diff --git a/src/de/steamwar/messages/BungeeCore_de.properties b/src/de/steamwar/messages/BungeeCore_de.properties index 0c93d45..28df9b1 100644 --- a/src/de/steamwar/messages/BungeeCore_de.properties +++ b/src/de/steamwar/messages/BungeeCore_de.properties @@ -16,7 +16,7 @@ DISABLED=§cDerzeit deaktiviert. #ModLoader blocker MODLOADER_INSTALLED=§7Du spielst mit §e{0} §7Client. Daher kannst du keinen Arenen beitreten. -MODLOADER_INSTALLED_FABRIC=§7Du spielst mit §e{0} §7Client. Nur mit dem SteamWarModSender kannst du Arenen beitreten. +MODLOADER_INSTALLED_FABRIC=§7Du spielst mit §e{0} §7Client. Nur mit dem FabricModSender https://steamwar.de/downloads kannst du Arenen beitreten. MODLOADER_DENIED=§cMit Fabric und LiteLoader kannst du keinen Arenen beitreten. #Help command From 8aaad8647faef86b06b8769e8993946c5e86da77 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 21 Jul 2022 12:12:36 +0200 Subject: [PATCH 12/39] Fix Command19 Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/util/Chat19.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/util/Chat19.java b/src/de/steamwar/bungeecore/util/Chat19.java index ab4e792..9403a2a 100644 --- a/src/de/steamwar/bungeecore/util/Chat19.java +++ b/src/de/steamwar/bungeecore/util/Chat19.java @@ -31,10 +31,11 @@ public class Chat19 extends Chat { public static void chat(ProxiedPlayer p, String message) { if(p.getPendingConnection().getVersion() >= 759) { + boolean command = message.startsWith("/"); Chat19 packet = new Chat19(message); ByteBuf buf = Unpooled.buffer(); - writeVarInt(0x04, buf); + writeVarInt(command ? 0x03 : 0x04, buf); packet.write(buf, ProtocolConstants.Direction.TO_SERVER, p.getPendingConnection().getVersion()); ((ServerConnection) p.getServer()).getCh().write(new PacketWrapper(packet, buf)); } else { From 3266a2fdd0aab9edcd49d80dd84447778dc375c2 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 21 Jul 2022 12:25:14 +0200 Subject: [PATCH 13/39] Fix Command19 Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/util/Chat19.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/util/Chat19.java b/src/de/steamwar/bungeecore/util/Chat19.java index 9403a2a..e0934ae 100644 --- a/src/de/steamwar/bungeecore/util/Chat19.java +++ b/src/de/steamwar/bungeecore/util/Chat19.java @@ -32,7 +32,7 @@ public class Chat19 extends Chat { public static void chat(ProxiedPlayer p, String message) { if(p.getPendingConnection().getVersion() >= 759) { boolean command = message.startsWith("/"); - Chat19 packet = new Chat19(message); + Chat19 packet = new Chat19(command ? message.substring(1) : message); ByteBuf buf = Unpooled.buffer(); writeVarInt(command ? 0x03 : 0x04, buf); From 32bd46c97ddf11f9983ad8366343d0a96d7e7d1c Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 22 Jul 2022 10:25:14 +0200 Subject: [PATCH 14/39] Fix arena Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/commands/ArenaCommand.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/ArenaCommand.java b/src/de/steamwar/bungeecore/commands/ArenaCommand.java index 83558ae..7f6503f 100644 --- a/src/de/steamwar/bungeecore/commands/ArenaCommand.java +++ b/src/de/steamwar/bungeecore/commands/ArenaCommand.java @@ -23,10 +23,8 @@ import de.steamwar.bungeecore.Servertype; import de.steamwar.bungeecore.Subserver; import de.steamwar.command.SWCommand; import de.steamwar.command.TypeMapper; -import de.steamwar.messages.ChatSender; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; -import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; import java.util.Collection; @@ -44,7 +42,7 @@ public class ArenaCommand extends SWCommand { TpCommand.teleport(player, server.getServer()); } - @ClassMapper(value = ServerInfo.class, local = true) + @ClassMapper(value = Subserver.class, local = true) public TypeMapper serverInfoTypeMapper() { return new TypeMapper() { @Override From a2f6a2c6ae5dd1cf695b1f51d3c13b8fd39f2195 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 4 Aug 2022 17:01:40 +0200 Subject: [PATCH 15/39] 1.19.1 Support, API update Signed-off-by: Lixfel --- CommonCore | 2 +- src/de/steamwar/bungeecore/BungeeCore.java | 32 ++++++++----- src/de/steamwar/bungeecore/ServerStarter.java | 8 ++-- .../bungeecore/commands/TpCommand.java | 6 +-- src/de/steamwar/bungeecore/sql/Statement.java | 2 +- .../steamwar/bungeecore/tablist/Tablist.java | 1 + src/de/steamwar/bungeecore/util/Chat19.java | 45 +++++-------------- 7 files changed, 40 insertions(+), 56 deletions(-) diff --git a/CommonCore b/CommonCore index 21e77c5..47bd9af 160000 --- a/CommonCore +++ b/CommonCore @@ -1 +1 @@ -Subproject commit 21e77c55f023261d3a63d5c6200d28b2f6f6fc4c +Subproject commit 47bd9af03eb987f94777f3b13f6ae6c30f153393 diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index 8518c97..5660af1 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -48,6 +48,7 @@ import net.md_5.bungee.config.YamlConfiguration; import java.io.File; import java.io.IOException; +import java.net.InetSocketAddress; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -57,6 +58,8 @@ import java.util.logging.Level; public class BungeeCore extends Plugin { + public static boolean MAIN_SERVER; + public static String CHAT_PREFIX; public static String WORLD_FOLDER; public static String BAUWELT_PROTOTYP; @@ -75,6 +78,15 @@ public class BungeeCore extends Plugin { @Override public void onEnable(){ + getProxy().registerChannel("sw:bridge"); + getProxy().registerChannel("fabricmodsender:mods"); + + setInstance(this); + MAIN_SERVER = ProxyServer.getInstance().getConfig().getListeners().stream().anyMatch(info -> ((InetSocketAddress) info.getSocketAddress()).getPort() == 25565); + loadConfig(); + + errorLogger = new ErrorLogger(); + SWCommandUtils.init((SWTypeMapperCreator, CommandSender, Object>) (mapper, tabCompleter) -> new TypeMapper() { @Override public Object map(CommandSender commandSender, String[] previousArguments, String s) { @@ -88,13 +100,6 @@ public class BungeeCore extends Plugin { }); BungeeCord.getInstance().getScheduler().schedule(this, TabCompletionCache::invalidateOldEntries, 1, 1, TimeUnit.SECONDS); - getProxy().registerChannel("sw:bridge"); - getProxy().registerChannel("fabricmodsender:mods"); - - setInstance(this); - loadConfig(); - - errorLogger = new ErrorLogger(); new ConnectionListener(); new Forge(); new Forge12(); @@ -305,10 +310,6 @@ public class BungeeCore extends Plugin { Persistent.setChatPrefix(CHAT_PREFIX); Persistent.setLobbyServer(LOBBY_SERVER); - if (config.contains("discord")) { - SteamwarDiscordBotConfig.loadConfig(config.getSection("discord")); - } - final Configuration servers = config.getSection("servers"); for(final String serverName : servers.getKeys()){ final Configuration server = servers.getSection(serverName); @@ -325,6 +326,15 @@ public class BungeeCore extends Plugin { ModLoaderBlocker.addServer(serverName); } } + + File discordFile = new File(System.getProperty("user.home"), "discord.yml"); + if(discordFile.exists()) { + try { + SteamwarDiscordBotConfig.loadConfig(ConfigurationProvider.getProvider(YamlConfiguration.class).load(discordFile)); + } catch (IOException e) { + get().getLogger().log(Level.SEVERE, "Could not load discord bot configuration", e); + } + } } private static void setInstance(BungeeCore core){ diff --git a/src/de/steamwar/bungeecore/ServerStarter.java b/src/de/steamwar/bungeecore/ServerStarter.java index 35a97dd..458e4d4 100644 --- a/src/de/steamwar/bungeecore/ServerStarter.java +++ b/src/de/steamwar/bungeecore/ServerStarter.java @@ -4,7 +4,6 @@ import de.steamwar.bungeecore.sql.EventFight; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.bungeecore.sql.Team; import de.steamwar.bungeecore.sql.Tutorial; -import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import java.io.File; @@ -17,11 +16,10 @@ import java.util.stream.Collectors; public class ServerStarter { - private static final boolean MAIN_SERVER = ProxyServer.getInstance().getConfig().getListeners().stream().anyMatch(info -> ((InetSocketAddress) info.getSocketAddress()).getPort() == 25565); - private static final Portrange BAU_PORTS = MAIN_SERVER ? new Portrange(10100, 20000) : new Portrange(2100, 2200); - private static final Portrange ARENA_PORTS = MAIN_SERVER ? new Portrange(3000, 3100) : (BungeeCore.EVENT_MODE ? new Portrange(4000, 5000) : BAU_PORTS); + private static final Portrange BAU_PORTS = BungeeCore.MAIN_SERVER ? new Portrange(10100, 20000) : new Portrange(2100, 2200); + private static final Portrange ARENA_PORTS = BungeeCore.MAIN_SERVER ? new Portrange(3000, 3100) : (BungeeCore.EVENT_MODE ? new Portrange(4000, 5000) : BAU_PORTS); - private static final String BACKBONE = "/home/minecraft/"; + private static final String BACKBONE = System.getProperty("user.home") + "/"; private static final String SERVER_PATH = BACKBONE + "server/"; private static final String EVENT_PATH = BACKBONE + "event/"; public static final String TEMP_WORLD_PATH = BACKBONE + "arenaserver/"; diff --git a/src/de/steamwar/bungeecore/commands/TpCommand.java b/src/de/steamwar/bungeecore/commands/TpCommand.java index 04cbb02..a31cd78 100644 --- a/src/de/steamwar/bungeecore/commands/TpCommand.java +++ b/src/de/steamwar/bungeecore/commands/TpCommand.java @@ -56,14 +56,10 @@ public class TpCommand extends BasicCommand { boolean onTeamServer = Storage.teamServers.containsValue(player.getServer().getInfo()); //Give control of teleport command to server - if (server == player.getServer().getInfo() || onTeamServer) { + if (server == player.getServer().getInfo() || onTeamServer || server == null) { Chat19.chat(player, "/tp " + String.join(" ", args)); return; } - if(server == null) { - sender.system("JOINME_PLAYER_OFFLINE"); - return; - } teleport(player, server); } diff --git a/src/de/steamwar/bungeecore/sql/Statement.java b/src/de/steamwar/bungeecore/sql/Statement.java index 61fcc00..06b705a 100644 --- a/src/de/steamwar/bungeecore/sql/Statement.java +++ b/src/de/steamwar/bungeecore/sql/Statement.java @@ -44,7 +44,7 @@ public class Statement implements AutoCloseable { private static final String PASSWORD; static { - File file = new File(BungeeCore.get().getDataFolder(), "MySQL.yml"); + File file = new File(System.getProperty("user.home"), "MySQL.yml"); Configuration config; try { config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(file); diff --git a/src/de/steamwar/bungeecore/tablist/Tablist.java b/src/de/steamwar/bungeecore/tablist/Tablist.java index 417629d..b9acc96 100644 --- a/src/de/steamwar/bungeecore/tablist/Tablist.java +++ b/src/de/steamwar/bungeecore/tablist/Tablist.java @@ -205,6 +205,7 @@ public class Tablist extends MessageToMessageDecoder { for (PlayerListItem.Item item : list.getItems()) { item.setPing(1); item.setDisplayName(ComponentSerializer.toString(TextComponent.fromLegacyText(""))); + item.setPublicKey(null); if(!player.getUniqueId().equals(item.getUuid()) && item.getGamemode() == 3) item.setGamemode(1); diff --git a/src/de/steamwar/bungeecore/util/Chat19.java b/src/de/steamwar/bungeecore/util/Chat19.java index e0934ae..37a3f30 100644 --- a/src/de/steamwar/bungeecore/util/Chat19.java +++ b/src/de/steamwar/bungeecore/util/Chat19.java @@ -19,47 +19,26 @@ package de.steamwar.bungeecore.util; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; import net.md_5.bungee.ServerConnection; import net.md_5.bungee.api.connection.ProxiedPlayer; -import net.md_5.bungee.protocol.PacketWrapper; -import net.md_5.bungee.protocol.ProtocolConstants; -import net.md_5.bungee.protocol.packet.Chat; +import net.md_5.bungee.protocol.ChatChain; +import net.md_5.bungee.protocol.packet.ClientChat; +import net.md_5.bungee.protocol.packet.ClientCommand; -public class Chat19 extends Chat { +import java.util.Collections; + +public class Chat19 { + private Chat19(){} public static void chat(ProxiedPlayer p, String message) { if(p.getPendingConnection().getVersion() >= 759) { - boolean command = message.startsWith("/"); - Chat19 packet = new Chat19(command ? message.substring(1) : message); - - ByteBuf buf = Unpooled.buffer(); - writeVarInt(command ? 0x03 : 0x04, buf); - packet.write(buf, ProtocolConstants.Direction.TO_SERVER, p.getPendingConnection().getVersion()); - ((ServerConnection) p.getServer()).getCh().write(new PacketWrapper(packet, buf)); + if(message.startsWith("/")) { + ((ServerConnection) p.getServer()).getCh().write(new ClientCommand(message.substring(1), System.currentTimeMillis(), 0, Collections.emptyMap(), false, new ChatChain(Collections.emptyList(), null))); + } else { + ((ServerConnection) p.getServer()).getCh().write(new ClientChat(message, System.currentTimeMillis(), 0, new byte[0], false, new ChatChain(Collections.emptyList(), null))); + } } else { p.chat(message); } } - - private final long salt = 0L; - private final byte[] signature = new byte[0]; - private final boolean signedPreview = false; - - public Chat19 (String message) { - super(message); - } - - @Override - public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) { - if (direction == ProtocolConstants.Direction.TO_CLIENT || protocolVersion != 759) - throw new UnsupportedOperationException(); - - writeString(getMessage(), buf); - buf.writeLong(System.currentTimeMillis()); - buf.writeLong(salt); - writeArray(signature, buf); - buf.writeBoolean(signedPreview); - } } From 2f90bc2541567fb4d9ff51b5d1591b68fbc10c7e Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 4 Aug 2022 17:06:12 +0200 Subject: [PATCH 16/39] Fix CI Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/BungeeCore.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index 5660af1..f9d1363 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -276,7 +276,6 @@ public class BungeeCore extends Plugin { get().getLogger().log(Level.SEVERE, msg, e); } - private static void loadConfig(){ Configuration config; try{ From 8599df7e4e02440cec6da7a2137173da2ca81b86 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 4 Aug 2022 17:10:17 +0200 Subject: [PATCH 17/39] Fix CI again Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/BungeeCore.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index f9d1363..5660af1 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -276,6 +276,7 @@ public class BungeeCore extends Plugin { get().getLogger().log(Level.SEVERE, msg, e); } + private static void loadConfig(){ Configuration config; try{ From dfab5e76304e7f3e1be6865a170256b6b6b4439a Mon Sep 17 00:00:00 2001 From: Lixfel Date: Thu, 4 Aug 2022 17:48:54 +0200 Subject: [PATCH 18/39] 1.19.1 Buildserver Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/ServerStarter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/ServerStarter.java b/src/de/steamwar/bungeecore/ServerStarter.java index 458e4d4..acf4d64 100644 --- a/src/de/steamwar/bungeecore/ServerStarter.java +++ b/src/de/steamwar/bungeecore/ServerStarter.java @@ -109,7 +109,7 @@ public class ServerStarter { public ServerStarter build19(UUID owner) { directory = new File(SERVER_PATH, "Bau19"); - serverJar = "paper-1.19.jar"; + serverJar = "paper-1.19-1.jar"; worldDir = WORLDS19_PATH; worldName = String.valueOf(SteamwarUser.get(owner).getId()); buildWithWorld(owner, new File(directory, "Bauwelt").getPath()); From d2d8bc0bf8b3b5faef389b6ffe128afe0e18bca1 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 5 Aug 2022 08:14:15 +0200 Subject: [PATCH 19/39] 1.19.1 Buildserver Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/ServerStarter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/ServerStarter.java b/src/de/steamwar/bungeecore/ServerStarter.java index acf4d64..c6bdca0 100644 --- a/src/de/steamwar/bungeecore/ServerStarter.java +++ b/src/de/steamwar/bungeecore/ServerStarter.java @@ -109,7 +109,7 @@ public class ServerStarter { public ServerStarter build19(UUID owner) { directory = new File(SERVER_PATH, "Bau19"); - serverJar = "paper-1.19-1.jar"; + serverJar = "paper-1.19.1.jar"; worldDir = WORLDS19_PATH; worldName = String.valueOf(SteamwarUser.get(owner).getId()); buildWithWorld(owner, new File(directory, "Bauwelt").getPath()); From e2f2968813436126cc713f0153a499c02250de71 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 5 Aug 2022 12:02:08 +0200 Subject: [PATCH 20/39] Close inventory on world reset Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/commands/BauCommand.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/BauCommand.java b/src/de/steamwar/bungeecore/commands/BauCommand.java index aebf76a..9f59bf4 100644 --- a/src/de/steamwar/bungeecore/commands/BauCommand.java +++ b/src/de/steamwar/bungeecore/commands/BauCommand.java @@ -246,9 +246,10 @@ public class BauCommand extends BasicCommand { inventory.addItem(8, new SWItem(Message.parse("BAU_DELETE_GUI_CANCEL", p), 1), click -> inventory.close() ); - inventory.addItem(0, new SWItem(Message.parse("BAU_DELETE_GUI_DELETE", p), 10), click -> - worldDeletion.run() - ); + inventory.addItem(0, new SWItem(Message.parse("BAU_DELETE_GUI_DELETE", p), 10), click -> { + worldDeletion.run(); + inventory.close(); + }); inventory.open(); } From abf422478894c8e9becf590c3f23690d415fd60e Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 16 Aug 2022 18:25:16 +0200 Subject: [PATCH 21/39] Update WhoisCommand --- src/de/steamwar/bungeecore/commands/WhoisCommand.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/WhoisCommand.java b/src/de/steamwar/bungeecore/commands/WhoisCommand.java index 83caa0f..9e25ad2 100644 --- a/src/de/steamwar/bungeecore/commands/WhoisCommand.java +++ b/src/de/steamwar/bungeecore/commands/WhoisCommand.java @@ -44,7 +44,7 @@ public class WhoisCommand extends SWCommand { } @Register(description = "WHOIS_USAGE") - public void genericCommand(ProxiedPlayer player, @Mapper("player") String target, @OptionalValue("") @StaticValue({"-all", "-a", ""}) String displayAll) { + public void genericCommand(ProxiedPlayer player, @Mapper("player") String target, @OptionalValue("") @StaticValue(value = {"", "-all", "-a"}, allowISE = true) boolean all) { SteamwarUser user = SteamwarUser.get(target); if (user == null) { try { @@ -64,11 +64,9 @@ public class WhoisCommand extends SWCommand { if (user == null) { Message.send("UNKNOWN_PLAYER", player); - return; + } else { + sendUserinfo(player, user, all); } - - boolean all = displayAll.contains("-"); - sendUserinfo(player, user, all); } @Mapper(value = "player", local = true) From 94398901316fd334d0762c484f0cf5826696ef87 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sat, 20 Aug 2022 11:23:42 +0200 Subject: [PATCH 22/39] Ignore took ms to process event in db Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/ErrorLogger.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/de/steamwar/bungeecore/ErrorLogger.java b/src/de/steamwar/bungeecore/ErrorLogger.java index c60d7aa..ef80a0b 100644 --- a/src/de/steamwar/bungeecore/ErrorLogger.java +++ b/src/de/steamwar/bungeecore/ErrorLogger.java @@ -90,6 +90,7 @@ public class ErrorLogger extends Handler { contains.add("No client connected for pending server"); contains.add("Error occurred processing connection for"); contains.add("Server is online mode!"); + contains.add(" took "); ignoreContains = Collections.unmodifiableList(contains); } } From 698f710138d9a7b9bdf39ebcafdf0d30a8797950 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sat, 20 Aug 2022 18:15:02 +0200 Subject: [PATCH 23/39] Use /servers for server starts Signed-off-by: Lixfel --- CommonCore | 2 +- src/de/steamwar/bungeecore/ServerStarter.java | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CommonCore b/CommonCore index 47bd9af..6cb3bc5 160000 --- a/CommonCore +++ b/CommonCore @@ -1 +1 @@ -Subproject commit 47bd9af03eb987f94777f3b13f6ae6c30f153393 +Subproject commit 6cb3bc5ff5ee955ccdde281183991d0877e54169 diff --git a/src/de/steamwar/bungeecore/ServerStarter.java b/src/de/steamwar/bungeecore/ServerStarter.java index c6bdca0..f452f3f 100644 --- a/src/de/steamwar/bungeecore/ServerStarter.java +++ b/src/de/steamwar/bungeecore/ServerStarter.java @@ -19,12 +19,12 @@ public class ServerStarter { private static final Portrange BAU_PORTS = BungeeCore.MAIN_SERVER ? new Portrange(10100, 20000) : new Portrange(2100, 2200); private static final Portrange ARENA_PORTS = BungeeCore.MAIN_SERVER ? new Portrange(3000, 3100) : (BungeeCore.EVENT_MODE ? new Portrange(4000, 5000) : BAU_PORTS); - private static final String BACKBONE = System.getProperty("user.home") + "/"; - private static final String SERVER_PATH = BACKBONE + "server/"; - private static final String EVENT_PATH = BACKBONE + "event/"; - public static final String TEMP_WORLD_PATH = BACKBONE + "arenaserver/"; - public static final String TUTORIAL_PATH = BACKBONE + "tutorials/"; - public static final String WORLDS19_PATH = BACKBONE + "userworlds19/"; + private static final String SERVER_PATH = "/servers/"; + private static final String USER_HOME = System.getProperty("user.home") + "/"; + private static final String EVENT_PATH = USER_HOME + "event/"; + public static final String TEMP_WORLD_PATH = USER_HOME + "arenaserver/"; + public static final String TUTORIAL_PATH = USER_HOME + "tutorials/"; + public static final String WORLDS19_PATH = USER_HOME + "userworlds19/"; private File directory = null; private String worldDir = null; From 43a9b92b41413ba0b830babda550ef903b3af166 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sat, 20 Aug 2022 19:10:26 +0200 Subject: [PATCH 24/39] Bye Bye Mail. Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/BungeeCore.java | 2 +- ...erCommand.java => WebpasswordCommand.java} | 49 +++++++------------ .../steamwar/bungeecore/sql/SteamwarUser.java | 4 +- .../steamwar/messages/BungeeCore.properties | 11 ++--- .../messages/BungeeCore_de.properties | 11 ++--- 5 files changed, 29 insertions(+), 48 deletions(-) rename src/de/steamwar/bungeecore/commands/{WebregisterCommand.java => WebpasswordCommand.java} (56%) diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index 5660af1..a63d71a 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -168,7 +168,7 @@ public class BungeeCore extends Plugin { if(!EVENT_MODE){ new BauCommand(); - new WebregisterCommand(); + new WebpasswordCommand(); new FightCommand(); new ChallengeCommand(); new HistoricCommand(); diff --git a/src/de/steamwar/bungeecore/commands/WebregisterCommand.java b/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java similarity index 56% rename from src/de/steamwar/bungeecore/commands/WebregisterCommand.java rename to src/de/steamwar/bungeecore/commands/WebpasswordCommand.java index 6197f0f..d5bc7ec 100644 --- a/src/de/steamwar/bungeecore/commands/WebregisterCommand.java +++ b/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java @@ -20,57 +20,44 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; -import de.steamwar.bungeecore.sql.SWException; import de.steamwar.command.SWCommand; +import de.steamwar.messages.ChatSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -public class WebregisterCommand extends SWCommand { +public class WebpasswordCommand extends SWCommand { - public WebregisterCommand() { - super("webregister", null, "web", "webpw"); + public WebpasswordCommand() { + super("webpassword", null, "web", "webpw"); } @Register(description = "WEB_USAGE") - public void genericCommand(ProxiedPlayer player, String email) { - ProcessBuilder pb = new ProcessBuilder("php", "/var/www/register.php", player.getName(), email); + public void genericCommand(ProxiedPlayer player, String password) { + if(password.length() < 8) { + ChatSender.of(player).system("WEB_PASSWORD_LENGTH"); + return; + } + + ProcessBuilder pb = new ProcessBuilder("php", "/var/www/register.php", player.getName(), password); pb.redirectErrorStream(true); try { Process regProcess = pb.start(); BufferedReader reader = new BufferedReader(new InputStreamReader(regProcess.getInputStream())); String errorLine; - boolean error = false; - while((errorLine = reader.readLine()) != null){ - switch(errorLine){ - case "username_exists": - Message.send("WEB_ALREADY", player); - break; - case "email_exists": - Message.send("WEB_ALREADY_EMAIL", player); - // SWException.log("Bungee", "Duplicate E-Mail", player.getName() + " " + args[0]); - break; - case "invalid_email": - Message.send("WEB_NOT_EMAIL", player); - break; - case "email_updated": - Message.send("WEB_EMAIL_REFRESH", player); - break; - default: - Message.send("WEB_INTERNAL_ERROR", player); - SWException.log("Bungee", "Unknown Wordpress User Creation Error", errorLine); + if((errorLine = reader.readLine()) != null) { + if ("updated".equals(errorLine)) { + Message.send("WEB_UPDATED", player); + return; + } else { + throw new SecurityException("Could not create webaccount " + errorLine); } - error = true; } - if(error) - return; - - Message.send("WEB_EMAIL_SEND", player); + Message.send("WEB_CREATED", player); } catch (IOException e) { - Message.send("WEB_INTERNAL_ERROR", player); throw new SecurityException("Could not create webaccount", e); } } diff --git a/src/de/steamwar/bungeecore/sql/SteamwarUser.java b/src/de/steamwar/bungeecore/sql/SteamwarUser.java index 96c92d5..a5cb605 100644 --- a/src/de/steamwar/bungeecore/sql/SteamwarUser.java +++ b/src/de/steamwar/bungeecore/sql/SteamwarUser.java @@ -22,7 +22,7 @@ package de.steamwar.bungeecore.sql; import com.google.gson.JsonParser; import de.steamwar.bungeecore.BungeeCore; import de.steamwar.bungeecore.Message; -import de.steamwar.bungeecore.commands.WebregisterCommand; +import de.steamwar.bungeecore.commands.WebpasswordCommand; import de.steamwar.bungeecore.listeners.ConnectionListener; import de.steamwar.bungeecore.network.NetworkSender; import de.steamwar.messages.ChatSender; @@ -121,7 +121,7 @@ public class SteamwarUser { String userName = connection.getName(); if (!user.userName.equals(userName)) { updateName.update(userName, user.id); - WebregisterCommand.changeUsername(user.userName, userName); + WebpasswordCommand.changeUsername(user.userName, userName); user.userName = userName; } } else { diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties index 203618f..a2ba6ff 100644 --- a/src/de/steamwar/messages/BungeeCore.properties +++ b/src/de/steamwar/messages/BungeeCore.properties @@ -498,13 +498,10 @@ UNIGNORE_NOT_IGNORED=§cYou are not ignoring this player. UNIGNORE_UNIGNORED=§7You ignored §e{0}§8. #WebregisterCommand -WEB_USAGE=§8/§7webregister §8[§eE-Mail§8] -WEB_ALREADY=§cYou already have a webaccount. -WEB_ALREADY_EMAIL=§cYou already used this E-Mail address on another account... -WEB_NOT_EMAIL=§c[E-Mail], not [free text]! -WEB_EMAIL_REFRESH=§aYour E-Mail was updated. -WEB_INTERNAL_ERROR=§cAn internal error occurred, please contact a developer. -WEB_EMAIL_SEND=§aAn E-Mail to reset your password has been sent. +WEB_USAGE=§8/§7webpassword §8[§epassword§8] +WEB_UPDATED=§7Your password was updated. +WEB_CREATED=§7Your webaccount was created. +WEB_PASSWORD_LENGTH=§cYour password is shorter than 8 characters. #ChatListener CHAT_LIXFEL_ACTION_BAR=§4§lTechnical problems? diff --git a/src/de/steamwar/messages/BungeeCore_de.properties b/src/de/steamwar/messages/BungeeCore_de.properties index 28df9b1..b23a577 100644 --- a/src/de/steamwar/messages/BungeeCore_de.properties +++ b/src/de/steamwar/messages/BungeeCore_de.properties @@ -477,13 +477,10 @@ UNIGNORE_NOT_IGNORED=§cDu ignorierst diesen Spieler nicht. UNIGNORE_UNIGNORED=§7Du empfängst nun wieder Nachrichten von §e{0}§8. #WebregisterCommand -WEB_USAGE=§8/§7webregister §8[§eE-Mail§8] -WEB_ALREADY=§cDu hast bereits einen Webaccount. -WEB_ALREADY_EMAIL=§cDie E-Mail hast du bereits für einen anderen Account verwendet... -WEB_NOT_EMAIL=§c[E-Mail], nicht [Freitext]! -WEB_EMAIL_REFRESH=§aDeine E-Mail-Adresse wurde aktualisiert. -WEB_INTERNAL_ERROR=§cEin interner Fehler ist aufgetreten, bitte wende dich an einen Developer. -WEB_EMAIL_SEND=§aEine E-Mail zum Setzen des Passworts wurde gesendet. +WEB_USAGE=§8/§7webpassword §8[§ePasswort§8] +WEB_UPDATED=§7Dein Passwort wurde aktualisiert. +WEB_CREATED=§7Dein Webaccount wurde erstellt. +WEB_PASSWORD_LENGTH=§cDein Passwort ist kürzer als 8 Zeichen. #ChatListener CHAT_LIXFEL_ACTION_BAR=§4§lTechnische Probleme? From 11106ab2408c7f99fa71e16a6c9b5bb51d9f8cef Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sat, 20 Aug 2022 19:15:28 +0200 Subject: [PATCH 25/39] Bye Bye Mail. Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/commands/WebpasswordCommand.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java b/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java index d5bc7ec..39e29b5 100644 --- a/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java +++ b/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java @@ -19,7 +19,6 @@ package de.steamwar.bungeecore.commands; -import de.steamwar.bungeecore.Message; import de.steamwar.command.SWCommand; import de.steamwar.messages.ChatSender; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -49,14 +48,14 @@ public class WebpasswordCommand extends SWCommand { String errorLine; if((errorLine = reader.readLine()) != null) { if ("updated".equals(errorLine)) { - Message.send("WEB_UPDATED", player); + ChatSender.of(player).system("WEB_UPDATED"); return; } else { throw new SecurityException("Could not create webaccount " + errorLine); } } - Message.send("WEB_CREATED", player); + ChatSender.of(player).system("WEB_CREATED"); } catch (IOException e) { throw new SecurityException("Could not create webaccount", e); } From 5cf577c9e5433814ef4fb11911d07197dbaee604 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sat, 20 Aug 2022 19:22:21 +0200 Subject: [PATCH 26/39] Bye Bye Mail. Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/commands/WebpasswordCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java b/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java index 39e29b5..ec79a8c 100644 --- a/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java +++ b/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java @@ -30,7 +30,7 @@ import java.io.InputStreamReader; public class WebpasswordCommand extends SWCommand { public WebpasswordCommand() { - super("webpassword", null, "web", "webpw"); + super("webpassword", null, "webpw", "web"); } @Register(description = "WEB_USAGE") From bd1420cc9091f176eb02b1137b19d323fa0a5189 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sat, 20 Aug 2022 19:35:46 +0200 Subject: [PATCH 27/39] Bye Bye Mail. Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/commands/WebpasswordCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java b/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java index ec79a8c..2e45c27 100644 --- a/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java +++ b/src/de/steamwar/bungeecore/commands/WebpasswordCommand.java @@ -33,6 +33,7 @@ public class WebpasswordCommand extends SWCommand { super("webpassword", null, "webpw", "web"); } + @Register(description = "WEB_USAGE") public void genericCommand(ProxiedPlayer player, String password) { if(password.length() < 8) { From b8404a74a7674d9896ded76d9d85102044085451 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 22 Aug 2022 06:50:53 +0200 Subject: [PATCH 28/39] Update to paper 1.19.2 Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/ServerStarter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/ServerStarter.java b/src/de/steamwar/bungeecore/ServerStarter.java index f452f3f..a0b4ec8 100644 --- a/src/de/steamwar/bungeecore/ServerStarter.java +++ b/src/de/steamwar/bungeecore/ServerStarter.java @@ -109,7 +109,7 @@ public class ServerStarter { public ServerStarter build19(UUID owner) { directory = new File(SERVER_PATH, "Bau19"); - serverJar = "paper-1.19.1.jar"; + serverJar = "paper-1.19.2.jar"; worldDir = WORLDS19_PATH; worldName = String.valueOf(SteamwarUser.get(owner).getId()); buildWithWorld(owner, new File(directory, "Bauwelt").getPath()); From e4cd94aecd0486b53c37c157108aef23c7e7180e Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 22 Aug 2022 14:31:04 +0200 Subject: [PATCH 29/39] Fix lobbyconnection on disconnect Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/listeners/ConnectionListener.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/de/steamwar/bungeecore/listeners/ConnectionListener.java b/src/de/steamwar/bungeecore/listeners/ConnectionListener.java index 95f6a89..44bba9f 100644 --- a/src/de/steamwar/bungeecore/listeners/ConnectionListener.java +++ b/src/de/steamwar/bungeecore/listeners/ConnectionListener.java @@ -105,6 +105,9 @@ public class ConnectionListener extends BasicListener { @EventHandler public void onServerKickEvent(ServerKickEvent ev) { + if(!ev.getPlayer().isConnected()) + return; + ServerInfo kickedFrom; if (ev.getPlayer().getServer() != null){ From ea94195db8d8023b59daab76f882581ab644bd70 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 22 Aug 2022 16:07:21 +0200 Subject: [PATCH 30/39] Fix folder inconsistencies Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/BungeeCore.java | 8 -------- src/de/steamwar/bungeecore/ServerStarter.java | 12 +++++++----- src/de/steamwar/bungeecore/commands/BauCommand.java | 4 ++-- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index a63d71a..591132a 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -61,11 +61,7 @@ public class BungeeCore extends Plugin { public static boolean MAIN_SERVER; public static String CHAT_PREFIX; - public static String WORLD_FOLDER; - public static String BAUWELT_PROTOTYP; public static String LOBBY_SERVER; - public static String USERWORLDS15; - public static String BAUWELT15; public static boolean EVENT_MODE; private static BungeeCore instance; @@ -299,11 +295,7 @@ public class BungeeCore extends Plugin { } CHAT_PREFIX = config.getString("prefix"); - WORLD_FOLDER = config.getString("worldfolder"); - BAUWELT_PROTOTYP = config.getString("bauweltprototyp"); 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")); diff --git a/src/de/steamwar/bungeecore/ServerStarter.java b/src/de/steamwar/bungeecore/ServerStarter.java index a0b4ec8..a805523 100644 --- a/src/de/steamwar/bungeecore/ServerStarter.java +++ b/src/de/steamwar/bungeecore/ServerStarter.java @@ -24,6 +24,8 @@ public class ServerStarter { private static final String EVENT_PATH = USER_HOME + "event/"; public static final String TEMP_WORLD_PATH = USER_HOME + "arenaserver/"; public static final String TUTORIAL_PATH = USER_HOME + "tutorials/"; + public static final String WORLDS12_PATH = USER_HOME + "userworlds/"; + public static final String WORLDS15_PATH = USER_HOME + "userworlds15/"; public static final String WORLDS19_PATH = USER_HOME + "userworlds19/"; private File directory = null; @@ -118,19 +120,19 @@ public class ServerStarter { public ServerStarter build15(UUID owner) { directory = new File(SERVER_PATH, "Bau15"); - worldDir = BungeeCore.USERWORLDS15; + worldDir = WORLDS15_PATH; worldName = String.valueOf(SteamwarUser.get(owner).getId()); - buildWithWorld(owner, BungeeCore.BAUWELT15); + buildWithWorld(owner, new File(directory, "Bauwelt").getPath()); return this; } public ServerStarter build12(UUID owner) { - directory = new File(SERVER_PATH, "UserBau"); + directory = new File(SERVER_PATH, "Bau12"); serverJar = "spigot-1.12.2.jar"; xmx = "256M"; - worldDir = BungeeCore.WORLD_FOLDER; + worldDir = WORLDS12_PATH; worldName = owner.toString(); - buildWithWorld(owner, BungeeCore.BAUWELT_PROTOTYP); + buildWithWorld(owner, new File(directory, "Bauwelt").getPath()); return this; } diff --git a/src/de/steamwar/bungeecore/commands/BauCommand.java b/src/de/steamwar/bungeecore/commands/BauCommand.java index 9f59bf4..41496b9 100644 --- a/src/de/steamwar/bungeecore/commands/BauCommand.java +++ b/src/de/steamwar/bungeecore/commands/BauCommand.java @@ -236,8 +236,8 @@ public class BauCommand extends BasicCommand { SteamwarUser user = SteamwarUser.get(p.getUniqueId()); versionSelector(p, args, 1, () -> deleteConfirmation(p, () -> deleteWorld(p, ServerStarter.WORLDS19_PATH + user.getId())), - () -> deleteConfirmation(p, () -> deleteWorld(p, BungeeCore.USERWORLDS15 + user.getId())), - () -> deleteConfirmation(p, () -> deleteWorld(p, BungeeCore.WORLD_FOLDER + p.getUniqueId().toString())), + () -> deleteConfirmation(p, () -> deleteWorld(p, ServerStarter.WORLDS15_PATH + user.getId())), + () -> deleteConfirmation(p, () -> deleteWorld(p, ServerStarter.WORLDS12_PATH + p.getUniqueId().toString())), () -> HelpCommand.sendBauHelp(ChatSender.of(p))); } From c4204cd54d09e1a770bbbb89cfbbacdebe18a73c Mon Sep 17 00:00:00 2001 From: yoyosource Date: Mon, 22 Aug 2022 18:43:36 +0200 Subject: [PATCH 31/39] Update CommonCore --- CommonCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CommonCore b/CommonCore index 47bd9af..d718969 160000 --- a/CommonCore +++ b/CommonCore @@ -1 +1 @@ -Subproject commit 47bd9af03eb987f94777f3b13f6ae6c30f153393 +Subproject commit d71896979ed397128306474da352cd56fc039a48 From 6d717eb1b022b543285c51634cf03b9a9660dd83 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Mon, 22 Aug 2022 18:43:59 +0200 Subject: [PATCH 32/39] Update CommonCore --- CommonCore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CommonCore b/CommonCore index 6cb3bc5..2c6ebc8 160000 --- a/CommonCore +++ b/CommonCore @@ -1 +1 @@ -Subproject commit 6cb3bc5ff5ee955ccdde281183991d0877e54169 +Subproject commit 2c6ebc82f3d8177191bcd7444dfe9607c35c952b From e29fb553f0dd2e99045d2c70cb2f2216f3a53692 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Mon, 22 Aug 2022 20:25:36 +0200 Subject: [PATCH 33/39] Remove deprecated guard api --- .../bungeecore/commands/DevCommand.java | 27 ++++++++--------- .../bungeecore/commands/PollCommand.java | 21 +++++-------- .../commands/PollresultCommand.java | 22 ++++++-------- .../bungeecore/commands/TutorialCommand.java | 21 ++++--------- src/de/steamwar/command/GuardChecker.java | 30 ------------------- src/de/steamwar/command/SWCommand.java | 2 +- 6 files changed, 36 insertions(+), 87 deletions(-) delete mode 100644 src/de/steamwar/command/GuardChecker.java diff --git a/src/de/steamwar/bungeecore/commands/DevCommand.java b/src/de/steamwar/bungeecore/commands/DevCommand.java index 4f06408..5858a49 100644 --- a/src/de/steamwar/bungeecore/commands/DevCommand.java +++ b/src/de/steamwar/bungeecore/commands/DevCommand.java @@ -19,6 +19,7 @@ package de.steamwar.bungeecore.commands; +import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.sql.Punishment; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.command.*; @@ -42,7 +43,7 @@ public class DevCommand extends SWCommand { } @Register - public void simpleCommand(@Guard ProxiedPlayer player) { + public void simpleCommand(@Validator ProxiedPlayer player) { updateDevServers(); ChatSender sender = ChatSender.of(player); if (devServers.isEmpty()) { @@ -63,7 +64,7 @@ public class DevCommand extends SWCommand { } @Register - public void selectedCommand(@Guard ProxiedPlayer player, @Mapper("dev") String name) { + public void selectedCommand(@Validator ProxiedPlayer player, @Mapper("dev") String name) { updateDevServers(); ChatSender sender = ChatSender.of(player); ServerInfo info = devServers.get(name.toLowerCase()); @@ -75,20 +76,16 @@ public class DevCommand extends SWCommand { player.connect(info); } - @ClassGuard(value = ProxiedPlayer.class, local = true) - public GuardChecker punishmentGuardChecker() { - return (commandSender, guardCheckType, previousArguments, s) -> { - ChatSender sender = ChatSender.of(commandSender); - if (guardCheckType == GuardCheckType.COMMAND) { - if (sender.user().isPunishedWithMessage(sender, Punishment.PunishmentType.NoDevServer)) { - return GuardResult.DENIED; - } - } else { - if (sender.user().isPunished(Punishment.PunishmentType.NoDevServer)) { - return GuardResult.DENIED; - } + @ClassValidator(value = ProxiedPlayer.class, local = true) + public TypeValidator punishmentGuardChecker() { + return (sender, value, messageSender) -> { + SteamwarUser user = SteamwarUser.get(value); + if (user.isPunished(Punishment.PunishmentType.NoDevServer)) { + Message message = user.punishmentMessage(Punishment.PunishmentType.NoDevServer); + messageSender.send(message.getFormat(), message.getParams()); + return false; } - return GuardResult.ALLOWED; + return true; }; } diff --git a/src/de/steamwar/bungeecore/commands/PollCommand.java b/src/de/steamwar/bungeecore/commands/PollCommand.java index e6fb755..48400e5 100644 --- a/src/de/steamwar/bungeecore/commands/PollCommand.java +++ b/src/de/steamwar/bungeecore/commands/PollCommand.java @@ -23,11 +23,8 @@ import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.listeners.PollSystem; import de.steamwar.bungeecore.sql.PollAnswer; import de.steamwar.bungeecore.sql.SteamwarUser; -import de.steamwar.command.GuardCheckType; -import de.steamwar.command.GuardChecker; -import de.steamwar.command.GuardResult; import de.steamwar.command.SWCommand; -import net.md_5.bungee.api.CommandSender; +import de.steamwar.command.TypeValidator; import net.md_5.bungee.api.connection.ProxiedPlayer; public class PollCommand extends SWCommand { @@ -42,7 +39,7 @@ public class PollCommand extends SWCommand { } @Register(noTabComplete = true) - public void answerPoll(@Guard ProxiedPlayer player, String answerString) { + public void answerPoll(@Validator ProxiedPlayer player, String answerString) { int answer; try { answer = Integer.parseUnsignedInt(answerString); @@ -62,16 +59,14 @@ public class PollCommand extends SWCommand { pollAnswer.setAnswer(answer); } - @ClassGuard(value = ProxiedPlayer.class, local = true) - public GuardChecker noPoll() { - return (commandSender, guardCheckType, previousArguments, s) -> { + @ClassValidator(value = ProxiedPlayer.class, local = true) + public TypeValidator noPoll() { + return (sender, value, messageSender) -> { if(PollSystem.noCurrentPoll()){ - if (guardCheckType == GuardCheckType.COMMAND) { - Message.send("POLL_NO_POLL", commandSender); - } - return GuardResult.DENIED; + messageSender.send("POLL_NO_POLL"); + return false; } - return GuardResult.ALLOWED; + return true; }; } } diff --git a/src/de/steamwar/bungeecore/commands/PollresultCommand.java b/src/de/steamwar/bungeecore/commands/PollresultCommand.java index 4011f4c..554efcc 100644 --- a/src/de/steamwar/bungeecore/commands/PollresultCommand.java +++ b/src/de/steamwar/bungeecore/commands/PollresultCommand.java @@ -22,10 +22,8 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.listeners.PollSystem; import de.steamwar.bungeecore.sql.PollAnswer; -import de.steamwar.command.GuardCheckType; -import de.steamwar.command.GuardChecker; -import de.steamwar.command.GuardResult; import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeValidator; import net.md_5.bungee.api.connection.ProxiedPlayer; import java.util.Map; @@ -37,7 +35,7 @@ public class PollresultCommand extends SWCommand { } @Register - public void genericCommand(@Guard ProxiedPlayer player) { + public void genericCommand(@Validator ProxiedPlayer player) { Map voted = PollAnswer.getCurrentResults(); Message.send("POLLRESULT_HEADER", player, voted.values().stream().reduce(Integer::sum).orElse(0), PollSystem.getQuestion()); for (Map.Entry e: voted.entrySet()) { @@ -45,16 +43,14 @@ public class PollresultCommand extends SWCommand { } } - @ClassGuard(value = ProxiedPlayer.class, local = true) - public GuardChecker noPoll() { - return (commandSender, guardCheckType, previousArguments, s) -> { - if(PollSystem.noCurrentPoll()){ - if (guardCheckType == GuardCheckType.COMMAND) { - Message.send("POLL_NO_POLL", commandSender); - } - return GuardResult.DENIED; + @ClassValidator(value = ProxiedPlayer.class, local = true) + public TypeValidator noPoll() { + return (sender, value, messageSender) -> { + if (PollSystem.noCurrentPoll()) { + messageSender.send("POLL_NO_POLL"); + return false; } - return GuardResult.ALLOWED; + return true; }; } } diff --git a/src/de/steamwar/bungeecore/commands/TutorialCommand.java b/src/de/steamwar/bungeecore/commands/TutorialCommand.java index e5e3134..72d0e2a 100644 --- a/src/de/steamwar/bungeecore/commands/TutorialCommand.java +++ b/src/de/steamwar/bungeecore/commands/TutorialCommand.java @@ -26,9 +26,8 @@ import de.steamwar.bungeecore.inventory.SWListInv; import de.steamwar.bungeecore.inventory.SWStreamInv; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.bungeecore.sql.Tutorial; -import de.steamwar.command.GuardChecker; -import de.steamwar.command.GuardResult; import de.steamwar.command.SWCommand; +import de.steamwar.command.TypeValidator; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -78,22 +77,14 @@ public class TutorialCommand extends SWCommand { } @Register("unreleased") - public void unreleased(@Guard("unreleased") ProxiedPlayer player) { + public void unreleased(@Validator("unreleased") ProxiedPlayer player) { openInventory(player, false, false); } - @Guard("unreleased") - public GuardChecker unreleasedChecker() { - return (commandSender, guardCheckType, previousArguments, s) -> { - if (commandSender instanceof ProxiedPlayer) { - if (SteamwarUser.get(((ProxiedPlayer) commandSender).getUniqueId()).getUserGroup().isTeamGroup()) { - return GuardResult.ALLOWED; - } else { - return GuardResult.DENIED_WITH_HELP; - } - } else { - return GuardResult.ALLOWED; - } + @Validator("unreleased") + public TypeValidator unreleasedChecker() { + return (sender, value, messageSender) -> { + return (SteamwarUser.get((value).getUniqueId()).getUserGroup().isTeamGroup()); }; } diff --git a/src/de/steamwar/command/GuardChecker.java b/src/de/steamwar/command/GuardChecker.java deleted file mode 100644 index 06c9110..0000000 --- a/src/de/steamwar/command/GuardChecker.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2020 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.command; - -import net.md_5.bungee.api.CommandSender; - -@FunctionalInterface -public interface GuardChecker extends AbstractGuardChecker { - /** - * While guarding the first parameter of the command the parameter s of this method is {@code null} - */ - GuardResult guard(CommandSender commandSender, GuardCheckType guardCheckType, String[] previousArguments, String s); -} diff --git a/src/de/steamwar/command/SWCommand.java b/src/de/steamwar/command/SWCommand.java index f8c3647..3938c61 100644 --- a/src/de/steamwar/command/SWCommand.java +++ b/src/de/steamwar/command/SWCommand.java @@ -149,7 +149,7 @@ public class SWCommand extends AbstractSWCommand { } if (args.length == 0 || atomicInteger.get() == commandList.size()) { commandList.forEach(subCommand -> { - if (subCommand.guardChecker == null || subCommand.guardChecker.guard(p, GuardCheckType.TAB_COMPLETE, new String[0], null) == GuardResult.ALLOWED) { + if (subCommand.validator == null || subCommand.validator.validate(p, p, (s, args1) -> {})) { send(chatSender, subCommand); } }); From 3f99585b350f8e0a401d90c3b06e6fc5a8249052 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Mon, 22 Aug 2022 21:09:27 +0200 Subject: [PATCH 34/39] Rebuild --- src/de/steamwar/command/SWCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/de/steamwar/command/SWCommand.java b/src/de/steamwar/command/SWCommand.java index 3938c61..3242eb5 100644 --- a/src/de/steamwar/command/SWCommand.java +++ b/src/de/steamwar/command/SWCommand.java @@ -156,6 +156,7 @@ public class SWCommand extends AbstractSWCommand { } } + private void send(ChatSender chatSender, SubCommand subCommand) { try { for (String s : subCommand.description) { From 5c127e0887f18f9b10ee74db4f82f3da23e0b704 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Mon, 22 Aug 2022 21:10:35 +0200 Subject: [PATCH 35/39] Rebuild --- CommonCore | 2 +- src/de/steamwar/command/SWCommand.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CommonCore b/CommonCore index 2c6ebc8..3701f6f 160000 --- a/CommonCore +++ b/CommonCore @@ -1 +1 @@ -Subproject commit 2c6ebc82f3d8177191bcd7444dfe9607c35c952b +Subproject commit 3701f6f5ff10fa97d6816d5f57c85f7213f7fb3e diff --git a/src/de/steamwar/command/SWCommand.java b/src/de/steamwar/command/SWCommand.java index 3242eb5..3938c61 100644 --- a/src/de/steamwar/command/SWCommand.java +++ b/src/de/steamwar/command/SWCommand.java @@ -156,7 +156,6 @@ public class SWCommand extends AbstractSWCommand { } } - private void send(ChatSender chatSender, SubCommand subCommand) { try { for (String s : subCommand.description) { From a782f811fc02fca7d5273d6e324fea9c77f7f69d Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 23 Aug 2022 16:57:19 +0200 Subject: [PATCH 36/39] Add english aliases Signed-off-by: Lixfel --- .../bungeecore/commands/HelpCommand.java | 32 +++++++++---------- .../bungeecore/commands/RegelnCommand.java | 3 +- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/de/steamwar/bungeecore/commands/HelpCommand.java b/src/de/steamwar/bungeecore/commands/HelpCommand.java index 7bcce92..e2a66f8 100644 --- a/src/de/steamwar/bungeecore/commands/HelpCommand.java +++ b/src/de/steamwar/bungeecore/commands/HelpCommand.java @@ -36,17 +36,17 @@ public class HelpCommand extends BasicCommand { if (args.length < 1) { printPage(sender, ClickEvent.Action.RUN_COMMAND, "HELP_LOBBY", "/l", - "HELP_BAU", "/bau", - "HELP_BAUSERVER", "/help bau", + "HELP_BAU", "/build", + "HELP_BAUSERVER", "/help build", "HELP_FIGHT", "/fight", "HELP_CHALLENGE", "/challenge", "HELP_HISTORIC", "/historic", "HELP_TEAM", "/team", "HELP_JOIN", "/join", "HELP_LOCAL", "/local"); - }else if (args[0].equalsIgnoreCase("bauserver")) { + }else if (args[0].equalsIgnoreCase("buildserver")) { sendBauHelp(sender); - }else if (args[0].equalsIgnoreCase("bau")) { + }else if (args[0].equalsIgnoreCase("build")) { bauHelpGroup(sender, args); } } @@ -86,22 +86,22 @@ public class HelpCommand extends BasicCommand { private static void sendBauHelpGroup(ChatSender sender) { printPage(sender, ClickEvent.Action.RUN_COMMAND, - "HELP_BAU_GROUP_ADMIN", "/help bau admin", - "HELP_BAU_GROUP_WORLD", "/help bau world", - "HELP_BAU_GROUP_PLAYER", "/help bau player", - "HELP_BAU_GROUP_WE", "/help bau we", - "HELP_BAU_GROUP_OTHER", "/help bau other"); + "HELP_BAU_GROUP_ADMIN", "/help build admin", + "HELP_BAU_GROUP_WORLD", "/help build world", + "HELP_BAU_GROUP_PLAYER", "/help build player", + "HELP_BAU_GROUP_WE", "/help build we", + "HELP_BAU_GROUP_OTHER", "/help build other"); } static void sendBauHelp(ChatSender sender) { printPage(sender, ClickEvent.Action.SUGGEST_COMMAND, - "HELP_BAU_TP", "/bau tp ", - "HELP_BAU_ADDMEMBER", "/bau addmember ", - "HELP_BAU_DELMEMBER", "/bau delmember ", - "HELP_BAU_TOGGLEWE", "/bau togglewe ", - "HELP_BAU_TOGGLEWORLD", "/bau toggleworld ", - "HELP_BAU_DELETE", "/bau delete ", - "HELP_BAU_TESTARENA", "/bau testarena "); + "HELP_BAU_TP", "/build tp ", + "HELP_BAU_ADDMEMBER", "/build addmember ", + "HELP_BAU_DELMEMBER", "/build delmember ", + "HELP_BAU_TOGGLEWE", "/build togglewe ", + "HELP_BAU_TOGGLEWORLD", "/build toggleworld ", + "HELP_BAU_DELETE", "/build delete ", + "HELP_BAU_TESTARENA", "/build testarena "); } private static void printPage(ChatSender sender, ClickEvent.Action action, String... args) { diff --git a/src/de/steamwar/bungeecore/commands/RegelnCommand.java b/src/de/steamwar/bungeecore/commands/RegelnCommand.java index 2721b73..63731a5 100644 --- a/src/de/steamwar/bungeecore/commands/RegelnCommand.java +++ b/src/de/steamwar/bungeecore/commands/RegelnCommand.java @@ -21,13 +21,12 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.Message; import de.steamwar.command.SWCommand; -import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.connection.ProxiedPlayer; public class RegelnCommand extends SWCommand { public RegelnCommand() { - super("regeln"); + super("regeln", null, "rules"); } @Register From a27f74af56969217f2e9c8db467dc4708cc80086 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 23 Aug 2022 16:59:53 +0200 Subject: [PATCH 37/39] Fix build Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/commands/PollCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/commands/PollCommand.java b/src/de/steamwar/bungeecore/commands/PollCommand.java index 48400e5..5e179cd 100644 --- a/src/de/steamwar/bungeecore/commands/PollCommand.java +++ b/src/de/steamwar/bungeecore/commands/PollCommand.java @@ -34,7 +34,7 @@ public class PollCommand extends SWCommand { } @Register - public void genericCommand(@Guard ProxiedPlayer player) { + public void genericCommand(ProxiedPlayer player) { PollSystem.sendPoll(player); } From 4217afef59a41063034bce4a84226d63c54628fb Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 23 Aug 2022 17:21:49 +0200 Subject: [PATCH 38/39] Fix 7/ replacer Signed-off-by: Lixfel --- .../bungeecore/listeners/ChatListener.java | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/src/de/steamwar/bungeecore/listeners/ChatListener.java b/src/de/steamwar/bungeecore/listeners/ChatListener.java index df006f9..827fe3e 100644 --- a/src/de/steamwar/bungeecore/listeners/ChatListener.java +++ b/src/de/steamwar/bungeecore/listeners/ChatListener.java @@ -56,31 +56,43 @@ public class ChatListener extends BasicListener { ProxiedPlayer player = (ProxiedPlayer) e.getSender(); String message = e.getMessage(); + e.setCancelled(true); + if (message.contains("jndi:ldap")) { - e.setCancelled(true); SteamwarUser.get(player).punishPerma(Punishment.PunishmentType.Ban, "Versuchte Exploit-Ausnutzung", 0); return; } - message = sanitize7(message); + if (isCommand(player, message)) + return; - if (message.startsWith("/")) { - if(filteredCommand((CommandSender) e.getSender(), message)) - e.setCancelled(true); + Subserver subserver = Subserver.getSubserver(player); + if(subserver != null && subserver.getType() == Servertype.ARENA && subserver.getServer() == player.getServer().getInfo()) { + localChat(player, message); + } else if (message.startsWith("+")) { + localChat(player, message.substring(1)); } else { - e.setCancelled(true); - - Subserver subserver = Subserver.getSubserver(player); - if(subserver != null && subserver.getType() == Servertype.ARENA && subserver.getServer() == player.getServer().getInfo()) { - localChat(player, message); - } else if (message.startsWith("+")) { - localChat(player, message.substring(1)); - } else { - sendChat(ChatSender.of(player), ChatSender.globalReceivers(), "CHAT_GLOBAL", null, message); - } + sendChat(ChatSender.of(player), ChatSender.globalReceivers(), "CHAT_GLOBAL", null, message); } } + private static boolean isCommand(ProxiedPlayer player, String message) { + String command = message.substring(1); + boolean isCommand = message.startsWith("/") || (message.startsWith("7") && command.split(" ", 2)[0].matches("[7/]?[A-Za-z]+")); + if(isCommand && !ProxyServer.getInstance().getPluginManager().dispatchCommand(player, command)) { + if(command.startsWith("7")) + command = "/" + command.substring(1); + message = "/" + command; + + if(filteredCommand(player, message)) + return true; + + Chat19.chat(player, message); + } + + return isCommand; + } + public static void sendChat(ChatSender sender, Stream receivers, String format, ChatSender msgReceiver, String message) { SteamwarUser user = sender.user(); final String coloredMessage = (user.getUserGroup() != UserGroup.Member || coloredTeams.contains(user.getTeam())) ? ChatColor.translateAlternateColorCodes('&', message) : message; @@ -114,8 +126,6 @@ public class ChatListener extends BasicListener { return; } - message = sanitize7(message); - if(ChatListener.filteredCommand(player, message)) return; @@ -167,17 +177,6 @@ public class ChatListener extends BasicListener { group.getChatColorCode())); } - private static String sanitize7(String message) { - String begin = message.split(" ", 2)[0]; - if(begin.startsWith("7") && begin.substring(1).matches("[A-Za-z]+")){ - message = "/" + message.substring(1); - }else if((begin.startsWith("77") || begin.startsWith("7/") || begin.startsWith("/7")) && begin.substring(2).matches("[A-Za-z]+")){ - message = "//" + message.substring(2); - } - - return message; - } - private static boolean filteredCommand(CommandSender sender, String message) { String command = message.split(" ", 2)[0]; if(command.startsWith("/") && command.contains(":")) { From a6407d6bb04dd9c2df69c6ffa379ea15be9eaaba Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 23 Aug 2022 18:10:52 +0200 Subject: [PATCH 39/39] Fix tablist failure on softreload Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/tablist/Tablist.java | 9 +++++++-- src/de/steamwar/bungeecore/tablist/TablistManager.java | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/bungeecore/tablist/Tablist.java b/src/de/steamwar/bungeecore/tablist/Tablist.java index b9acc96..ad400cb 100644 --- a/src/de/steamwar/bungeecore/tablist/Tablist.java +++ b/src/de/steamwar/bungeecore/tablist/Tablist.java @@ -62,7 +62,7 @@ public class Tablist extends MessageToMessageDecoder { this.player = player; this.viewer = ChatSender.of(player); this.directTabItems = Storage.directTabItems.computeIfAbsent(player, p -> new HashMap<>()); - onServerSwitch(); + injection(); } public void update(TablistPart global, int seconds) { @@ -145,12 +145,17 @@ public class Tablist extends MessageToMessageDecoder { } public void onServerSwitch() { - connection = (ServerConnection) player.getServer(); + injection(); + synchronized (directTabItems) { sendNpcPacket(npcs.stream().map(npc -> directTabItems.get(npc).getUsername()).collect(Collectors.toList()), true); directTabItems.clear(); npcs.clear(); } + } + + private void injection() { + connection = (ServerConnection) player.getServer(); if(connection != null) { ChannelPipeline pipeline = connection.getCh().getHandle().pipeline(); diff --git a/src/de/steamwar/bungeecore/tablist/TablistManager.java b/src/de/steamwar/bungeecore/tablist/TablistManager.java index 0f02f55..b6e7875 100644 --- a/src/de/steamwar/bungeecore/tablist/TablistManager.java +++ b/src/de/steamwar/bungeecore/tablist/TablistManager.java @@ -51,7 +51,9 @@ public class TablistManager extends BasicListener { public TablistManager() { ProxyServer.getInstance().getScheduler().schedule(BungeeCore.get(), this::updateTablist, 1, 1, TimeUnit.SECONDS); - ProxyServer.getInstance().getPlayers().forEach(player -> tablists.put(player, new Tablist(player))); + synchronized (tablists) { + ProxyServer.getInstance().getPlayers().forEach(player -> tablists.put(player, new Tablist(player))); + } } @EventHandler