From f9fa108a490b49ee4c9d8f460ea5a52757af044f Mon Sep 17 00:00:00 2001 From: Byteflux Date: Thu, 2 Oct 2014 16:54:57 -0500 Subject: [PATCH] Update with more Spigot binary patches --- .../0182-Spigot-Update-20140909b.patch | 11 +- .../0185-Spigot-Update-20140927a.patch | 58 +++++ .../0186-Spigot-Update-20141001a.patch | 224 ++++++++++++++++++ .../Player-affects-spawning-API.patch | 4 +- .../mc-dev-imports-for-1.8-things.patch | 85 ------- 5 files changed, 289 insertions(+), 93 deletions(-) create mode 100644 CraftBukkit-Patches/0185-Spigot-Update-20140927a.patch create mode 100644 CraftBukkit-Patches/0186-Spigot-Update-20141001a.patch diff --git a/CraftBukkit-Patches/0182-Spigot-Update-20140909b.patch b/CraftBukkit-Patches/0182-Spigot-Update-20140909b.patch index 4a5b25dc87..1fc779c104 100644 --- a/CraftBukkit-Patches/0182-Spigot-Update-20140909b.patch +++ b/CraftBukkit-Patches/0182-Spigot-Update-20140909b.patch @@ -177,12 +177,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Override + public void sendMessage( BaseComponent... components ) + { -+ if ( getHandle().playerConnection != null ) -+ { -+ PacketPlayOutChat packet = new PacketPlayOutChat(); -+ packet.components = components; -+ getHandle().playerConnection.sendPacket( packet ); -+ } ++ if ( getHandle().playerConnection == null ) return; ++ ++ PacketPlayOutChat packet = new PacketPlayOutChat(); ++ packet.components = components; ++ getHandle().playerConnection.sendPacket( packet ); + } }; diff --git a/CraftBukkit-Patches/0185-Spigot-Update-20140927a.patch b/CraftBukkit-Patches/0185-Spigot-Update-20140927a.patch new file mode 100644 index 0000000000..49bd2dcfdc --- /dev/null +++ b/CraftBukkit-Patches/0185-Spigot-Update-20140927a.patch @@ -0,0 +1,58 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: md_5 +Date: Wed, 1 Oct 2014 00:27:39 -0700 +Subject: [PATCH] Spigot Update - 20140927a + + +diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java ++++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java +@@ -0,0 +0,0 @@ public class EntityTrackerEntry { + if ( tracker instanceof EntityPlayer ) + { + entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.addPlayer( (EntityPlayer) tracker ) ); ++ ++ if ( entityplayer.playerConnection.networkManager.getVersion() > 28 ) { // Spigot Update - 20140927a ++ entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.updateDisplayName( (EntityPlayer) this.tracker ) ); ++ } + } + // Spigot end + +diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/PlayerList.java ++++ b/src/main/java/net/minecraft/server/PlayerList.java +@@ -0,0 +0,0 @@ public abstract class PlayerList { + + // CraftBukkit start - sendAll above replaced with this loop + PacketPlayOutPlayerInfo packet = PacketPlayOutPlayerInfo.addPlayer( entityplayer ); // Spigot - protocol patch ++ PacketPlayOutPlayerInfo displayPacket = PacketPlayOutPlayerInfo.updateDisplayName( entityplayer ); // Spigot Update - 20140927a + for (int i = 0; i < this.players.size(); ++i) { + EntityPlayer entityplayer1 = (EntityPlayer) this.players.get(i); + + if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) { + entityplayer1.playerConnection.sendPacket(packet); ++ // Spigot start - Update 20140927a ++ if ( entityplayer1.playerConnection.networkManager.getVersion() > 28 ) { ++ entityplayer1.playerConnection.sendPacket( displayPacket ); ++ } ++ // Spigot end + } + } + // CraftBukkit end +@@ -0,0 +0,0 @@ public abstract class PlayerList { + } + // .name -> .listName + entityplayer.playerConnection.sendPacket(PacketPlayOutPlayerInfo.addPlayer( entityplayer1 )); // Spigot - protocol patch ++ // Spigot start - Update 20140927a ++ if ( entityplayer.playerConnection.networkManager.getVersion() > 28 ) { ++ entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.updateDisplayName( entityplayer1 ) ); ++ } ++ // Spigot end + // CraftBukkit end + } + } +-- +1.9.4.msysgit.0 + diff --git a/CraftBukkit-Patches/0186-Spigot-Update-20141001a.patch b/CraftBukkit-Patches/0186-Spigot-Update-20141001a.patch new file mode 100644 index 0000000000..3e886d4380 --- /dev/null +++ b/CraftBukkit-Patches/0186-Spigot-Update-20141001a.patch @@ -0,0 +1,224 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Byteflux +Date: Wed, 1 Oct 2014 03:00:09 -0700 +Subject: [PATCH] Spigot Update - 20141001a + + +diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java ++++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java +@@ -0,0 +0,0 @@ public class EntityTrackerEntry { + { + entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.addPlayer( (EntityPlayer) tracker ) ); + +- if ( entityplayer.playerConnection.networkManager.getVersion() > 28 ) { // Spigot Update - 20140927a ++ if ( !entityplayer.getName().equals( entityplayer.listName ) && entityplayer.playerConnection.networkManager.getVersion() > 28 ) { // Spigot Update - 20140927a // Spigot Update - 20141001a + entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.updateDisplayName( (EntityPlayer) this.tracker ) ); + } + } +diff --git a/src/main/java/net/minecraft/server/ItemDoor.java b/src/main/java/net/minecraft/server/ItemDoor.java +new file mode 100644 +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +--- /dev/null ++++ b/src/main/java/net/minecraft/server/ItemDoor.java +@@ -0,0 +0,0 @@ ++package net.minecraft.server; ++ ++public class ItemDoor extends Item { ++ ++ private Material a; ++ ++ public ItemDoor(Material material) { ++ this.a = material; ++ this.maxStackSize = 1; ++ this.a(CreativeModeTab.d); ++ } ++ ++ public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l, float f, float f1, float f2) { ++ if (l != 1) { ++ return false; ++ } else { ++ ++j; ++ Block block; ++ ++ if (this.a == Material.WOOD) { ++ block = Blocks.WOODEN_DOOR; ++ } else { ++ block = Blocks.IRON_DOOR_BLOCK; ++ } ++ ++ if (entityhuman.a(i, j, k, l, itemstack) && entityhuman.a(i, j + 1, k, l, itemstack)) { ++ if (!block.canPlace(world, i, j, k)) { ++ return false; ++ } else { ++ int i1 = MathHelper.floor((double) ((entityhuman.yaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; ++ ++ place(world, i, j, k, i1, block); ++ --itemstack.count; ++ return true; ++ } ++ } else { ++ return false; ++ } ++ } ++ } ++ ++ public static void place(World world, int i, int j, int k, int l, Block block) { ++ byte b0 = 0; ++ byte b1 = 0; ++ ++ if (l == 0) { ++ b1 = 1; ++ } ++ ++ if (l == 1) { ++ b0 = -1; ++ } ++ ++ if (l == 2) { ++ b1 = -1; ++ } ++ ++ if (l == 3) { ++ b0 = 1; ++ } ++ ++ int i1 = (world.getType(i - b0, j, k - b1).r() ? 1 : 0) + (world.getType(i - b0, j + 1, k - b1).r() ? 1 : 0); ++ int j1 = (world.getType(i + b0, j, k + b1).r() ? 1 : 0) + (world.getType(i + b0, j + 1, k + b1).r() ? 1 : 0); ++ boolean flag = world.getType(i - b0, j, k - b1) == block || world.getType(i - b0, j + 1, k - b1) == block; ++ boolean flag1 = world.getType(i + b0, j, k + b1) == block || world.getType(i + b0, j + 1, k + b1) == block; ++ boolean flag2 = false; ++ ++ if (flag && !flag1) { ++ flag2 = true; ++ } else if (j1 > i1) { ++ flag2 = true; ++ } ++ ++ world.setTypeAndData(i, j, k, block, l, 3); // Spigot Update - 20141001a ++ world.setTypeAndData(i, j + 1, k, block, 8 | (flag2 ? 1 : 0), 3); // Spigot Update - 20141001a ++ //world.applyPhysics(i, j, k, block); // Spigot Update - 20141001a ++ //world.applyPhysics(i, j + 1, k, block); // Spigot Update - 20141001a ++ } ++} +diff --git a/src/main/java/net/minecraft/server/PacketPlayOutChat.java b/src/main/java/net/minecraft/server/PacketPlayOutChat.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/PacketPlayOutChat.java ++++ b/src/main/java/net/minecraft/server/PacketPlayOutChat.java +@@ -0,0 +0,0 @@ public class PacketPlayOutChat extends Packet { + private IChatBaseComponent a; + public BaseComponent[] components; // Spigot - Update 20140909b + private boolean b; ++ private int pos; // Spigot - Update 20141001a + + public PacketPlayOutChat() { + this.b = true; +@@ -0,0 +0,0 @@ public class PacketPlayOutChat extends Packet { + this(ichatbasecomponent, true); + } + ++ public PacketPlayOutChat(IChatBaseComponent ichatbasecomponent, int pos) { ++ this(ichatbasecomponent, pos, true); ++ } ++ + public PacketPlayOutChat(IChatBaseComponent ichatbasecomponent, boolean flag) { ++ this(ichatbasecomponent, 0, flag); ++ } ++ ++ public PacketPlayOutChat(IChatBaseComponent ichatbasecomponent, int pos, boolean flag) { + this.b = true; + this.a = ichatbasecomponent; + this.b = flag; ++ this.pos = pos; + } + + public void a(PacketDataSerializer packetdataserializer) throws IOException { +@@ -0,0 +0,0 @@ public class PacketPlayOutChat extends Packet { + // Spigot start - protocol patch + if ( packetdataserializer.version >= 16 ) + { +- packetdataserializer.writeByte(0); ++ packetdataserializer.writeByte( this.pos ); + } + // Spigot end + } +diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPosition.java b/src/main/java/net/minecraft/server/PacketPlayOutPosition.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/PacketPlayOutPosition.java ++++ b/src/main/java/net/minecraft/server/PacketPlayOutPosition.java +@@ -0,0 +0,0 @@ public class PacketPlayOutPosition extends Packet { + private float d; + private float e; + private boolean f; ++ private byte relativeBitMask; // Spigot Update - 20141001a + + public PacketPlayOutPosition() {} + + public PacketPlayOutPosition(double d0, double d1, double d2, float f, float f1, boolean flag) { ++ this(d0, d1, d2, f, f1, flag, (byte)0); ++ } ++ ++ public PacketPlayOutPosition(double d0, double d1, double d2, float f, float f1, boolean flag, byte relativeBitMask) { + this.a = d0; + this.b = d1; + this.c = d2; + this.d = f; + this.e = f1; + this.f = flag; ++ this.relativeBitMask = relativeBitMask; + } + + public void a(PacketDataSerializer packetdataserializer) { +@@ -0,0 +0,0 @@ public class PacketPlayOutPosition extends Packet { + packetdataserializer.writeBoolean( this.f ); + } else + { +- packetdataserializer.writeByte( 0 ); ++ packetdataserializer.writeByte( this.relativeBitMask ); + } + // Spigot end + } +diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/server/PlayerList.java ++++ b/src/main/java/net/minecraft/server/PlayerList.java +@@ -0,0 +0,0 @@ public abstract class PlayerList { + + if (entityplayer1.getBukkitEntity().canSee(entityplayer.getBukkitEntity())) { + entityplayer1.playerConnection.sendPacket(packet); +- // Spigot start - Update 20140927a +- if ( entityplayer1.playerConnection.networkManager.getVersion() > 28 ) { ++ // Spigot start - Update 20140927a // Update - 20141001a ++ if ( !entityplayer.getName().equals( entityplayer.listName ) && entityplayer1.playerConnection.networkManager.getVersion() > 28 ) { + entityplayer1.playerConnection.sendPacket( displayPacket ); + } + // Spigot end +@@ -0,0 +0,0 @@ public abstract class PlayerList { + } + // .name -> .listName + entityplayer.playerConnection.sendPacket(PacketPlayOutPlayerInfo.addPlayer( entityplayer1 )); // Spigot - protocol patch +- // Spigot start - Update 20140927a +- if ( entityplayer.playerConnection.networkManager.getVersion() > 28 ) { ++ // Spigot start - Update 20140927a // Update - 20141001a ++ if ( !entityplayer.getName().equals( entityplayer.listName ) && entityplayer.playerConnection.networkManager.getVersion() > 28 ) { + entityplayer.playerConnection.sendPacket( PacketPlayOutPlayerInfo.updateDisplayName( entityplayer1 ) ); + } + // Spigot end +diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java ++++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +@@ -0,0 +0,0 @@ public class CraftEventFactory { + } + + public static void handleInventoryCloseEvent(EntityHuman human) { ++ if (human.activeContainer == human.defaultContainer) { // Spigot Update - 20141001a ++ return; ++ } + InventoryCloseEvent event = new InventoryCloseEvent(human.activeContainer.getBukkitView()); + human.world.getServer().getPluginManager().callEvent(event); + human.activeContainer.transferTo(human.defaultContainer, human.getBukkitEntity()); +-- +1.9.4.msysgit.0 + diff --git a/Spigot-Server-Patches/Player-affects-spawning-API.patch b/Spigot-Server-Patches/Player-affects-spawning-API.patch index ce9bf4417c..934bb1ab8c 100644 --- a/Spigot-Server-Patches/Player-affects-spawning-API.patch +++ b/Spigot-Server-Patches/Player-affects-spawning-API.patch @@ -110,8 +110,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - getHandle().playerConnection.sendPacket( packet ); - } + packet.components = components; + getHandle().playerConnection.sendPacket( packet ); } + + // PaperSpigot start - Add affects spawning API diff --git a/Spigot-Server-Patches/mc-dev-imports-for-1.8-things.patch b/Spigot-Server-Patches/mc-dev-imports-for-1.8-things.patch index c7cd8e205a..2edf77d82f 100644 --- a/Spigot-Server-Patches/mc-dev-imports-for-1.8-things.patch +++ b/Spigot-Server-Patches/mc-dev-imports-for-1.8-things.patch @@ -208,91 +208,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public static final BlockStainedGlassPane STAINED_GLASS_PANE = (BlockStainedGlassPane) Block.REGISTRY.get("stained_glass_pane"); + +} -diff --git a/src/main/java/net/minecraft/server/ItemDoor.java b/src/main/java/net/minecraft/server/ItemDoor.java -new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 ---- /dev/null -+++ b/src/main/java/net/minecraft/server/ItemDoor.java -@@ -0,0 +0,0 @@ -+package net.minecraft.server; -+ -+public class ItemDoor extends Item { -+ -+ private Material a; -+ -+ public ItemDoor(Material material) { -+ this.a = material; -+ this.maxStackSize = 1; -+ this.a(CreativeModeTab.d); -+ } -+ -+ public boolean interactWith(ItemStack itemstack, EntityHuman entityhuman, World world, int i, int j, int k, int l, float f, float f1, float f2) { -+ if (l != 1) { -+ return false; -+ } else { -+ ++j; -+ Block block; -+ -+ if (this.a == Material.WOOD) { -+ block = Blocks.WOODEN_DOOR; -+ } else { -+ block = Blocks.IRON_DOOR_BLOCK; -+ } -+ -+ if (entityhuman.a(i, j, k, l, itemstack) && entityhuman.a(i, j + 1, k, l, itemstack)) { -+ if (!block.canPlace(world, i, j, k)) { -+ return false; -+ } else { -+ int i1 = MathHelper.floor((double) ((entityhuman.yaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; -+ -+ place(world, i, j, k, i1, block); -+ --itemstack.count; -+ return true; -+ } -+ } else { -+ return false; -+ } -+ } -+ } -+ -+ public static void place(World world, int i, int j, int k, int l, Block block) { -+ byte b0 = 0; -+ byte b1 = 0; -+ -+ if (l == 0) { -+ b1 = 1; -+ } -+ -+ if (l == 1) { -+ b0 = -1; -+ } -+ -+ if (l == 2) { -+ b1 = -1; -+ } -+ -+ if (l == 3) { -+ b0 = 1; -+ } -+ -+ int i1 = (world.getType(i - b0, j, k - b1).r() ? 1 : 0) + (world.getType(i - b0, j + 1, k - b1).r() ? 1 : 0); -+ int j1 = (world.getType(i + b0, j, k + b1).r() ? 1 : 0) + (world.getType(i + b0, j + 1, k + b1).r() ? 1 : 0); -+ boolean flag = world.getType(i - b0, j, k - b1) == block || world.getType(i - b0, j + 1, k - b1) == block; -+ boolean flag1 = world.getType(i + b0, j, k + b1) == block || world.getType(i + b0, j + 1, k + b1) == block; -+ boolean flag2 = false; -+ -+ if (flag && !flag1) { -+ flag2 = true; -+ } else if (j1 > i1) { -+ flag2 = true; -+ } -+ -+ world.setTypeAndData(i, j, k, block, l, 2); -+ world.setTypeAndData(i, j + 1, k, block, 8 | (flag2 ? 1 : 0), 2); -+ world.applyPhysics(i, j, k, block); -+ world.applyPhysics(i, j + 1, k, block); -+ } -+} diff --git a/src/main/java/net/minecraft/server/Items.java b/src/main/java/net/minecraft/server/Items.java new file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000