You can now specify how many letters of the command must be typed before it will be tab completed this will help deter people from just spamming round all the commands to see if there is one incorrectly set up. 0 will tab complete all commands -1 will disable tab complete 1 will mean you have to type the first letter 2 will mean you have to the second letter... etc...
139 lines
6.5 KiB
Diff
139 lines
6.5 KiB
Diff
From 30e848bc66d5249c518ef64af720b70ac09b15aa Mon Sep 17 00:00:00 2001
|
|
From: md_5 <md_5@live.com.au>
|
|
Date: Sun, 1 Dec 2013 18:18:41 +1100
|
|
Subject: [PATCH] BungeeCord Support
|
|
|
|
Provides support for IP forwarding via BungeeCord.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
index b80a760..42539b4 100644
|
|
--- a/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
+++ b/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
@@ -73,6 +73,22 @@ public class HandshakeListener implements PacketHandshakingInListener {
|
|
this.b.close(chatcomponenttext);
|
|
} else {
|
|
this.b.a((PacketListener) (new LoginListener(this.a, this.b)));
|
|
+ // Spigot Start
|
|
+ if (org.spigotmc.SpigotConfig.bungee) {
|
|
+ String[] split = packethandshakinginsetprotocol.b.split("\00");
|
|
+ if ( split.length == 3 ) {
|
|
+ packethandshakinginsetprotocol.b = split[0];
|
|
+ b.n = new java.net.InetSocketAddress(split[1], ((java.net.InetSocketAddress) b.getSocketAddress()).getPort());
|
|
+ b.spoofedUUID = split[2];
|
|
+ } else
|
|
+ {
|
|
+ chatcomponenttext = new ChatComponentText("If you wish to use IP forwarding, please enable it in your BungeeCord config as well!");
|
|
+ this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext), new GenericFutureListener[0]);
|
|
+ this.b.close(chatcomponenttext);
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ // Spigot End
|
|
((LoginListener) this.b.getPacketListener()).hostname = packethandshakinginsetprotocol.b + ":" + packethandshakinginsetprotocol.c; // CraftBukkit - set hostname
|
|
}
|
|
break;
|
|
diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java
|
|
index dddd9aa..efba029 100644
|
|
--- a/src/main/java/net/minecraft/server/LoginListener.java
|
|
+++ b/src/main/java/net/minecraft/server/LoginListener.java
|
|
@@ -61,9 +61,18 @@ public class LoginListener implements PacketLoginInListener {
|
|
|
|
public void c() {
|
|
if (!this.i.isComplete()) {
|
|
- UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + this.i.getName()).getBytes(Charsets.UTF_8));
|
|
-
|
|
- this.i = new GameProfile(uuid.toString().replaceAll("-", ""), this.i.getName());
|
|
+ // Spigot Start
|
|
+ String uuid;
|
|
+ if ( networkManager.spoofedUUID != null )
|
|
+ {
|
|
+ uuid = networkManager.spoofedUUID;
|
|
+ } else
|
|
+ {
|
|
+ uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + this.i.getName()).getBytes(Charsets.UTF_8)).toString().replaceAll("-", "");
|
|
+ }
|
|
+
|
|
+ this.i = new GameProfile(uuid, this.i.getName());
|
|
+ // Spigot End
|
|
}
|
|
|
|
// CraftBukkit start - fire PlayerLoginEvent
|
|
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
|
|
index 9ff1694..f6cca80 100644
|
|
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
|
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
|
@@ -36,7 +36,8 @@ public class NetworkManager extends SimpleChannelInboundHandler {
|
|
private final Queue k = Queues.newConcurrentLinkedQueue();
|
|
private final Queue l = Queues.newConcurrentLinkedQueue();
|
|
private Channel m;
|
|
- private SocketAddress n;
|
|
+ public SocketAddress n; // Spigot
|
|
+ public String spoofedUUID; // Spigot
|
|
private PacketListener o;
|
|
private EnumProtocol p;
|
|
private IChatBaseComponent q;
|
|
@@ -196,4 +197,11 @@ public class NetworkManager extends SimpleChannelInboundHandler {
|
|
static Channel a(NetworkManager networkmanager) {
|
|
return networkmanager.m;
|
|
}
|
|
+
|
|
+ // Spigot Start
|
|
+ public SocketAddress getRawAddress()
|
|
+ {
|
|
+ return this.m.remoteAddress();
|
|
+ }
|
|
+ // Spigot End
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
|
index 385dc0a..0d6ffef 100644
|
|
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
|
@@ -325,7 +325,7 @@ public abstract class PlayerList {
|
|
|
|
EntityPlayer entity = new EntityPlayer(this.server, this.server.getWorldServer(0), gameprofile, new PlayerInteractManager(this.server.getWorldServer(0)));
|
|
Player player = entity.getBukkitEntity();
|
|
- PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, ((java.net.InetSocketAddress) socketaddress).getAddress());
|
|
+ PlayerLoginEvent event = new PlayerLoginEvent(player, hostname, ((java.net.InetSocketAddress) socketaddress).getAddress(), ((java.net.InetSocketAddress) loginlistener.networkManager.getRawAddress()).getAddress());
|
|
|
|
if (this.banByName.isBanned(gameprofile.getName())) {
|
|
BanEntry banentry = (BanEntry) this.banByName.getEntries().get(gameprofile.getName());
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
index b96c27a..10a91fa 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -1260,6 +1260,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
|
{
|
|
|
|
@Override
|
|
+ public InetSocketAddress getRawAddress()
|
|
+ {
|
|
+ return (InetSocketAddress) getHandle().playerConnection.networkManager.getRawAddress();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
public boolean getCollidesWithEntities()
|
|
{
|
|
return getHandle().collidesWithEntities;
|
|
diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java
|
|
index 2b499fe..8bfffa5 100644
|
|
--- a/src/main/java/org/spigotmc/SpigotConfig.java
|
|
+++ b/src/main/java/org/spigotmc/SpigotConfig.java
|
|
@@ -192,4 +192,14 @@ public class SpigotConfig
|
|
commands.put( "restart", new RestartCommand( "restart" ) );
|
|
WatchdogThread.doStart( timeoutTime, restartOnCrash );
|
|
}
|
|
+
|
|
+ public static boolean bungee;
|
|
+ private static void bungee() {
|
|
+ if ( version < 4 )
|
|
+ {
|
|
+ set( "settings.bungeecord", false );
|
|
+ System.out.println( "Oudated config, disabling BungeeCord support!" );
|
|
+ }
|
|
+ bungee = getBoolean( "settings.bungeecord", false );
|
|
+ }
|
|
}
|
|
--
|
|
1.8.3.2
|
|
|