Initial commit (Forge 1291).
This commit is contained in:
1940
patches/net/minecraft/network/NetHandlerPlayServer.java.patch
Normal file
1940
patches/net/minecraft/network/NetHandlerPlayServer.java.patch
Normal file
File diff suppressed because it is too large
Load Diff
102
patches/net/minecraft/network/NetworkManager.java.patch
Normal file
102
patches/net/minecraft/network/NetworkManager.java.patch
Normal file
@ -0,0 +1,102 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/NetworkManager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/NetworkManager.java
|
||||
@@ -25,6 +25,8 @@
|
||||
import java.net.InetAddress;
|
||||
import java.net.SocketAddress;
|
||||
import java.util.Queue;
|
||||
+import java.util.UUID;
|
||||
+
|
||||
import javax.crypto.SecretKey;
|
||||
import net.minecraft.util.ChatComponentTranslation;
|
||||
import net.minecraft.util.CryptManager;
|
||||
@@ -38,6 +40,8 @@
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.apache.logging.log4j.Marker;
|
||||
import org.apache.logging.log4j.MarkerManager;
|
||||
+import com.mojang.authlib.properties.Property;
|
||||
+import com.google.common.collect.ImmutableSet; // Spigot
|
||||
|
||||
public class NetworkManager extends SimpleChannelInboundHandler
|
||||
{
|
||||
@@ -54,13 +58,32 @@
|
||||
private final Queue receivedPacketsQueue = Queues.newConcurrentLinkedQueue();
|
||||
private final Queue outboundPacketsQueue = Queues.newConcurrentLinkedQueue();
|
||||
private Channel channel;
|
||||
- private SocketAddress socketAddress;
|
||||
+ // Spigot start
|
||||
+ public SocketAddress socketAddress;
|
||||
+ public Property[] spoofedProfile;
|
||||
+ public UUID spoofedUUID;
|
||||
+ // Spigot end
|
||||
private INetHandler netHandler;
|
||||
private EnumConnectionState connectionState;
|
||||
private IChatComponent terminationReason;
|
||||
private boolean field_152463_r;
|
||||
private static final String __OBFID = "CL_00001240";
|
||||
|
||||
+ // Spigot Start
|
||||
+ public static final AttributeKey<Integer> protocolVersion = new AttributeKey<Integer>("protocol_version");
|
||||
+ public static final ImmutableSet<Integer> SUPPORTED_VERSIONS = ImmutableSet.of(4, 5);
|
||||
+ public static final int CURRENT_VERSION = 5;
|
||||
+ public static int getVersion(Channel attr)
|
||||
+ {
|
||||
+ Integer ver = attr.attr( protocolVersion ).get();
|
||||
+ return ( ver != null ) ? ver : CURRENT_VERSION;
|
||||
+ }
|
||||
+ public int getVersion()
|
||||
+ {
|
||||
+ return getVersion( this.channel );
|
||||
+ }
|
||||
+ // Spigot End
|
||||
+
|
||||
public NetworkManager(boolean p_i45147_1_)
|
||||
{
|
||||
this.isClientSide = p_i45147_1_;
|
||||
@@ -71,6 +94,7 @@
|
||||
super.channelActive(p_channelActive_1_);
|
||||
this.channel = p_channelActive_1_.channel();
|
||||
this.socketAddress = this.channel.remoteAddress();
|
||||
+ this.field_152463_r = false; // Spigot
|
||||
this.setConnectionState(EnumConnectionState.HANDSHAKING);
|
||||
}
|
||||
|
||||
@@ -208,7 +232,15 @@
|
||||
{
|
||||
for (int i = 1000; !this.receivedPacketsQueue.isEmpty() && i >= 0; --i)
|
||||
{
|
||||
- Packet packet = (Packet)this.receivedPacketsQueue.poll();
|
||||
+ Packet packet = (Packet) this.receivedPacketsQueue.poll();
|
||||
+
|
||||
+ // CraftBukkit start
|
||||
+ if (!this.isChannelOpen() || !this.channel.config().isAutoRead()) // Should be isConnected
|
||||
+ {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ // CraftBukkit end
|
||||
packet.processPacket(this.netHandler);
|
||||
}
|
||||
|
||||
@@ -225,6 +257,8 @@
|
||||
|
||||
public void closeChannel(IChatComponent p_150718_1_)
|
||||
{
|
||||
+ this.field_152463_r = false; // Spigot
|
||||
+
|
||||
if (this.channel.isOpen())
|
||||
{
|
||||
this.channel.close();
|
||||
@@ -322,6 +356,13 @@
|
||||
return channel;
|
||||
}
|
||||
|
||||
+ // Spigot Start
|
||||
+ public SocketAddress getRawAddress()
|
||||
+ {
|
||||
+ return this.channel.remoteAddress();
|
||||
+ }
|
||||
+ // Spigot End
|
||||
+
|
||||
static class InboundHandlerTuplePacketListener
|
||||
{
|
||||
private final Packet field_150774_a;
|
17
patches/net/minecraft/network/NetworkSystem.java.patch
Normal file
17
patches/net/minecraft/network/NetworkSystem.java.patch
Normal file
@ -0,0 +1,17 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/NetworkSystem.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/NetworkSystem.java
|
||||
@@ -139,6 +139,14 @@
|
||||
|
||||
synchronized (this.networkManagers)
|
||||
{
|
||||
+ // Spigot Start
|
||||
+ // This prevents players from 'gaming' the server, and strategically relogging to increase their position in the tick order
|
||||
+ if (org.spigotmc.SpigotConfig.playerShuffle > 0 && MinecraftServer.currentTick % org.spigotmc.SpigotConfig.playerShuffle == 0)
|
||||
+ {
|
||||
+ Collections.shuffle(this.networkManagers);
|
||||
+ }
|
||||
+
|
||||
+ // Spigot End
|
||||
Iterator iterator = this.networkManagers.iterator();
|
||||
|
||||
while (iterator.hasNext())
|
10
patches/net/minecraft/network/Packet.java.patch
Normal file
10
patches/net/minecraft/network/Packet.java.patch
Normal file
@ -0,0 +1,10 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/Packet.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/Packet.java
|
||||
@@ -9,6 +9,7 @@
|
||||
public abstract class Packet
|
||||
{
|
||||
private static final Logger logger = LogManager.getLogger();
|
||||
+ public final long timestamp = System.currentTimeMillis(); // CraftBukkit
|
||||
private static final String __OBFID = "CL_00001272";
|
||||
|
||||
public static Packet generatePacket(BiMap p_148839_0_, int p_148839_1_)
|
11
patches/net/minecraft/network/PacketBuffer.java.patch
Normal file
11
patches/net/minecraft/network/PacketBuffer.java.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/PacketBuffer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/PacketBuffer.java
|
||||
@@ -98,7 +98,7 @@
|
||||
|
||||
public void writeItemStackToBuffer(ItemStack p_150788_1_) throws IOException
|
||||
{
|
||||
- if (p_150788_1_ == null)
|
||||
+ if (p_150788_1_ == null || p_150788_1_.getItem() == null) // CraftBukkit - NPE fix itemstack.getItem()
|
||||
{
|
||||
this.writeShort(-1);
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/handshake/client/C00Handshake.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/handshake/client/C00Handshake.java
|
||||
@@ -12,8 +12,8 @@
|
||||
public class C00Handshake extends Packet
|
||||
{
|
||||
private int field_149600_a;
|
||||
- private String field_149598_b;
|
||||
- private int field_149599_c;
|
||||
+ public String field_149598_b; // CraftBukkit private -> public
|
||||
+ public int field_149599_c; // CraftBukkit private -> public
|
||||
private EnumConnectionState field_149597_d;
|
||||
private static final String __OBFID = "CL_00001372";
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
public void readPacketData(PacketBuffer p_148837_1_) throws IOException
|
||||
{
|
||||
this.field_149600_a = p_148837_1_.readVarIntFromBuffer();
|
||||
- this.field_149598_b = p_148837_1_.readStringFromBuffer(255);
|
||||
+ this.field_149598_b = p_148837_1_.readStringFromBuffer(Short.MAX_VALUE); // Spigot
|
||||
this.field_149599_c = p_148837_1_.readUnsignedShort();
|
||||
this.field_149597_d = EnumConnectionState.func_150760_a(p_148837_1_.readVarIntFromBuffer());
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/play/client/C01PacketChatMessage.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/play/client/C01PacketChatMessage.java
|
||||
@@ -52,4 +52,11 @@
|
||||
{
|
||||
this.processPacket((INetHandlerPlayServer)p_148833_1_);
|
||||
}
|
||||
+
|
||||
+ // CraftBukkit start - make chat async
|
||||
+ public boolean hasPriority()
|
||||
+ {
|
||||
+ return !this.field_149440_a.startsWith("/");
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/play/client/C03PacketPlayer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/play/client/C03PacketPlayer.java
|
||||
@@ -10,15 +10,17 @@
|
||||
|
||||
public class C03PacketPlayer extends Packet
|
||||
{
|
||||
- protected double field_149479_a;
|
||||
- protected double field_149477_b;
|
||||
- protected double field_149478_c;
|
||||
- protected double field_149475_d;
|
||||
- protected float field_149476_e;
|
||||
- protected float field_149473_f;
|
||||
+ // CraftBukkit start - protected -> public
|
||||
+ public double field_149479_a;
|
||||
+ public double field_149477_b;
|
||||
+ public double field_149478_c;
|
||||
+ public double field_149475_d;
|
||||
+ public float field_149476_e;
|
||||
+ public float field_149473_f;
|
||||
+ // CraftBukkit end
|
||||
protected boolean field_149474_g;
|
||||
- protected boolean field_149480_h;
|
||||
- protected boolean field_149481_i;
|
||||
+ public boolean field_149480_h; // CraftBukkit - protected -> public
|
||||
+ public boolean field_149481_i;
|
||||
private static final String __OBFID = "CL_00001360";
|
||||
|
||||
public C03PacketPlayer() {}
|
@ -0,0 +1,16 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/play/client/C0DPacketCloseWindow.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/play/client/C0DPacketCloseWindow.java
|
||||
@@ -15,11 +15,12 @@
|
||||
|
||||
public C0DPacketCloseWindow() {}
|
||||
|
||||
- @SideOnly(Side.CLIENT)
|
||||
+ // CraftBukkit start - Add constructor
|
||||
public C0DPacketCloseWindow(int p_i45247_1_)
|
||||
{
|
||||
this.field_149556_a = p_i45247_1_;
|
||||
}
|
||||
+ // CraftBukkit end
|
||||
|
||||
public void processPacket(INetHandlerPlayServer p_148833_1_)
|
||||
{
|
@ -0,0 +1,11 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/play/client/C17PacketCustomPayload.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/play/client/C17PacketCustomPayload.java
|
||||
@@ -12,7 +12,7 @@
|
||||
public class C17PacketCustomPayload extends Packet
|
||||
{
|
||||
private String field_149562_a;
|
||||
- private int field_149560_b;
|
||||
+ public int field_149560_b; // CraftBukkit - private -> public
|
||||
private byte[] field_149561_c;
|
||||
private static final String __OBFID = "CL_00001356";
|
||||
|
@ -0,0 +1,15 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/play/server/S05PacketSpawnPosition.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/play/server/S05PacketSpawnPosition.java
|
||||
@@ -10,9 +10,9 @@
|
||||
|
||||
public class S05PacketSpawnPosition extends Packet
|
||||
{
|
||||
- private int field_149364_a;
|
||||
- private int field_149362_b;
|
||||
- private int field_149363_c;
|
||||
+ public int field_149364_a; // CraftBukkit - private -> public
|
||||
+ public int field_149362_b; // CraftBukkit - private -> public
|
||||
+ public int field_149363_c; // CraftBukkit - private -> public
|
||||
private static final String __OBFID = "CL_00001336";
|
||||
|
||||
public S05PacketSpawnPosition() {}
|
@ -0,0 +1,54 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/play/server/S21PacketChunkData.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/play/server/S21PacketChunkData.java
|
||||
@@ -198,8 +198,10 @@
|
||||
if (aextendedblockstorage[l] != null && (!p_149269_1_ || !aextendedblockstorage[l].isEmpty()) && (p_149269_2_ & 1 << l) != 0)
|
||||
{
|
||||
nibblearray = aextendedblockstorage[l].getMetadataArray();
|
||||
- System.arraycopy(nibblearray.data, 0, abyte, j, nibblearray.data.length);
|
||||
- j += nibblearray.data.length;
|
||||
+ // Spigot start
|
||||
+ nibblearray.copyToByteArray(abyte, j);
|
||||
+ j += nibblearray.getByteLength();
|
||||
+ // Spigot end
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,8 +210,10 @@
|
||||
if (aextendedblockstorage[l] != null && (!p_149269_1_ || !aextendedblockstorage[l].isEmpty()) && (p_149269_2_ & 1 << l) != 0)
|
||||
{
|
||||
nibblearray = aextendedblockstorage[l].getBlocklightArray();
|
||||
- System.arraycopy(nibblearray.data, 0, abyte, j, nibblearray.data.length);
|
||||
- j += nibblearray.data.length;
|
||||
+ // Spigot start
|
||||
+ nibblearray.copyToByteArray(abyte, j);
|
||||
+ j += nibblearray.getByteLength();
|
||||
+ // Spigot end
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,8 +224,10 @@
|
||||
if (aextendedblockstorage[l] != null && (!p_149269_1_ || !aextendedblockstorage[l].isEmpty()) && (p_149269_2_ & 1 << l) != 0)
|
||||
{
|
||||
nibblearray = aextendedblockstorage[l].getSkylightArray();
|
||||
- System.arraycopy(nibblearray.data, 0, abyte, j, nibblearray.data.length);
|
||||
- j += nibblearray.data.length;
|
||||
+ // Spigot start
|
||||
+ nibblearray.copyToByteArray(abyte, j);
|
||||
+ j += nibblearray.getByteLength();
|
||||
+ // Spigot end
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -233,8 +239,10 @@
|
||||
if (aextendedblockstorage[l] != null && (!p_149269_1_ || !aextendedblockstorage[l].isEmpty()) && aextendedblockstorage[l].getBlockMSBArray() != null && (p_149269_2_ & 1 << l) != 0)
|
||||
{
|
||||
nibblearray = aextendedblockstorage[l].getBlockMSBArray();
|
||||
- System.arraycopy(nibblearray.data, 0, abyte, j, nibblearray.data.length);
|
||||
- j += nibblearray.data.length;
|
||||
+ // Spigot start
|
||||
+ nibblearray.copyToByteArray(abyte, j);
|
||||
+ j += nibblearray.getByteLength();
|
||||
+ // Spigot end
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,117 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/play/server/S26PacketMapChunkBulk.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/play/server/S26PacketMapChunkBulk.java
|
||||
@@ -24,10 +24,18 @@
|
||||
private byte[][] field_149260_f;
|
||||
private int field_149261_g;
|
||||
private boolean field_149267_h;
|
||||
- private static byte[] field_149268_i = new byte[0];
|
||||
- private static final String __OBFID = "CL_00001306";
|
||||
- private int maxLen = 0;
|
||||
- private Semaphore deflateGate;
|
||||
+ private byte[] field_149268_i = new byte[0]; // CraftBukkit - remove static
|
||||
+ // CraftBukkit start
|
||||
+ static final ThreadLocal<Deflater> localDeflater = new ThreadLocal<Deflater>()
|
||||
+ {
|
||||
+ @Override
|
||||
+ protected Deflater initialValue()
|
||||
+ {
|
||||
+ // Don't use higher compression level, slows things down too much
|
||||
+ return new Deflater(6);
|
||||
+ }
|
||||
+ };
|
||||
+ // CraftBukkit end
|
||||
|
||||
public S26PacketMapChunkBulk() {}
|
||||
|
||||
@@ -46,6 +54,15 @@
|
||||
{
|
||||
Chunk chunk = (Chunk)p_i45197_1_.get(k);
|
||||
S21PacketChunkData.Extracted extracted = S21PacketChunkData.func_149269_a(chunk, true, 65535);
|
||||
+
|
||||
+ if (field_149268_i.length < j + extracted.field_150282_a.length)
|
||||
+ {
|
||||
+ byte[] abyte = new byte[j + extracted.field_150282_a.length];
|
||||
+ System.arraycopy(field_149268_i, 0, abyte, 0, field_149268_i.length);
|
||||
+ field_149268_i = abyte;
|
||||
+ }
|
||||
+
|
||||
+ System.arraycopy(extracted.field_150282_a, 0, field_149268_i, j, extracted.field_150282_a.length);
|
||||
j += extracted.field_150282_a.length;
|
||||
this.field_149266_a[k] = chunk.xPosition;
|
||||
this.field_149264_b[k] = chunk.zPosition;
|
||||
@@ -53,34 +70,36 @@
|
||||
this.field_149262_d[k] = extracted.field_150281_c;
|
||||
this.field_149260_f[k] = extracted.field_150282_a;
|
||||
}
|
||||
- this.deflateGate = new Semaphore(1);
|
||||
- maxLen = j;
|
||||
- }
|
||||
-
|
||||
- private void deflate()
|
||||
- {
|
||||
- byte[] data = new byte[maxLen];
|
||||
- int offset = 0;
|
||||
- for (int x = 0; x < field_149260_f.length; x++)
|
||||
- {
|
||||
- System.arraycopy(field_149260_f[x], 0, data, offset, field_149260_f[x].length);
|
||||
- offset += field_149260_f[x].length;
|
||||
- }
|
||||
+ /* CraftBukkit start - Moved to compress()
|
||||
Deflater deflater = new Deflater(-1);
|
||||
|
||||
- try
|
||||
- {
|
||||
- deflater.setInput(data, 0, data.length);
|
||||
+ try {
|
||||
+ deflater.setInput(buildBuffer, 0, j);
|
||||
deflater.finish();
|
||||
- byte[] deflated = new byte[data.length];
|
||||
- this.field_149261_g = deflater.deflate(deflated);
|
||||
- this.field_149263_e = deflated;
|
||||
+ this.buffer = new byte[j];
|
||||
+ this.size = deflater.deflate(this.buffer);
|
||||
+ } finally {
|
||||
+ deflater.end();
|
||||
}
|
||||
- finally
|
||||
+ */
|
||||
+ }
|
||||
+
|
||||
+ // Add compression method
|
||||
+ public void compress()
|
||||
+ {
|
||||
+ if (this.field_149263_e != null)
|
||||
{
|
||||
- deflater.end();
|
||||
+ return;
|
||||
}
|
||||
+
|
||||
+ Deflater deflater = localDeflater.get();
|
||||
+ deflater.reset();
|
||||
+ deflater.setInput(this.field_149268_i);
|
||||
+ deflater.finish();
|
||||
+ this.field_149263_e = new byte[this.field_149268_i.length + 100];
|
||||
+ this.field_149261_g = deflater.deflate(this.field_149263_e);
|
||||
}
|
||||
+ // CraftBukkit end
|
||||
|
||||
public static int func_149258_c()
|
||||
{
|
||||
@@ -155,16 +174,7 @@
|
||||
|
||||
public void writePacketData(PacketBuffer p_148840_1_) throws IOException
|
||||
{
|
||||
- if (this.field_149263_e == null)
|
||||
- {
|
||||
- deflateGate.acquireUninterruptibly();
|
||||
- if (this.field_149263_e == null)
|
||||
- {
|
||||
- deflate();
|
||||
- }
|
||||
- deflateGate.release();
|
||||
- }
|
||||
-
|
||||
+ compress(); // CraftBukkit
|
||||
p_148840_1_.writeShort(this.field_149266_a.length);
|
||||
p_148840_1_.writeInt(this.field_149261_g);
|
||||
p_148840_1_.writeBoolean(this.field_149267_h);
|
@ -0,0 +1,16 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/rcon/RConConsoleSource.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/rcon/RConConsoleSource.java
|
||||
@@ -25,6 +25,13 @@
|
||||
return new ChatComponentText(this.getCommandSenderName());
|
||||
}
|
||||
|
||||
+ // CraftBukkit start - Send a String
|
||||
+ public void sendMessage(String message)
|
||||
+ {
|
||||
+ this.buffer.append(message);
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
public void addChatMessage(IChatComponent p_145747_1_)
|
||||
{
|
||||
this.buffer.append(p_145747_1_.getUnformattedText());
|
Reference in New Issue
Block a user