3
0

Initial commit (Forge 1291).

This commit is contained in:
gamerforEA
2015-03-22 20:38:04 +03:00
commit 16773ead6a
611 changed files with 64826 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View 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;

View 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())

View 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_)

View 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);
}

View File

@ -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());
}

View File

@ -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
}

View File

@ -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() {}

View File

@ -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_)
{

View File

@ -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";

View File

@ -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() {}

View File

@ -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
}
}
}

View File

@ -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);

View File

@ -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());