From 63edda8ed6d2fdacd472cc7fef0ecb953e800909 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> Date: Mon, 1 Jul 2019 23:51:06 -0500 Subject: [PATCH] Update upstream B/CB/S --- work/Bukkit Submodule work/Bukkit aba2aaaf..949124e0: > SPIGOT-5121: Method to set PierceLevel of arrows --- work/CraftBukkit Submodule work/CraftBukkit c6997924..bf329334: > SPIGOT-5133: Throwing items into secondary end world portal causes crash > SPIGOT-5121: Method to set PierceLevel of arrows > SPIGOT-5122: Skip world#notify if sign has no world. > SPIGOT-5105: The EntityTag nbt tag disappears from preset armor_stand items. > SPIGOT-5106: Config option to prevent plugins with incompatible API's from loading --- work/Spigot Submodule work/Spigot 595711b0..935adb34: > SPIGOT-5088: Additional growth modifiers --- .../Arrow-pickup-rule-API.patch | 2 +- .../Add-ArmorStand-Item-Meta.patch | 319 ++++++------------ ...dd-Early-Warning-Feature-to-WatchDog.patch | 10 +- .../Add-UnknownCommandEvent.patch | 2 +- .../Add-Velocity-IP-Forwarding-Support.patch | 16 +- ...n-option-to-prevent-player-names-fro.patch | 4 +- .../Add-exception-reporting-event.patch | 22 +- ...setting-for-proxy-online-mode-status.patch | 6 +- .../Add-velocity-warnings.patch | 6 +- .../Allow-Reloading-of-Command-Aliases.patch | 2 +- ...llow-Reloading-of-Custom-Permissions.patch | 2 +- .../AsyncTabCompleteEvent.patch | 6 +- .../Avoid-dimension-id-collisions.patch | 2 +- .../Basic-PlayerProfile-API.patch | 18 +- ...ading-permissions.yml-before-plugins.patch | 4 +- ...on-t-call-getItemMeta-on-hasItemMeta.patch | 4 +- .../Ensure-commands-are-not-ran-async.patch | 10 +- .../Expose-server-CommandMap.patch | 2 +- ...isPrimaryThread-and-MinecraftServer-.patch | 4 +- .../Further-improve-server-tick-loop.patch | 6 +- .../Implement-Paper-VersionChecker.patch | 4 +- ...mplement-ensureServerConversions-API.patch | 2 +- .../Implement-getI18NDisplayName.patch | 4 +- ...ault-permission-message-configurable.patch | 4 +- .../Optimize-Captured-TileEntity-Lookup.patch | 2 +- .../Optimize-redstone-algorithm.patch | 8 +- ...t-armor-stands-from-doing-entity-loo.patch | 4 +- .../Paper-config-files.patch | 12 +- ...event-tile-entity-and-entity-crashes.patch | 6 +- .../Remove-Metadata-on-reload.patch | 2 +- ...Remove-unused-World-Tile-Entity-List.patch | 2 +- ...store-vanlla-default-mob-spawn-range.patch | 2 +- .../Support-Overriding-World-Seeds.patch | 8 +- Spigot-Server-Patches/Timings-v2.patch | 60 ++-- ...oleAppender-for-console-improvements.patch | 26 +- .../Use-asynchronous-Log4j-2-loggers.patch | 2 +- .../getPlayerUniqueId-API.patch | 2 +- work/Bukkit | 2 +- work/CraftBukkit | 2 +- work/Spigot | 2 +- 40 files changed, 253 insertions(+), 350 deletions(-) diff --git a/Spigot-API-Patches/Arrow-pickup-rule-API.patch b/Spigot-API-Patches/Arrow-pickup-rule-API.patch index d26041bbf3..83022d7da4 100644 --- a/Spigot-API-Patches/Arrow-pickup-rule-API.patch +++ b/Spigot-API-Patches/Arrow-pickup-rule-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Arrow pickup rule API diff --git a/src/main/java/org/bukkit/entity/AbstractArrow.java b/src/main/java/org/bukkit/entity/AbstractArrow.java -index 4460f6c9e..a1990fef2 100644 +index 88cebc00..b2bf62a5 100644 --- a/src/main/java/org/bukkit/entity/AbstractArrow.java +++ b/src/main/java/org/bukkit/entity/AbstractArrow.java @@ -0,0 +0,0 @@ public interface AbstractArrow extends Projectile { diff --git a/Spigot-Server-Patches/Add-ArmorStand-Item-Meta.patch b/Spigot-Server-Patches/Add-ArmorStand-Item-Meta.patch index 731e6d6c6b..c422d41a34 100644 --- a/Spigot-Server-Patches/Add-ArmorStand-Item-Meta.patch +++ b/Spigot-Server-Patches/Add-ArmorStand-Item-Meta.patch @@ -12,79 +12,37 @@ starting point for future additions in this area. Fixes GH-559 -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -index 7099eeda4e..cb9f4af3f7 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java -@@ -0,0 +0,0 @@ public final class CraftItemFactory implements ItemFactory { - return meta instanceof CraftMetaSpawnEgg ? meta : new CraftMetaSpawnEgg(meta); - case KNOWLEDGE_BOOK: - return meta instanceof CraftMetaKnowledgeBook ? meta : new CraftMetaKnowledgeBook(meta); -+ case ARMOR_STAND: -+ return meta instanceof CraftMetaArmorStand ? meta : new CraftMetaArmorStand(meta); // Paper - case FURNACE: - case CHEST: - case TRAPPED_CHEST: -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -index f2f4c8d3c3..6e018396e6 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -0,0 +0,0 @@ public final class CraftItemStack extends ItemStack { - return new CraftMetaSpawnEgg(item.getTag()); - case KNOWLEDGE_BOOK: - return new CraftMetaKnowledgeBook(item.getTag()); -+ case ARMOR_STAND: -+ return new CraftMetaArmorStand(item.getTag()); // Paper - case FURNACE: - case CHEST: - case TRAPPED_CHEST: diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java -new file mode 100644 -index 0000000000..c00b89c8d4 ---- /dev/null +index f70052284..3723facca 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmorStand.java -@@ -0,0 +0,0 @@ -+package org.bukkit.craftbukkit.inventory; -+ -+import com.destroystokyo.paper.inventory.meta.ArmorStandMeta; -+import com.google.common.collect.ImmutableMap; -+import com.mojang.datafixers.Dynamic; -+ -+import net.minecraft.server.DataConverterTypes; -+import net.minecraft.server.DynamicOpsNBT; -+import net.minecraft.server.MinecraftServer; -+import net.minecraft.server.NBTBase; -+import net.minecraft.server.NBTTagCompound; -+ -+import org.bukkit.Bukkit; -+import org.bukkit.Material; -+import org.bukkit.configuration.serialization.DelegateDeserialization; -+import org.bukkit.craftbukkit.util.CraftMagicNumbers; -+ -+import java.util.Map; -+ -+// Paper - Created entire class -+@DelegateDeserialization(CraftMetaItem.SerializableMeta.class) -+public class CraftMetaArmorStand extends CraftMetaItem implements ArmorStandMeta { -+ -+ static final ItemMetaKey ENTITY_TAG = new ItemMetaKey("EntityTag", "entity-tag"); +@@ -0,0 +0,0 @@ import org.bukkit.Material; + import org.bukkit.configuration.serialization.DelegateDeserialization; + + @DelegateDeserialization(CraftMetaItem.SerializableMeta.class) +-public class CraftMetaArmorStand extends CraftMetaItem { ++public class CraftMetaArmorStand extends CraftMetaItem implements com.destroystokyo.paper.inventory.meta.ArmorStandMeta { // Paper + + static final ItemMetaKey ENTITY_TAG = new ItemMetaKey("EntityTag", "entity-tag"); ++ // Paper start + static final ItemMetaKey INVISIBLE = new ItemMetaKey("Invisible", "invisible"); + static final ItemMetaKey NO_BASE_PLATE = new ItemMetaKey("NoBasePlate", "no-base-plate"); + static final ItemMetaKey SHOW_ARMS = new ItemMetaKey("ShowArms", "show-arms"); + static final ItemMetaKey SMALL = new ItemMetaKey("Small", "small"); + static final ItemMetaKey MARKER = new ItemMetaKey("Marker", "marker"); + -+ private NBTTagCompound entityTag; -+ + private boolean invisible; + private boolean noBasePlate; + private boolean showArms; + private boolean small; + private boolean marker; -+ -+ CraftMetaArmorStand(CraftMetaItem meta) { -+ super(meta); -+ ++ // Paper end + NBTTagCompound entityTag; + + CraftMetaArmorStand(CraftMetaItem meta) { + super(meta); ++ ++ // Paper start + if (!(meta instanceof CraftMetaArmorStand)) { + return; + } @@ -95,14 +53,16 @@ index 0000000000..c00b89c8d4 + this.showArms = standMeta.showArms; + this.small = standMeta.small; + this.marker = standMeta.marker; -+ } -+ -+ CraftMetaArmorStand(NBTTagCompound tag) { -+ super(tag); -+ -+ if (tag.hasKey(ENTITY_TAG.NBT)) { -+ entityTag = tag.getCompound(ENTITY_TAG.NBT); ++ // Paper end + } + + CraftMetaArmorStand(NBTTagCompound tag) { +@@ -0,0 +0,0 @@ public class CraftMetaArmorStand extends CraftMetaItem { + + if (tag.hasKey(ENTITY_TAG.NBT)) { + entityTag = tag.getCompound(ENTITY_TAG.NBT); + ++ // Paper start + if (entityTag.hasKey(INVISIBLE.NBT)) { + invisible = entityTag.getBoolean(INVISIBLE.NBT); + } @@ -122,12 +82,14 @@ index 0000000000..c00b89c8d4 + if (entityTag.hasKey(MARKER.NBT)) { + marker = entityTag.getBoolean(MARKER.NBT); + } -+ } -+ } -+ -+ CraftMetaArmorStand(Map map) { -+ super(map); ++ // Paper end + } + } + + CraftMetaArmorStand(Map map) { + super(map); + ++ // Paper start + boolean invis = SerializableMeta.getBoolean(map, INVISIBLE.BUKKIT); + boolean noBase = SerializableMeta.getBoolean(map, NO_BASE_PLATE.BUKKIT); + boolean showArms = SerializableMeta.getBoolean(map, SHOW_ARMS.BUKKIT); @@ -139,12 +101,15 @@ index 0000000000..c00b89c8d4 + this.showArms = showArms; + this.small = small; + this.marker = marker; -+ } -+ -+ @Override -+ void applyToItem(NBTTagCompound tag) { -+ super.applyToItem(tag); -+ ++ // Paper end + } + + @Override +@@ -0,0 +0,0 @@ public class CraftMetaArmorStand extends CraftMetaItem { + void applyToItem(NBTTagCompound tag) { + super.applyToItem(tag); + ++ // Paper start + if (!isArmorStandEmpty() && entityTag == null) { + entityTag = new NBTTagCompound(); + } @@ -168,35 +133,58 @@ index 0000000000..c00b89c8d4 + if (isMarker()) { + entityTag.setBoolean(MARKER.NBT, marker); + } ++ // Paper end + -+ if (entityTag != null) { -+ tag.set(ENTITY_TAG.NBT, entityTag); -+ } -+ } -+ -+ @Override -+ boolean applicableTo(Material type) { -+ switch (type) { -+ case ARMOR_STAND: -+ return true; -+ default: -+ return false; -+ } -+ } -+ -+ @Override -+ boolean isEmpty() { -+ return super.isEmpty() && isArmorStandEmpty(); -+ } -+ -+ boolean isArmorStandEmpty() { + if (entityTag != null) { + tag.set(ENTITY_TAG.NBT, entityTag); + } +@@ -0,0 +0,0 @@ public class CraftMetaArmorStand extends CraftMetaItem { + } + + boolean isArmorStandEmpty() { +- return !(entityTag != null); + return !(isInvisible() || hasNoBasePlate() || shouldShowArms() || isSmall() || isMarker() || entityTag != null); -+ } -+ -+ @Override -+ ImmutableMap.Builder serialize(ImmutableMap.Builder builder) { -+ super.serialize(builder); -+ + } + + @Override +@@ -0,0 +0,0 @@ public class CraftMetaArmorStand extends CraftMetaItem { + if (meta instanceof CraftMetaArmorStand) { + CraftMetaArmorStand that = (CraftMetaArmorStand) meta; + +- return entityTag != null ? that.entityTag != null && this.entityTag.equals(that.entityTag) : entityTag == null; ++ // Paper start ++ return invisible == that.invisible && ++ noBasePlate == that.noBasePlate && ++ showArms == that.showArms && ++ small == that.small && ++ marker == that.marker; ++ // Paper end + } + return true; + } +@@ -0,0 +0,0 @@ public class CraftMetaArmorStand extends CraftMetaItem { + final int original; + int hash = original = super.applyHash(); + +- if (entityTag != null) { +- hash = 73 * hash + entityTag.hashCode(); +- } ++ // Paper start ++ hash += entityTag != null ? 73 * hash + entityTag.hashCode() : 0; ++ hash += isInvisible() ? 61 * hash + 1231 : 0; ++ hash += hasNoBasePlate() ? 61 * hash + 1231 : 0; ++ hash += shouldShowArms() ? 61 * hash + 1231 : 0; ++ hash += isSmall() ? 61 * hash + 1231 : 0; ++ hash += isMarker() ? 61 * hash + 1231 : 0; ++ // Paper end + + return original != hash ? CraftMetaArmorStand.class.hashCode() ^ hash : hash; + } +@@ -0,0 +0,0 @@ public class CraftMetaArmorStand extends CraftMetaItem { + Builder serialize(Builder builder) { + super.serialize(builder); + ++ // Paper start + if (isInvisible()) { + builder.put(INVISIBLE.BUKKIT, invisible); + } @@ -216,69 +204,17 @@ index 0000000000..c00b89c8d4 + if (isMarker()) { + builder.put(MARKER.BUKKIT, marker); + } ++ // Paper end + -+ return builder; -+ } -+ -+ @Override -+ void deserializeInternal(NBTTagCompound tag, Object context) { -+ super.deserializeInternal(tag, context); -+ -+ if (tag.hasKey(ENTITY_TAG.NBT)) { -+ entityTag = tag.getCompound(ENTITY_TAG.NBT); -+ MinecraftServer.getServer().dataConverterManager.update(DataConverterTypes.ENTITY, new Dynamic(DynamicOpsNBT.a, entityTag), -1, Bukkit.getUnsafe().getDataVersion()); -+ -+ if (entityTag.hasKey(INVISIBLE.NBT)) { -+ invisible = entityTag.getBoolean(INVISIBLE.NBT); -+ } -+ -+ if (entityTag.hasKey(NO_BASE_PLATE.NBT)) { -+ noBasePlate = entityTag.getBoolean(NO_BASE_PLATE.NBT); -+ } -+ -+ if (entityTag.hasKey(SHOW_ARMS.NBT)) { -+ showArms = entityTag.getBoolean(SHOW_ARMS.NBT); -+ } -+ -+ if (entityTag.hasKey(SMALL.NBT)) { -+ small = entityTag.getBoolean(SMALL.NBT); -+ } -+ -+ if (entityTag.hasKey(MARKER.NBT)) { -+ marker = entityTag.getBoolean(MARKER.NBT); -+ } -+ } -+ } -+ -+ @Override -+ boolean equalsCommon(CraftMetaItem meta) { -+ if (!super.equalsCommon(meta)) { -+ return false; -+ } -+ if (meta instanceof CraftMetaArmorStand) { -+ CraftMetaArmorStand that = (CraftMetaArmorStand) meta; -+ -+ return invisible == that.invisible && -+ noBasePlate == that.noBasePlate && -+ showArms == that.showArms && -+ small == that.small && -+ marker == that.marker; -+ } -+ return true; -+ } -+ -+ @Override -+ boolean notUncommon(CraftMetaItem meta) { -+ return super.notUncommon(meta) && (meta instanceof CraftMetaArmorStand || isArmorStandEmpty()); -+ } -+ -+ @Override -+ void serializeInternal(Map internalTags) { -+ if (entityTag != null) { -+ internalTags.put(ENTITY_TAG.NBT, entityTag); -+ } -+ } + return builder; + } + +@@ -0,0 +0,0 @@ public class CraftMetaArmorStand extends CraftMetaItem { + + return clone; + } + ++ // Paper start + @Override + public boolean isInvisible() { + return invisible; @@ -328,35 +264,10 @@ index 0000000000..c00b89c8d4 + public void setMarker(boolean marker) { + this.marker = marker; + } -+ -+ @Override -+ int applyHash() { -+ final int original; -+ int hash = original = super.applyHash(); -+ -+ hash += entityTag != null ? 73 * hash + entityTag.hashCode() : 0; -+ hash += isInvisible() ? 61 * hash + 1231 : 0; -+ hash += hasNoBasePlate() ? 61 * hash + 1231 : 0; -+ hash += shouldShowArms() ? 61 * hash + 1231 : 0; -+ hash += isSmall() ? 61 * hash + 1231 : 0; -+ hash += isMarker() ? 61 * hash + 1231 : 0; -+ -+ return original != hash ? CraftMetaArmorStand.class.hashCode() ^ hash : hash; -+ } -+ -+ @Override -+ public CraftMetaArmorStand clone() { -+ CraftMetaArmorStand clone = (CraftMetaArmorStand) super.clone(); -+ -+ if (entityTag != null) { -+ clone.entityTag = entityTag.clone(); -+ } -+ -+ return clone; -+ } -+} ++ // Paper end + } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -index bf7b226a4f..a8b267487f 100644 +index bf7b226a4..a8b267487 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java @@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { @@ -385,7 +296,7 @@ index bf7b226a4f..a8b267487f 100644 } return HANDLED_TAGS; diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java -index 6abde9030d..2a0852675b 100644 +index dd4ba3874..48c5e0621 100644 --- a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java +++ b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaTest.java @@ -0,0 +0,0 @@ import java.util.ArrayList; @@ -397,21 +308,11 @@ index 6abde9030d..2a0852675b 100644 import net.minecraft.server.IRegistry; import net.minecraft.server.ITileEntity; @@ -0,0 +0,0 @@ public class ItemMetaTest extends AbstractTestingBase { + final CraftMetaArmorStand meta = (CraftMetaArmorStand) cleanStack.getItemMeta(); + meta.entityTag = new NBTTagCompound(); + meta.entityTag.setBoolean("Small", true); ++ meta.setInvisible(true); // Paper cleanStack.setItemMeta(meta); return cleanStack; } -+ }, -+ // Paper start -+ new StackProvider(Material.ARMOR_STAND) { -+ @Override ItemStack operate(ItemStack cleanStack) { -+ final ArmorStandMeta meta = (ArmorStandMeta) cleanStack.getItemMeta(); -+ meta.setInvisible(true); -+ cleanStack.setItemMeta(meta); -+ return cleanStack; -+ } - } -+ // paper end - ); - - assertThat("Forgotten test?", providers, hasSize(ItemStackTest.COMPOUND_MATERIALS.length - 4/* Normal item meta, skulls, eggs and tile entities */)); -- \ No newline at end of file diff --git a/Spigot-Server-Patches/Add-Early-Warning-Feature-to-WatchDog.patch b/Spigot-Server-Patches/Add-Early-Warning-Feature-to-WatchDog.patch index 22439283b4..a70e9b92c9 100644 --- a/Spigot-Server-Patches/Add-Early-Warning-Feature-to-WatchDog.patch +++ b/Spigot-Server-Patches/Add-Early-Warning-Feature-to-WatchDog.patch @@ -9,7 +9,7 @@ thread dumps at an interval until the point of crash. This will help diagnose what was going on in that time before the crash. diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 207e5d3e23..a13c8c68b6 100644 +index 207e5d3e2..a13c8c68b 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -0,0 +0,0 @@ import org.bukkit.configuration.file.YamlConfiguration; @@ -36,7 +36,7 @@ index 207e5d3e23..a13c8c68b6 100644 public static int tabSpamLimit = 500; private static void tabSpamLimiters() { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 946803e2be..fe8647bbc6 100644 +index 946803e2b..fe8647bbc 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant> { @@ -216,7 +216,7 @@ index efd02bd67d..c073b04aa9 100644 public java.util.UUID spoofedUUID; public com.mojang.authlib.properties.Property[] spoofedProfile; diff --git a/src/main/java/net/minecraft/server/PacketDataSerializer.java b/src/main/java/net/minecraft/server/PacketDataSerializer.java -index fa2d3ce8cb..dac560c63f 100644 +index fa2d3ce8c..dac560c63 100644 --- a/src/main/java/net/minecraft/server/PacketDataSerializer.java +++ b/src/main/java/net/minecraft/server/PacketDataSerializer.java @@ -0,0 +0,0 @@ public class PacketDataSerializer extends ByteBuf { @@ -244,7 +244,7 @@ index fa2d3ce8cb..dac560c63f 100644 int j = this.i(); diff --git a/src/main/java/net/minecraft/server/PacketLoginInCustomPayload.java b/src/main/java/net/minecraft/server/PacketLoginInCustomPayload.java -index 4d1f441395..c1ca6f9501 100644 +index 4d1f44139..c1ca6f950 100644 --- a/src/main/java/net/minecraft/server/PacketLoginInCustomPayload.java +++ b/src/main/java/net/minecraft/server/PacketLoginInCustomPayload.java @@ -0,0 +0,0 @@ import java.io.IOException; @@ -259,7 +259,7 @@ index 4d1f441395..c1ca6f9501 100644 public PacketLoginInCustomPayload() {} diff --git a/src/main/java/net/minecraft/server/PacketLoginOutCustomPayload.java b/src/main/java/net/minecraft/server/PacketLoginOutCustomPayload.java -index ae74dc9e18..7eb230f1b2 100644 +index ae74dc9e1..7eb230f1b 100644 --- a/src/main/java/net/minecraft/server/PacketLoginOutCustomPayload.java +++ b/src/main/java/net/minecraft/server/PacketLoginOutCustomPayload.java @@ -0,0 +0,0 @@ public class PacketLoginOutCustomPayload implements Packet blockStateList; diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index f3c5c729ff..ab9b7bbd31 100644 +index f3c5c729f..ab9b7bbd3 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess { @@ -342,7 +342,7 @@ index f3c5c729ff..ab9b7bbd31 100644 } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 710d40b43a..22aba06270 100644 +index 710d40b43..22aba0627 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -0,0 +0,0 @@ public class ChunkProviderServer extends IChunkProvider { @@ -378,7 +378,7 @@ index 710d40b43a..22aba06270 100644 @Override diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -index 1894509df8..ad3ade3c5c 100644 +index 1894509df..ad3ade3c5 100644 --- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java +++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java @@ -0,0 +0,0 @@ @@ -416,7 +416,7 @@ index 1894509df8..ad3ade3c5c 100644 } diff --git a/src/main/java/net/minecraft/server/CustomFunction.java b/src/main/java/net/minecraft/server/CustomFunction.java -index 12885cbd60..49de6e997a 100644 +index 12885cbd6..49de6e997 100644 --- a/src/main/java/net/minecraft/server/CustomFunction.java +++ b/src/main/java/net/minecraft/server/CustomFunction.java @@ -0,0 +0,0 @@ public class CustomFunction { @@ -443,7 +443,7 @@ index 12885cbd60..49de6e997a 100644 return this.b; } diff --git a/src/main/java/net/minecraft/server/CustomFunctionData.java b/src/main/java/net/minecraft/server/CustomFunctionData.java -index 8346778383..8bc74add6d 100644 +index 834677838..8bc74add6 100644 --- a/src/main/java/net/minecraft/server/CustomFunctionData.java +++ b/src/main/java/net/minecraft/server/CustomFunctionData.java @@ -0,0 +0,0 @@ public class CustomFunctionData implements IResourcePackListener { @@ -456,7 +456,7 @@ index 8346778383..8bc74add6d 100644 int j = 0; CustomFunction.c[] acustomfunction_c = customfunction.b(); diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index c088ff9692..c7ea4ec4fe 100644 +index c088ff969..c7ea4ec4f 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -0,0 +0,0 @@ import java.util.Collections; @@ -544,7 +544,7 @@ index c088ff9692..c7ea4ec4fe 100644 } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 0c7bf3ae3f..49f64e1507 100644 +index 99b62e149..5d17b692d 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -0,0 +0,0 @@ import org.bukkit.command.CommandSender; @@ -583,7 +583,7 @@ index 0c7bf3ae3f..49f64e1507 100644 protected Vec3D a(Vec3D vec3d, EnumMoveType enummovetype) { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index e0b12e1fd7..30aa4f56d3 100644 +index e0b12e1fd..30aa4f56d 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +0,0 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -659,7 +659,7 @@ index e0b12e1fd7..30aa4f56d3 100644 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f9ec2b0686..d0419119b3 100644 +index f9ec2b068..d0419119b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ import org.bukkit.craftbukkit.CraftServer; @@ -779,7 +779,7 @@ index f9ec2b0686..d0419119b3 100644 this.methodProfiler.exit(); } diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 9381734a3a..ef31a269e4 100644 +index 9381734a3..ef31a269e 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -0,0 +0,0 @@ @@ -827,7 +827,7 @@ index 9381734a3a..ef31a269e4 100644 } diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java -index d40600c103..fa37c19c69 100644 +index d40600c10..fa37c19c6 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ import org.bukkit.inventory.CraftingInventory; @@ -882,7 +882,7 @@ index d40600c103..fa37c19c69 100644 // this.minecraftServer.getCommandDispatcher().a(this.player.getCommandListener(), s); // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java -index cb6d50ea70..9ba03f8ed0 100644 +index cb6d50ea7..9ba03f8ed 100644 --- a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java +++ b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java @@ -0,0 +0,0 @@ @@ -908,7 +908,7 @@ index cb6d50ea70..9ba03f8ed0 100644 throw CancelledPacketHandleException.INSTANCE; } diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index ee22d6c81a..fb6b48e3fe 100644 +index ee22d6c81..fb6b48e3f 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -0,0 +0,0 @@ @@ -932,7 +932,7 @@ index ee22d6c81a..fb6b48e3fe 100644 public WhiteList getWhitelist() { diff --git a/src/main/java/net/minecraft/server/TickListServer.java b/src/main/java/net/minecraft/server/TickListServer.java -index 061730c560..c5890f5dcc 100644 +index 061730c56..c5890f5dc 100644 --- a/src/main/java/net/minecraft/server/TickListServer.java +++ b/src/main/java/net/minecraft/server/TickListServer.java @@ -0,0 +0,0 @@ public class TickListServer implements TickList { @@ -982,7 +982,7 @@ index 061730c560..c5890f5dcc 100644 this.g.clear(); } diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java -index e8a90e01f5..0956eff603 100644 +index e8a90e01f..0956eff60 100644 --- a/src/main/java/net/minecraft/server/TileEntity.java +++ b/src/main/java/net/minecraft/server/TileEntity.java @@ -0,0 +0,0 @@ import org.bukkit.craftbukkit.persistence.CraftPersistentDataContainer; @@ -1001,7 +1001,7 @@ index e8a90e01f5..0956eff603 100644 private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry(); public final CraftPersistentDataContainer persistentDataContainer = new CraftPersistentDataContainer(DATA_TYPE_REGISTRY); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 32981c4422..4365383dd7 100644 +index 32981c442..0e09adf7d 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -0,0 +0,0 @@ @@ -1050,6 +1050,7 @@ index 32981c4422..4365383dd7 100644 public void a(Consumer consumer, Entity entity) { try { - SpigotTimings.tickEntityTimer.startTiming(); // Spigot ++ timings.tickEntities.startTiming(); + entity.tickTimer.startTiming(); + // Spigot end consumer.accept(entity); @@ -1062,11 +1063,12 @@ index 32981c4422..4365383dd7 100644 throw new ReportedException(crashreport); + } finally { + entity.tickTimer.stopTiming(); ++ timings.tickEntities.stopTiming(); } } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index df518ff633..229cff562f 100644 +index df518ff63..229cff562 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -0,0 +0,0 @@ @@ -1158,7 +1160,7 @@ index df518ff633..229cff562f 100644 // CraftBukkit start - moved from MinecraftServer.saveChunks diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 61ed2ff50a..75b7d3cca8 100644 +index 8a7e551cd..940588dc5 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -0,0 +0,0 @@ public final class CraftServer implements Server { @@ -1195,7 +1197,7 @@ index 61ed2ff50a..75b7d3cca8 100644 org.spigotmc.RestartCommand.restart(); diff --git a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java b/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java deleted file mode 100644 -index 38f211526b..0000000000 +index 38f211526..000000000 --- a/src/main/java/org/bukkit/craftbukkit/SpigotTimings.java +++ /dev/null @@ -0,0 +0,0 @@ @@ -1366,7 +1368,7 @@ index 38f211526b..0000000000 - } -} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 00aecdc472..c6daf693c5 100644 +index 00aecdc47..c6daf693c 100644 --- 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 { @@ -1385,7 +1387,7 @@ index 00aecdc472..c6daf693c5 100644 public Player.Spigot spigot() diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java -index b90979c7ba..8823f94f7b 100644 +index b90979c7b..8823f94f7 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java @@ -0,0 +0,0 @@ @@ -1451,7 +1453,7 @@ index b90979c7ba..8823f94f7b 100644 private boolean isReady(final int currentTick) { diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java -index 3f55381c15..0d9a466809 100644 +index 3f55381c1..0d9a46680 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftTask.java @@ -0,0 +0,0 @@ @@ -1536,7 +1538,7 @@ index 3f55381c15..0d9a466809 100644 - // Spigot end } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java b/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java -index e52ef47b78..3d90b34268 100644 +index e52ef47b7..3d90b3426 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftIconCache.java @@ -0,0 +0,0 @@ import org.bukkit.util.CachedServerIcon; @@ -1548,7 +1550,7 @@ index e52ef47b78..3d90b34268 100644 this.value = value; } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 7ae4e7288b..fa32d4bb7e 100644 +index 8b6ec888e..2733c63aa 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -0,0 +0,0 @@ public final class CraftMagicNumbers implements UnsafeValues { @@ -1566,7 +1568,7 @@ index 7ae4e7288b..fa32d4bb7e 100644 * This helper class represents the different NBT Tags. *

diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 4c947a9352..106e9d7e2d 100644 +index 4c947a935..106e9d7e2 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -0,0 +0,0 @@ import net.minecraft.server.EntityWither; diff --git a/Spigot-Server-Patches/Use-TerminalConsoleAppender-for-console-improvements.patch b/Spigot-Server-Patches/Use-TerminalConsoleAppender-for-console-improvements.patch index 5c027900e0..0f8e5b1db2 100644 --- a/Spigot-Server-Patches/Use-TerminalConsoleAppender-for-console-improvements.patch +++ b/Spigot-Server-Patches/Use-TerminalConsoleAppender-for-console-improvements.patch @@ -19,7 +19,7 @@ Other changes: configuration diff --git a/pom.xml b/pom.xml -index 75c1b84f6a..58ccbaa1ae 100644 +index 75c1b84f6..58ccbaa1a 100644 --- a/pom.xml +++ b/pom.xml @@ -0,0 +0,0 @@ @@ -75,7 +75,7 @@ index 75c1b84f6a..58ccbaa1ae 100644 org.apache.maven.plugins diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java new file mode 100644 -index 0000000000..cd6e259239 +index 000000000..cd6e25923 --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java @@ -0,0 +0,0 @@ @@ -121,7 +121,7 @@ index 0000000000..cd6e259239 +} diff --git a/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java b/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java new file mode 100644 -index 0000000000..685deaa0e5 +index 000000000..685deaa0e --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/console/TerminalConsoleCommandSender.java @@ -0,0 +0,0 @@ @@ -143,7 +143,7 @@ index 0000000000..685deaa0e5 + +} diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index 6e1509c2c1..26b35855e1 100644 +index 6e1509c2c..26b35855e 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer @@ -185,7 +185,7 @@ index 6e1509c2c1..26b35855e1 100644 System.setOut(new PrintStream(new LoggerOutputStream(logger, Level.INFO), true)); System.setErr(new PrintStream(new LoggerOutputStream(logger, Level.WARN), true)); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 36d29b3324..f340f4bfe3 100644 +index 36d29b332..f340f4bfe 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -0,0 +0,0 @@ import org.apache.commons.lang3.Validate; @@ -244,7 +244,7 @@ index 36d29b3324..f340f4bfe3 100644 public KeyPair getKeyPair() { diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java -index d23e4e5e3d..6a77707983 100644 +index d23e4e5e3..6a7770798 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 { @@ -258,7 +258,7 @@ index d23e4e5e3d..6a77707983 100644 this.k = new GameProfileBanList(PlayerList.a); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 91618e1cc4..6528705809 100644 +index 6de6435da..e78741914 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -0,0 +0,0 @@ import java.util.function.Consumer; @@ -284,7 +284,7 @@ index 91618e1cc4..6528705809 100644 @Override public PluginCommand getPluginCommand(String name) { diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index c5d5121fd9..4aebe53f8a 100644 +index c5d5121fd..4aebe53f8 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -0,0 +0,0 @@ import java.util.logging.Logger; @@ -326,7 +326,7 @@ index c5d5121fd9..4aebe53f8a 100644 if (Main.class.getPackage().getImplementationVendor() != null && System.getProperty("IReallyKnowWhatIAmDoingISwear") == null) { diff --git a/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java b/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java deleted file mode 100644 -index fdf2f075e2..0000000000 +index fdf2f075e..000000000 --- a/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java +++ /dev/null @@ -0,0 +0,0 @@ @@ -403,7 +403,7 @@ index fdf2f075e2..0000000000 - } -} diff --git a/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java b/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java -index befcc19f9b..5510266fb1 100644 +index befcc19f9..5510266fb 100644 --- a/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java +++ b/src/main/java/org/bukkit/craftbukkit/command/ConsoleCommandCompleter.java @@ -0,0 +0,0 @@ import java.util.Collections; @@ -486,7 +486,7 @@ index befcc19f9b..5510266fb1 100644 } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java b/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java -index 70f8d42992..449e99d1b6 100644 +index 70f8d4299..449e99d1b 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java +++ b/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java @@ -0,0 +0,0 @@ public class ServerShutdownThread extends Thread { @@ -500,7 +500,7 @@ index 70f8d42992..449e99d1b6 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java b/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java deleted file mode 100644 -index f267f99f96..0000000000 +index f267f99f9..000000000 --- a/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleWriterThread.java +++ /dev/null @@ -0,0 +0,0 @@ @@ -562,7 +562,7 @@ index f267f99f96..0000000000 - } -} diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml -index 490a9acc70..08b6bb7f97 100644 +index 490a9acc7..08b6bb7f9 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -0,0 +0,0 @@ diff --git a/Spigot-Server-Patches/Use-asynchronous-Log4j-2-loggers.patch b/Spigot-Server-Patches/Use-asynchronous-Log4j-2-loggers.patch index 2ee8e81f52..96fa14a081 100644 --- a/Spigot-Server-Patches/Use-asynchronous-Log4j-2-loggers.patch +++ b/Spigot-Server-Patches/Use-asynchronous-Log4j-2-loggers.patch @@ -52,6 +52,6 @@ index 000000000..f72f7425c +++ b/src/main/resources/log4j2.component.properties @@ -0,0 +0,0 @@ +Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector -+log4j2.AsyncQueueFullPolicy=com.destroystokyo.paper.log.LogFullPolicy ++log4j2.AsyncQueueFullPolicy="com.destroystokyo.paper.log.LogFullPolicy" \ No newline at end of file -- \ No newline at end of file diff --git a/Spigot-Server-Patches/getPlayerUniqueId-API.patch b/Spigot-Server-Patches/getPlayerUniqueId-API.patch index 78ee18c91e..6047b06bf2 100644 --- a/Spigot-Server-Patches/getPlayerUniqueId-API.patch +++ b/Spigot-Server-Patches/getPlayerUniqueId-API.patch @@ -9,7 +9,7 @@ In Offline Mode, will return an Offline UUID This is a more performant way to obtain a UUID for a name than loading an OfflinePlayer diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index c72b68b03e..46c5a5bdc5 100644 +index 9df5440a5..967b62028 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -0,0 +0,0 @@ public final class CraftServer implements Server { diff --git a/work/Bukkit b/work/Bukkit index aba2aaaf45..949124e059 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit aba2aaaf4567b3ba175fd8062191022d37658b96 +Subproject commit 949124e059346f1d027ccc1b6bbcd3308b240225 diff --git a/work/CraftBukkit b/work/CraftBukkit index c69979247b..bf32933484 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit c69979247bdae6884d4edf377d485cf88ddfa0f5 +Subproject commit bf32933484273957cba99eda7689349662936e85 diff --git a/work/Spigot b/work/Spigot index 595711b0a7..935adb34f0 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 595711b0a7edc63bb24a860f717dc7bb8e00805f +Subproject commit 935adb34f09e2f546d6572b9f2ddf983edb79456