From 1a91e561faf8c282c195ae73730f2fab1243c0f8 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 7 Jun 2022 22:38:08 +0200 Subject: [PATCH 01/11] Disable SWTSI for now --- src/de/steamwar/bungeecore/commands/TeamCommand.java | 10 ++++++++++ src/de/steamwar/messages/BungeeCore.properties | 2 ++ src/de/steamwar/messages/BungeeCore_de.properties | 2 ++ 3 files changed, 14 insertions(+) diff --git a/src/de/steamwar/bungeecore/commands/TeamCommand.java b/src/de/steamwar/bungeecore/commands/TeamCommand.java index bde57e0..a6f4acc 100644 --- a/src/de/steamwar/bungeecore/commands/TeamCommand.java +++ b/src/de/steamwar/bungeecore/commands/TeamCommand.java @@ -565,6 +565,11 @@ public class TeamCommand extends BasicCommand { } private void tp(ProxiedPlayer player, SteamwarUser user, Team team, String[] args){ + if (!user.getUserGroup().isAdminGroup()) { + Message.send("DISABLED", player); + return; + } + if(args.length == 1){ if(notInTeam(player, user)) return; @@ -598,6 +603,11 @@ public class TeamCommand extends BasicCommand { } private void server(ProxiedPlayer player, SteamwarUser user, Team team, String[] args){ + if (!user.getUserGroup().isAdminGroup()) { + Message.send("DISABLED", player); + return; + } + if(notLeader(player, user, team)) return; if (user.isPunishedWithMessage(ChatSender.of(player), Punishment.PunishmentType.NoTeamServer)) { diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties index a71a2b9..0ee445c 100644 --- a/src/de/steamwar/messages/BungeeCore.properties +++ b/src/de/steamwar/messages/BungeeCore.properties @@ -13,6 +13,8 @@ STEAMWAR_BRAND=§eSteam§8War.de §7({0}) §r<- §e{1} §7({2})§r DEV_NO_SERVER=§cThe server is currently not available. DEV_UNKNOWN_SERVER=§cPlease specify a dev server. +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. diff --git a/src/de/steamwar/messages/BungeeCore_de.properties b/src/de/steamwar/messages/BungeeCore_de.properties index 830ae45..66d79db 100644 --- a/src/de/steamwar/messages/BungeeCore_de.properties +++ b/src/de/steamwar/messages/BungeeCore_de.properties @@ -10,6 +10,8 @@ INVALID_TIME=§cUngültige Zeitangabe. DEV_NO_SERVER=§cDer Server ist derzeit nicht erreichbar. DEV_UNKNOWN_SERVER=§cBitte gib einen DevServer an. +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. From 943988778521ca4a0449fd819605dc6a1fd44ac1 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 8 Jun 2022 13:18:24 +0200 Subject: [PATCH 02/11] Fix TablistManager for newer BTLP plugin --- CommonCore | 2 +- src/de/steamwar/bungeecore/listeners/TablistManager.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CommonCore b/CommonCore index 919c4d5..492894c 160000 --- a/CommonCore +++ b/CommonCore @@ -1 +1 @@ -Subproject commit 919c4d525ea39756b24bd961bb72d8d58bdd5bd4 +Subproject commit 492894ca8d41ee0bde4dcb9d520db5f7478c50c7 diff --git a/src/de/steamwar/bungeecore/listeners/TablistManager.java b/src/de/steamwar/bungeecore/listeners/TablistManager.java index b7dd44b..6730c51 100644 --- a/src/de/steamwar/bungeecore/listeners/TablistManager.java +++ b/src/de/steamwar/bungeecore/listeners/TablistManager.java @@ -29,6 +29,7 @@ import de.steamwar.bungeecore.Subserver; import de.steamwar.bungeecore.comms.packets.FightInfoPacket; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.bungeecore.sql.UserGroup; +import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -48,7 +49,9 @@ public class TablistManager extends BasicListener { @EventHandler public synchronized void onJoin(PostLoginEvent e){ - tablists.put(e.getPlayer(), new Tablist(e.getPlayer())); + BungeeCord.getInstance().getScheduler().schedule(BungeeCore.get(), () -> { + tablists.put(e.getPlayer(), new Tablist(e.getPlayer())); + }, 1, TimeUnit.SECONDS); } @EventHandler From bad4efd52096c398dd5d23f1ee6ff3b085568d46 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 8 Jun 2022 13:28:56 +0200 Subject: [PATCH 03/11] Convert everything from waterfall to plain bungee --- CommonCore | 2 +- build.gradle | 2 +- .../steamwar/bungeecore/commands/TeamCommand.java | 14 ++++++++++++++ .../listeners/SubserverProtocolFixer.java | 7 ++++--- .../bungeecore/listeners/TablistManager.java | 2 +- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/CommonCore b/CommonCore index 919c4d5..492894c 160000 --- a/CommonCore +++ b/CommonCore @@ -1 +1 @@ -Subproject commit 919c4d525ea39756b24bd961bb72d8d58bdd5bd4 +Subproject commit 492894ca8d41ee0bde4dcb9d520db5f7478c50c7 diff --git a/build.gradle b/build.gradle index 7b1f796..44b7071 100644 --- a/build.gradle +++ b/build.gradle @@ -92,7 +92,7 @@ dependencies { annotationProcessor 'org.projectlombok:lombok:1.18.22' testAnnotationProcessor 'org.projectlombok:lombok:1.18.22' - compileOnly files("${projectDir}/lib/BungeeCord.jar") + compileOnly files("${projectDir}/lib/BungeeCord-Neu.jar") compileOnly files("${projectDir}/lib/PersistentBungeeCore.jar") compileOnly files("${projectDir}/lib/BungeeTabListPlus.jar") implementation("net.dv8tion:JDA:4.3.0_299") { diff --git a/src/de/steamwar/bungeecore/commands/TeamCommand.java b/src/de/steamwar/bungeecore/commands/TeamCommand.java index a6f4acc..f5aab33 100644 --- a/src/de/steamwar/bungeecore/commands/TeamCommand.java +++ b/src/de/steamwar/bungeecore/commands/TeamCommand.java @@ -31,6 +31,7 @@ import net.md_5.bungee.UserConnection; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.ServerConnectRequest; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.HoverEvent; @@ -595,11 +596,24 @@ public class TeamCommand extends BasicCommand { ProxyServer.getInstance().getServers().put(info.getName(), info); return info; }); + player.connect(ServerConnectRequest.builder() + .target(serverInfo) + .connectTimeout(BungeeCord.getInstance().getConfig().getServerConnectTimeout()) + .retry(false) + .reason(ServerConnectEvent.Reason.PLUGIN) + .callback((success, error) -> { + if (error != null) { + Message.send("TEAM_OFFLINE", player); + } + }) + .build()); + /* ((UserConnection) player).connect(serverInfo, (success, error) -> { if (error != null) { Message.send("TEAM_OFFLINE", player); } }, false, ServerConnectEvent.Reason.PLUGIN, BungeeCord.getInstance().getConfig().getServerConnectTimeout(), false); + */ } private void server(ProxiedPlayer player, SteamwarUser user, Team team, String[] args){ diff --git a/src/de/steamwar/bungeecore/listeners/SubserverProtocolFixer.java b/src/de/steamwar/bungeecore/listeners/SubserverProtocolFixer.java index 927d47c..ff74ed7 100644 --- a/src/de/steamwar/bungeecore/listeners/SubserverProtocolFixer.java +++ b/src/de/steamwar/bungeecore/listeners/SubserverProtocolFixer.java @@ -19,12 +19,12 @@ package de.steamwar.bungeecore.listeners; -import io.github.waterfallmc.waterfall.utils.UUIDUtils; import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.event.LoginEvent; import net.md_5.bungee.connection.InitialHandler; import net.md_5.bungee.connection.LoginResult; import net.md_5.bungee.event.EventHandler; +import net.md_5.bungee.protocol.Property; import net.md_5.bungee.util.AddressUtil; import java.lang.reflect.Field; @@ -50,11 +50,12 @@ public class SubserverProtocolFixer extends BasicListener { public void loginEvent(LoginEvent e) { InitialHandler initialHandler = ((InitialHandler) e.getConnection()); - String extraData = "\00" + AddressUtil.sanitizeAddress(inetSocketAddress) + "\00" + UUIDUtils.undash(initialHandler.getUniqueId().toString()); + String undashedUUID = initialHandler.getUniqueId().toString().replace("-", ""); + String extraData = "\00" + AddressUtil.sanitizeAddress(inetSocketAddress) + "\00" + undashedUUID; LoginResult result = initialHandler.getLoginProfile(); if (result != null) { - LoginResult.Property[] properties = result.getProperties(); + Property[] properties = result.getProperties(); if (properties.length > 0) { extraData += "\00" + BungeeCord.getInstance().gson.toJson(properties); } diff --git a/src/de/steamwar/bungeecore/listeners/TablistManager.java b/src/de/steamwar/bungeecore/listeners/TablistManager.java index b7dd44b..6b9ea41 100644 --- a/src/de/steamwar/bungeecore/listeners/TablistManager.java +++ b/src/de/steamwar/bungeecore/listeners/TablistManager.java @@ -88,7 +88,7 @@ public class TablistManager extends BasicListener { //Calculate server-player-map tablist = new TablistGroup(true, ""); TablistGroup bau = new TablistGroup(false, "Bau"); - for (ServerInfo server : ProxyServer.getInstance().getServersCopy().values()){ + for (ServerInfo server : new ArrayList<>(ProxyServer.getInstance().getServers().values())){ if(server.getPlayers().isEmpty()) continue; From f63213c9aa43647eab219f1ebf692c274e867f79 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 8 Jun 2022 16:05:17 +0200 Subject: [PATCH 04/11] Fix build.gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 44b7071..7b1f796 100644 --- a/build.gradle +++ b/build.gradle @@ -92,7 +92,7 @@ dependencies { annotationProcessor 'org.projectlombok:lombok:1.18.22' testAnnotationProcessor 'org.projectlombok:lombok:1.18.22' - compileOnly files("${projectDir}/lib/BungeeCord-Neu.jar") + compileOnly files("${projectDir}/lib/BungeeCord.jar") compileOnly files("${projectDir}/lib/PersistentBungeeCore.jar") compileOnly files("${projectDir}/lib/BungeeTabListPlus.jar") implementation("net.dv8tion:JDA:4.3.0_299") { From 6769fd88e7c0105a92d0da5527911bf8ed19fc86 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 8 Jun 2022 16:06:31 +0200 Subject: [PATCH 05/11] Fix TablistManager --- src/de/steamwar/bungeecore/listeners/TablistManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/listeners/TablistManager.java b/src/de/steamwar/bungeecore/listeners/TablistManager.java index 6730c51..48d9adb 100644 --- a/src/de/steamwar/bungeecore/listeners/TablistManager.java +++ b/src/de/steamwar/bungeecore/listeners/TablistManager.java @@ -50,7 +50,9 @@ public class TablistManager extends BasicListener { @EventHandler public synchronized void onJoin(PostLoginEvent e){ BungeeCord.getInstance().getScheduler().schedule(BungeeCore.get(), () -> { - tablists.put(e.getPlayer(), new Tablist(e.getPlayer())); + if (BungeeCord.getInstance().getPlayer(e.getPlayer().getUniqueId()) != null) { + tablists.put(e.getPlayer(), new Tablist(e.getPlayer())); + } }, 1, TimeUnit.SECONDS); } From 2f06ea374ec75e812a1555946c6efec8ac9b0726 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 8 Jun 2022 16:18:04 +0200 Subject: [PATCH 06/11] Simplify connection detection Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/listeners/TablistManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/listeners/TablistManager.java b/src/de/steamwar/bungeecore/listeners/TablistManager.java index 48d9adb..f2a76d5 100644 --- a/src/de/steamwar/bungeecore/listeners/TablistManager.java +++ b/src/de/steamwar/bungeecore/listeners/TablistManager.java @@ -50,7 +50,7 @@ public class TablistManager extends BasicListener { @EventHandler public synchronized void onJoin(PostLoginEvent e){ BungeeCord.getInstance().getScheduler().schedule(BungeeCore.get(), () -> { - if (BungeeCord.getInstance().getPlayer(e.getPlayer().getUniqueId()) != null) { + if (e.getPlayer().isConnected()) { tablists.put(e.getPlayer(), new Tablist(e.getPlayer())); } }, 1, TimeUnit.SECONDS); From 01ea928652bc619f654087006593a3a4e6bd76f1 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 10 Jun 2022 19:30:15 +0200 Subject: [PATCH 07/11] 1.19 Build server Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/ServerStarter.java | 10 +++++----- src/de/steamwar/bungeecore/commands/BauCommand.java | 12 +++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/de/steamwar/bungeecore/ServerStarter.java b/src/de/steamwar/bungeecore/ServerStarter.java index 36ccac6..35a97dd 100644 --- a/src/de/steamwar/bungeecore/ServerStarter.java +++ b/src/de/steamwar/bungeecore/ServerStarter.java @@ -26,7 +26,7 @@ public class ServerStarter { 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 WORLDS18_PATH = BACKBONE + "userworlds18/"; + public static final String WORLDS19_PATH = BACKBONE + "userworlds19/"; private File directory = null; private String worldDir = null; @@ -109,10 +109,10 @@ public class ServerStarter { return this; } - public ServerStarter build18(UUID owner) { - directory = new File(SERVER_PATH, "Bau18"); - serverJar = "paper-1.18.2.jar"; - worldDir = WORLDS18_PATH; + public ServerStarter build19(UUID owner) { + directory = new File(SERVER_PATH, "Bau19"); + serverJar = "paper-1.19.jar"; + worldDir = WORLDS19_PATH; worldName = String.valueOf(SteamwarUser.get(owner).getId()); 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 4840915..ea21cd9 100644 --- a/src/de/steamwar/bungeecore/commands/BauCommand.java +++ b/src/de/steamwar/bungeecore/commands/BauCommand.java @@ -46,7 +46,7 @@ public class BauCommand extends BasicCommand { ProxiedPlayer p = (ProxiedPlayer) sender; versionSelector(p, args, 0, - () -> new ServerStarter().build18(p.getUniqueId()).send(p).start(), + () -> new ServerStarter().build19(p.getUniqueId()).send(p).start(), () -> new ServerStarter().build15(p.getUniqueId()).send(p).start(), () -> new ServerStarter().build12(p.getUniqueId()).send(p).start(), () -> { @@ -128,13 +128,13 @@ public class BauCommand extends BasicCommand { } versionSelector(p, args, 2, - () -> new ServerStarter().build18(worldOwner.getUuid()).send(p).start(), + () -> new ServerStarter().build19(worldOwner.getUuid()).send(p).start(), () -> new ServerStarter().build15(worldOwner.getUuid()).send(p).start(), () -> new ServerStarter().build12(worldOwner.getUuid()).send(p).start(), () -> HelpCommand.sendBauHelp(ChatSender.of(p))); } - private static void versionSelector(ProxiedPlayer p, String[] args, int pos, Runnable run18, Runnable run15, Runnable run12, Runnable runElse) { + 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 @@ -146,9 +146,11 @@ public class BauCommand extends BasicCommand { } switch (args[pos].toLowerCase()) { + case "19": + case "1.19": case "18": case "1.18": - run18.run(); + run19.run(); break; case "ws": case "warship": @@ -231,7 +233,7 @@ public class BauCommand extends BasicCommand { private static void delete(ProxiedPlayer p, String[] args){ SteamwarUser user = SteamwarUser.get(p.getUniqueId()); versionSelector(p, args, 1, - () -> deleteConfirmation(p, () -> deleteWorld(p, ServerStarter.WORLDS18_PATH + user.getId())), + () -> 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())), () -> HelpCommand.sendBauHelp(ChatSender.of(p))); From 3d57f9ca805cb3cb77e8ad32aac7ac199da1b62e Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sun, 12 Jun 2022 18:17:06 +0200 Subject: [PATCH 08/11] Add debug messages for fabric checks --- .../bungeecore/listeners/mods/Fabric.java | 20 +++++++++---------- .../steamwar/messages/BungeeCore.properties | 2 +- .../messages/BungeeCore_de.properties | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/de/steamwar/bungeecore/listeners/mods/Fabric.java b/src/de/steamwar/bungeecore/listeners/mods/Fabric.java index 4e0a852..0bbbee3 100644 --- a/src/de/steamwar/bungeecore/listeners/mods/Fabric.java +++ b/src/de/steamwar/bungeecore/listeners/mods/Fabric.java @@ -59,7 +59,7 @@ public class Fabric extends BasicListener { continue; } if (System.currentTimeMillis() - entry.getValue() > TimeUnit.SECONDS.toMillis(20)) { - banPlayer(SteamwarUser.get(entry.getKey()), entry.getKey()); + banPlayer(SteamwarUser.get(entry.getKey()), entry.getKey(), "Expected message not received"); return; } } @@ -82,7 +82,7 @@ public class Fabric extends BasicListener { if (!Storage.fabricCheckedPlayers.containsKey(player)) { synchronized (Storage.fabricExpectPluginMessage) { if (Storage.fabricExpectPluginMessage.containsKey(player)) { - banPlayer(user, player); + banPlayer(user, player, "Was not fabric checked but send message nonetheless"); return; } } @@ -95,7 +95,7 @@ public class Fabric extends BasicListener { Utils.VarInt varInt = Utils.readVarInt(data,0); if(data.length != varInt.length + varInt.value) { - banPlayer(user,player); + banPlayer(user,player, "Invalid message length"); return; } @@ -106,7 +106,7 @@ public class Fabric extends BasicListener { try{ dataString = new String(data, StandardCharsets.UTF_8); }catch (UnsupportedCharsetException exception) { - banPlayer(user, player); + banPlayer(user, player, "Unsupported charset"); return; } @@ -115,7 +115,7 @@ public class Fabric extends BasicListener { try { array = new JsonParser().parse(dataString).getAsJsonArray(); }catch (JsonSyntaxException exception) { - banPlayer(user, player); + banPlayer(user, player, "Invalid json"); return; } @@ -126,12 +126,12 @@ public class Fabric extends BasicListener { boolean isSorted = isSortedAlphabetically(mods); if(!isSorted) { - banPlayer(user, player); + banPlayer(user, player, "Mods are not sorted alphabetically"); return; } if(!neededModsContained(mods)) { - banPlayer(user, player); + banPlayer(user, player, "Needed mods are not contained"); return; } @@ -139,7 +139,7 @@ public class Fabric extends BasicListener { if (Storage.fabricCheckedPlayers.containsKey(player)) { long current = Storage.fabricCheckedPlayers.get(player); if (current != dataString.hashCode()) { - banPlayer(user, player); + banPlayer(user, player, ""); return; } } else { @@ -176,11 +176,11 @@ public class Fabric extends BasicListener { .count() == neededMods.size(); } - public void banPlayer(SteamwarUser user, ProxiedPlayer player) { + public void banPlayer(SteamwarUser user, ProxiedPlayer player, String reason) { user.punishPerma(Punishment.PunishmentType.Ban, Message.parse("MODIFICATION_BAN_MESSAGE", player, user.getUserName(), user.getId()), 0); - BungeeCore.log(Level.SEVERE,Message.parse("MODIFICATION_BAN_LOG", player, user.getUserName())); + BungeeCore.log(Level.SEVERE,Message.parse("MODIFICATION_BAN_LOG", player, user.getUserName(), reason)); } public static void remove(ProxiedPlayer player) { diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties index 0ee445c..ec98820 100644 --- a/src/de/steamwar/messages/BungeeCore.properties +++ b/src/de/steamwar/messages/BungeeCore.properties @@ -615,7 +615,7 @@ RANK_NEEDED_FIGHTS_LEFT={0} §8(§e{1}§7 fights needed§8) #Fabric Mod Sender MODIFICATION_BAN_MESSAGE=You tried to bypass / modify the FabricModSender! -MODIFICATION_BAN_LOG={0} has tried to edit / bypass the FabricModSender! +MODIFICATION_BAN_LOG={0} has tried to edit / bypass the FabricModSender! Reason: {1} MODIFICATION_CHECK_SUCCESS=§eYour mods have been checked and you are now allowed to join arenas! #Arena Merging diff --git a/src/de/steamwar/messages/BungeeCore_de.properties b/src/de/steamwar/messages/BungeeCore_de.properties index 66d79db..f118020 100644 --- a/src/de/steamwar/messages/BungeeCore_de.properties +++ b/src/de/steamwar/messages/BungeeCore_de.properties @@ -595,7 +595,7 @@ RANK_NEEDED_FIGHTS_LEFT={0} §8(§7noch §e{1}§7 Kämpfe nötig§8) #Fabric Mod Sender MODIFICATION_BAN_MESSAGE=Du hast probiert den FabricModSender zu umgehen / zu modifizieren! -MODIFICATION_BAN_LOG={0} hat probiert den Fabric Mod Sender zu editieren / umzugehen! +MODIFICATION_BAN_LOG={0} hat probiert den Fabric Mod Sender zu editieren / umzugehen! Grund: {1} MODIFICATION_CHECK_SUCCESS=§eDeine Mods wurden geprüft und du darfst nun auf Arenen joinen! #Arena Merging From 3a97baa26796a37a65fd7844b665ebe4e6d273ba Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sun, 12 Jun 2022 18:22:33 +0200 Subject: [PATCH 09/11] Add debug messages for fabric checks --- src/de/steamwar/bungeecore/listeners/mods/Fabric.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/de/steamwar/bungeecore/listeners/mods/Fabric.java b/src/de/steamwar/bungeecore/listeners/mods/Fabric.java index 0bbbee3..b2b949f 100644 --- a/src/de/steamwar/bungeecore/listeners/mods/Fabric.java +++ b/src/de/steamwar/bungeecore/listeners/mods/Fabric.java @@ -41,6 +41,7 @@ import java.nio.charset.UnsupportedCharsetException; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.logging.Level; +import java.util.stream.Collectors; public class Fabric extends BasicListener { @@ -126,7 +127,7 @@ public class Fabric extends BasicListener { boolean isSorted = isSortedAlphabetically(mods); if(!isSorted) { - banPlayer(user, player, "Mods are not sorted alphabetically"); + banPlayer(user, player, "Mods are not sorted alphabetically: " + mods.stream().map(Mod::getModName).collect(Collectors.joining(", "))); return; } From 0446af29aaf5e70d7ceb0dd2731ae127dd236f5e Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 13 Jun 2022 22:10:10 +0200 Subject: [PATCH 10/11] Cannot spoof chat my ass Signed-off-by: Lixfel --- .../bungeecore/commands/TpCommand.java | 3 +- .../bungeecore/listeners/ChatListener.java | 3 +- src/de/steamwar/bungeecore/util/Chat19.java | 67 +++++++++++++++++++ 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 src/de/steamwar/bungeecore/util/Chat19.java diff --git a/src/de/steamwar/bungeecore/commands/TpCommand.java b/src/de/steamwar/bungeecore/commands/TpCommand.java index 4fa1cf8..3961f8c 100644 --- a/src/de/steamwar/bungeecore/commands/TpCommand.java +++ b/src/de/steamwar/bungeecore/commands/TpCommand.java @@ -21,6 +21,7 @@ package de.steamwar.bungeecore.commands; import de.steamwar.bungeecore.*; import de.steamwar.bungeecore.sql.*; +import de.steamwar.bungeecore.util.Chat19; import de.steamwar.messages.ChatSender; import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.CommandSender; @@ -55,7 +56,7 @@ public class TpCommand extends BasicCommand { //Give control of teleport command to server if(server == null) { - player.chat("/tp " + String.join(" ", args)); + Chat19.chat(player, "/tp " + String.join(" ", args)); return; } diff --git a/src/de/steamwar/bungeecore/listeners/ChatListener.java b/src/de/steamwar/bungeecore/listeners/ChatListener.java index a09cdbf..483dc9d 100644 --- a/src/de/steamwar/bungeecore/listeners/ChatListener.java +++ b/src/de/steamwar/bungeecore/listeners/ChatListener.java @@ -23,6 +23,7 @@ import de.steamwar.bungeecore.*; import de.steamwar.bungeecore.bot.SteamwarDiscordBot; import de.steamwar.bungeecore.comms.packets.PingPacket; import de.steamwar.bungeecore.sql.*; +import de.steamwar.bungeecore.util.Chat19; import de.steamwar.messages.ChatSender; import net.md_5.bungee.api.*; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -123,7 +124,7 @@ public class ChatListener extends BasicListener { return; } - player.chat(message); + Chat19.chat(player, message); } private static String modifyFilter(ChatSender sender, String message) { diff --git a/src/de/steamwar/bungeecore/util/Chat19.java b/src/de/steamwar/bungeecore/util/Chat19.java new file mode 100644 index 0000000..1110355 --- /dev/null +++ b/src/de/steamwar/bungeecore/util/Chat19.java @@ -0,0 +1,67 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 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.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 java.time.Instant; + +public class Chat19 extends Chat { + + public static void chat(ProxiedPlayer p, String message) { + if(p.getPendingConnection().getVersion() >= 759) { + Chat19 packet = new Chat19(message); + + ByteBuf buf = Unpooled.buffer(); + writeVarInt(0x04, buf); + packet.write(buf, ProtocolConstants.Direction.TO_SERVER, p.getPendingConnection().getVersion()); + ((ServerConnection) p.getServer()).getCh().write(new PacketWrapper(packet, buf)); + } else { + p.chat(message); + } + } + + private final Instant timestamp = Instant.now(); + 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(timestamp.toEpochMilli()); + buf.writeLong(salt); + writeArray(signature, buf); + buf.writeBoolean(signedPreview); + } +} From d05af2258be55a869d11aa94beb7e960483367d9 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 13 Jun 2022 22:38:09 +0200 Subject: [PATCH 11/11] Fix translation Signed-off-by: Lixfel --- src/de/steamwar/messages/BungeeCore.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/de/steamwar/messages/BungeeCore.properties b/src/de/steamwar/messages/BungeeCore.properties index ec98820..2fd155e 100644 --- a/src/de/steamwar/messages/BungeeCore.properties +++ b/src/de/steamwar/messages/BungeeCore.properties @@ -212,7 +212,7 @@ BAU_MEMBER_TOGGLE_WORLD_EDIT = use WorldEdit BAU_MEMBER_TOGGLE_WORLD = change Settings #ChallengeCommand -CHALLENGE_USAGE=§8/§7challenge §8[§eSpieler§8] +CHALLENGE_USAGE=§8/§7challenge §8[§eplayer§8] CHALLENGE_OFFLINE=§cThe challenged player isn't online. CHALLENGE_SELF=§cSchizophrenia? CHALLENGE_IGNORED=§cThe challenged player has blocked you. @@ -293,7 +293,7 @@ HISTORIC_BROADCAST_HOVER=§afight against §7{1} JOIN_PLAYER_BLOCK=§cYou currently cannot follow this player. #JoinmeCommand -JOINME_USAGE=§8/§7join §8[§eSpieler§8]. +JOINME_USAGE=§8/§7join §8[§eplayer§8]. JOINME_BROADCAST=§7Click §ehere§8 §7to join §e{0} §7on §e{1}§8! JOINME_BROADCAST_HOVER=§aJoin player JOINME_PLAYER_OFFLINE=§cThis player is offline.