diff --git a/paper-server/patches/sources/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java.patch b/paper-server/patches/sources/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java.patch index 2c4bc5028..eb537b7d8 100644 --- a/paper-server/patches/sources/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java.patch +++ b/paper-server/patches/sources/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java.patch @@ -26,7 +26,7 @@ switch (packet.intention()) { case LOGIN: this.beginLogin(packet, false); -@@ -59,6 +69,40 @@ +@@ -59,13 +69,47 @@ private void beginLogin(ClientIntentionPacket packet, boolean transfer) { this.connection.setupOutboundProtocol(LoginProtocols.CLIENTBOUND); @@ -67,3 +67,13 @@ if (packet.protocolVersion() != SharedConstants.getCurrentVersion().getProtocolVersion()) { MutableComponent ichatmutablecomponent; +- if (packet.protocolVersion() < 754) { +- ichatmutablecomponent = Component.translatable("multiplayer.disconnect.outdated_client", SharedConstants.getCurrentVersion().getName()); ++ if (packet.protocolVersion() < SharedConstants.getCurrentVersion().getProtocolVersion()) { // Spigot - SPIGOT-7546: Handle version check correctly for outdated client message ++ ichatmutablecomponent = Component.literal( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedClientMessage.replaceAll("'", "''"), SharedConstants.getCurrentVersion().getName() ) ); // Spigot + } else { +- ichatmutablecomponent = Component.translatable("multiplayer.disconnect.incompatible", SharedConstants.getCurrentVersion().getName()); ++ ichatmutablecomponent = Component.literal( java.text.MessageFormat.format( org.spigotmc.SpigotConfig.outdatedServerMessage.replaceAll("'", "''"), SharedConstants.getCurrentVersion().getName() ) ); // Spigot + } + + this.connection.send(new ClientboundLoginDisconnectPacket(ichatmutablecomponent)); diff --git a/paper-server/patches/sources/net/minecraft/server/players/PlayerList.java.patch b/paper-server/patches/sources/net/minecraft/server/players/PlayerList.java.patch index b59d5d273..9f0913553 100644 --- a/paper-server/patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/paper-server/patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -450,7 +450,7 @@ + event.disallow(PlayerLoginEvent.Result.KICK_BANNED, CraftChatMessage.fromComponent(ichatmutablecomponent)); + } else if (!this.isWhiteListed(gameprofile)) { + ichatmutablecomponent = Component.translatable("multiplayer.disconnect.not_whitelisted"); -+ event.disallow(PlayerLoginEvent.Result.KICK_WHITELIST, CraftChatMessage.fromComponent(ichatmutablecomponent)); ++ event.disallow(PlayerLoginEvent.Result.KICK_WHITELIST, org.spigotmc.SpigotConfig.whitelistMessage); // Spigot + } else if (this.ipBans.isBanned(socketaddress)) { + IpBanListEntry ipbanentry = this.ipBans.get(socketaddress); @@ -467,7 +467,7 @@ + } else { + // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; + if (this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile)) { -+ event.disallow(PlayerLoginEvent.Result.KICK_FULL, "The server is full"); ++ event.disallow(PlayerLoginEvent.Result.KICK_FULL, org.spigotmc.SpigotConfig.serverFullMessage); // Spigot + } } + diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java index d9168614b..bf626e063 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -904,11 +904,11 @@ public final class CraftServer implements Server { return true; } - if (sender instanceof Player) { - sender.sendMessage("Unknown command. Type \"/help\" for help."); - } else { - sender.sendMessage("Unknown command. Type \"help\" for help."); + // Spigot start + if (!org.spigotmc.SpigotConfig.unknownCommandMessage.isEmpty()) { + sender.sendMessage(org.spigotmc.SpigotConfig.unknownCommandMessage); } + // Spigot end return false; } diff --git a/paper-server/src/main/java/org/spigotmc/SpigotConfig.java b/paper-server/src/main/java/org/spigotmc/SpigotConfig.java index b3890bea6..0c745f23a 100644 --- a/paper-server/src/main/java/org/spigotmc/SpigotConfig.java +++ b/paper-server/src/main/java/org/spigotmc/SpigotConfig.java @@ -12,6 +12,7 @@ import java.util.Map; import java.util.logging.Level; import net.minecraft.server.MinecraftServer; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; @@ -175,4 +176,28 @@ public class SpigotConfig SpigotConfig.tabComplete = SpigotConfig.getInt( "commands.tab-complete", 0 ); SpigotConfig.sendNamespaced = SpigotConfig.getBoolean( "commands.send-namespaced", true ); } + + public static String whitelistMessage; + public static String unknownCommandMessage; + public static String serverFullMessage; + public static String outdatedClientMessage = "Outdated client! Please use {0}"; + public static String outdatedServerMessage = "Outdated server! I\'m still on {0}"; + private static String transform(String s) + { + return ChatColor.translateAlternateColorCodes( '&', s ).replaceAll( "\\\\n", "\n" ); + } + private static void messages() + { + if (SpigotConfig.version < 8) + { + SpigotConfig.set( "messages.outdated-client", SpigotConfig.outdatedClientMessage ); + SpigotConfig.set( "messages.outdated-server", SpigotConfig.outdatedServerMessage ); + } + + SpigotConfig.whitelistMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.whitelist", "You are not whitelisted on this server!" ) ); + SpigotConfig.unknownCommandMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.unknown-command", "Unknown command. Type \"/help\" for help." ) ); + SpigotConfig.serverFullMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.server-full", "The server is full!" ) ); + SpigotConfig.outdatedClientMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.outdated-client", SpigotConfig.outdatedClientMessage ) ); + SpigotConfig.outdatedServerMessage = SpigotConfig.transform( SpigotConfig.getString( "messages.outdated-server", SpigotConfig.outdatedServerMessage ) ); + } }