From d67763d7a324828a59dd2680d48dc4eebfa23d21 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Tue, 12 Jul 2016 23:22:58 -0500 Subject: [PATCH] Update upstream B/CB/S --- .../0031-Lighting-Queue.patch | 13 +- ...7-Custom-replacement-for-eaten-items.patch | 8 +- ...th-absorb-values-and-repair-bad-data.patch | 10 +- .../0166-Block-sketchy-heads.patch | 122 ------------------ work/Bukkit | 2 +- work/CraftBukkit | 2 +- work/Spigot | 2 +- 7 files changed, 18 insertions(+), 141 deletions(-) delete mode 100644 Spigot-Server-Patches/0166-Block-sketchy-heads.patch diff --git a/Spigot-Server-Patches/0031-Lighting-Queue.patch b/Spigot-Server-Patches/0031-Lighting-Queue.patch index 351417b5b3..c811bd4bb9 100644 --- a/Spigot-Server-Patches/0031-Lighting-Queue.patch +++ b/Spigot-Server-Patches/0031-Lighting-Queue.patch @@ -1,9 +1,8 @@ -From a852ab90e3a6ffc60f939d3848f65bc375bde8f7 Mon Sep 17 00:00:00 2001 +From a7b8b2dfdda06856f138ea8b3fedc1c7aa72a75a Mon Sep 17 00:00:00 2001 From: Byteflux Date: Wed, 2 Mar 2016 00:52:31 -0600 Subject: [PATCH] Lighting Queue -This provides option to queue lighting updates to ensure they do not cause the server lag diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java index 741da72..8b3aa17 100644 @@ -85,19 +84,19 @@ index 015a223..0fae95d 100644 TileEntity tileentity; diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 2ee5c92..23dc778 100644 +index 023bcce..f39ec7e 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -279,6 +279,7 @@ public class ChunkProviderServer implements IChunkProvider { - if (event.isCancelled()) { +@@ -280,6 +280,7 @@ public class ChunkProviderServer implements IChunkProvider { return false; } + save = event.isSaveChunk(); + chunk.lightingQueue.processUnload(); // Paper // Update neighbor counts for (int x = -2; x < 3; x++) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 31d2a10..88f99e5 100644 +index 95f407f..ff1dd53 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -714,7 +714,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs @@ -235,5 +234,5 @@ index 8fb8176..672167a 100644 } -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0087-Custom-replacement-for-eaten-items.patch b/Spigot-Server-Patches/0087-Custom-replacement-for-eaten-items.patch index f1ee55f849..9554c6c8c9 100644 --- a/Spigot-Server-Patches/0087-Custom-replacement-for-eaten-items.patch +++ b/Spigot-Server-Patches/0087-Custom-replacement-for-eaten-items.patch @@ -1,14 +1,14 @@ -From 4249673124a2de38a0d6f8f81ff64379780f36f0 Mon Sep 17 00:00:00 2001 +From afaf65e2a6361203102bc9eb70d47c782a9134e7 Mon Sep 17 00:00:00 2001 From: Jedediah Smith Date: Sun, 21 Jun 2015 15:07:20 -0400 Subject: [PATCH] Custom replacement for eaten items diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 124811f..c6d5986 100644 +index 89e6ef5..ad320c2 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -2265,12 +2265,24 @@ public abstract class EntityLiving extends Entity { +@@ -2261,12 +2261,24 @@ public abstract class EntityLiving extends Entity { ItemStack itemstack = (craftItem.equals(event.getItem())) ? this.bo.a(this.world, this) : CraftItemStack.asNMSCopy(event.getItem()).a(world, this); // CraftBukkit end @@ -34,5 +34,5 @@ index 124811f..c6d5986 100644 } -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0089-handle-NaN-health-absorb-values-and-repair-bad-data.patch b/Spigot-Server-Patches/0089-handle-NaN-health-absorb-values-and-repair-bad-data.patch index 3ddeeef863..baa71db51b 100644 --- a/Spigot-Server-Patches/0089-handle-NaN-health-absorb-values-and-repair-bad-data.patch +++ b/Spigot-Server-Patches/0089-handle-NaN-health-absorb-values-and-repair-bad-data.patch @@ -1,11 +1,11 @@ -From cfa7b89e6571573602f9286f3e188a219b259698 Mon Sep 17 00:00:00 2001 +From a67ad017f95353466c65435997ddad3ef5776248 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 27 Sep 2015 01:18:02 -0400 Subject: [PATCH] handle NaN health/absorb values and repair bad data diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index c6d5986..ff9096f 100644 +index ad320c2..d66e766 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -468,7 +468,13 @@ public abstract class EntityLiving extends Entity { @@ -34,7 +34,7 @@ index c6d5986..ff9096f 100644 // CraftBukkit start - Handle scaled health if (this instanceof EntityPlayer) { org.bukkit.craftbukkit.entity.CraftPlayer player = ((EntityPlayer) this).getBukkitEntity(); -@@ -2135,7 +2145,7 @@ public abstract class EntityLiving extends Entity { +@@ -2131,7 +2141,7 @@ public abstract class EntityLiving extends Entity { } public void setAbsorptionHearts(float f) { @@ -44,7 +44,7 @@ index c6d5986..ff9096f 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9299695..e941f5f 100644 +index e372761..d6b2974 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1390,6 +1390,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -56,5 +56,5 @@ index 9299695..e941f5f 100644 } -- -2.9.0 +2.9.0.windows.1 diff --git a/Spigot-Server-Patches/0166-Block-sketchy-heads.patch b/Spigot-Server-Patches/0166-Block-sketchy-heads.patch deleted file mode 100644 index 22be90a90f..0000000000 --- a/Spigot-Server-Patches/0166-Block-sketchy-heads.patch +++ /dev/null @@ -1,122 +0,0 @@ -From efa5bad0e1fffbffdea0b131524edb1d2054d6b7 Mon Sep 17 00:00:00 2001 -From: Zach Brown -Date: Sat, 9 Jul 2016 20:00:28 -0500 -Subject: [PATCH] Block sketchy heads - -Checks for, and blocks, sketchy creative mode spawned, heads. -Currently only checks for new data, could be added to check all data if needed. -This is an NMS-port of the work done here: https://github.com/MylesIsCool/SkullExploitPatch by MylesIsCool (_MylesC) - -diff --git a/src/main/java/com/destroystokyo/paper/ItemFilter.java b/src/main/java/com/destroystokyo/paper/ItemFilter.java -new file mode 100644 -index 0000000..9266c19 ---- /dev/null -+++ b/src/main/java/com/destroystokyo/paper/ItemFilter.java -@@ -0,0 +1,84 @@ -+package com.destroystokyo.paper; -+ -+import net.minecraft.server.*; -+ -+import javax.annotation.Nullable; -+ -+public class ItemFilter { -+ -+ /** -+ * Checks if the ItemStack passed could be a sketchy head item or block -+ * @param itemStackIn the ItemStack to check -+ * @return whether the item is safe or sketchy -+ */ -+ public static boolean isHeadSketchy(@Nullable ItemStack itemStackIn) { -+ if (itemStackIn != null && itemStackIn.getTag() != null) { -+ NBTTagCompound itemTag = itemStackIn.getTag(); -+ if (Item.getId(itemStackIn.getItem()) == Item.getId(Items.SKULL) && itemStackIn.getData() == 3) { -+ return isHeadItemSketchy(itemTag); -+ } else if (Item.getId(itemStackIn.getItem()) == Block.getId(Blocks.SKULL)) { -+ return isHeadBlockSketchy(itemTag); -+ } -+ -+ // If we can't figure out which is which just run it through both -+ return isHeadItemSketchy(itemTag) || isHeadBlockSketchy(itemTag); -+ } -+ return false; -+ } -+ -+ /** -+ * Checks the NBTTagCompound for sketchy data, from the perspective of an Item -+ * @param nbtTagCompound NBTTagCompound from an Item -+ * @return whether the data is safe or sketchy -+ */ -+ private static boolean isHeadItemSketchy(NBTTagCompound nbtTagCompound) { -+ if (nbtTagCompound.hasKey("SkullOwner")) { -+ NBTTagCompound skullOwner = nbtTagCompound.getCompound("SkullOwner"); -+ if (skullOwner.hasKey("Properties")) { -+ return isHeadNBTSketchy(skullOwner.getCompound("Properties")); -+ } -+ } -+ return false; -+ } -+ -+ /** -+ * Checks the NBTTagCompound for sketchy data, from the perspective of a Block -+ * @param nbtTagCompound NBTTagCompound from a Block -+ * @return whether the data is safe or sketchy -+ */ -+ private static boolean isHeadBlockSketchy(NBTTagCompound nbtTagCompound) { -+ if (nbtTagCompound.hasKey("Owner")) { -+ NBTTagCompound skullOwner = nbtTagCompound.getCompound("Owner"); -+ if (skullOwner.hasKey("Properties")) { -+ return isHeadNBTSketchy(skullOwner.getCompound("Properties")); -+ } -+ } -+ return false; -+ } -+ -+ /** -+ * Generified checker for use in both Items and Blocks after some semantics -+ * are done above in the calling methods. -+ * @param properties The generified properties compound from a parent-compound -+ * @return whether the data is safe or sketchy -+ */ -+ private static boolean isHeadNBTSketchy(NBTTagCompound properties) { -+ if (properties.hasKey("textures")) { -+ NBTTagList textures = properties.getList("textures", 10); -+ for (NBTBase texture : textures.list) { -+ if (texture instanceof NBTTagCompound) { -+ if (!((NBTTagCompound) texture).hasKey("Signature")) { -+ // Check -+ if (((NBTTagCompound) texture).hasKey("Value")) { -+ if (((NBTTagCompound) texture).getString("Value").trim().length() > 0) { -+ return false; -+ } -+ } -+ return true; -+ } -+ } -+ } -+ } -+ return false; -+ } -+} -diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index 85c62cd..0b1e089 100644 ---- a/src/main/java/net/minecraft/server/PlayerConnection.java -+++ b/src/main/java/net/minecraft/server/PlayerConnection.java -@@ -2028,6 +2028,15 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { - } - } - -+ // Paper start - Block sketchy heads -+ if (itemstack != null && (Item.getId(itemstack.getItem()) == Item.getId(Items.SKULL) && itemstack.getData() == 3 || Item.getId(itemstack.getItem()) == Block.getId(Blocks.SKULL))) { -+ if (com.destroystokyo.paper.ItemFilter.isHeadSketchy(itemstack)) { -+ this.disconnect("Bad creative item!"); -+ return; -+ } -+ } -+ // Paper end -+ - boolean flag1 = packetplayinsetcreativeslot.a() >= 1 && packetplayinsetcreativeslot.a() <= 45; - // CraftBukkit - Add invalidItems check - boolean flag2 = itemstack == null || itemstack.getItem() != null && (!invalidItems.contains(Item.getId(itemstack.getItem())) || !org.spigotmc.SpigotConfig.filterCreativeItems); // Spigot --- -2.9.0 - diff --git a/work/Bukkit b/work/Bukkit index a1760b6bae..19b3d5ef4c 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit a1760b6baec0db18f0eeda14e371a75fa6fc3d3b +Subproject commit 19b3d5ef4cd3cc4cef246dd9dba02199e19f5daf diff --git a/work/CraftBukkit b/work/CraftBukkit index 02d704b55a..301db84d3d 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 02d704b55af439337a63becf23d8a1e05780ef01 +Subproject commit 301db84d3d85f5218f3ec590224071c04140bbe2 diff --git a/work/Spigot b/work/Spigot index 7745d45de9..9797151286 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 7745d45de92679ec54435905ec56cec46f5ce709 +Subproject commit 9797151286c045686e3d09389353431efcc6034a