diff --git a/Spigot-API-Patches/POM-changes.patch b/Spigot-API-Patches/POM-changes.patch index 752082bff2..3e9145e90c 100644 --- a/Spigot-API-Patches/POM-changes.patch +++ b/Spigot-API-Patches/POM-changes.patch @@ -24,7 +24,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - spigot-api + com.destroystokyo.paper + paper-api - 1.9.4-R0.1-SNAPSHOT + 1.10-R0.1-SNAPSHOT jar - Spigot-API diff --git a/Spigot-Server-Patches/Add-exception-reporting-event.patch b/Spigot-Server-Patches/Add-exception-reporting-event.patch index 3b0d44e85a..54fa0e2edd 100644 --- a/Spigot-Server-Patches/Add-exception-reporting-event.patch +++ b/Spigot-Server-Patches/Add-exception-reporting-event.patch @@ -284,7 +284,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 import java.util.List; import javax.annotation.Nullable; @@ -0,0 +0,0 @@ public class VillageSiege { - entityzombie.clearVillagerType(); + entityzombie.setVillagerType(EnumZombieType.NORMAL); } catch (Exception exception) { exception.printStackTrace(); + ServerInternalException.reportInternalException(exception); // Paper diff --git a/Spigot-Server-Patches/Add-methods-for-working-with-arrows-stuck-in-living-.patch b/Spigot-Server-Patches/Add-methods-for-working-with-arrows-stuck-in-living-.patch index c18654fab7..65329fc05d 100644 --- a/Spigot-Server-Patches/Add-methods-for-working-with-arrows-stuck-in-living-.patch +++ b/Spigot-Server-Patches/Add-methods-for-working-with-arrows-stuck-in-living-.patch @@ -12,13 +12,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return (float) this.getAttributeInstance(GenericAttributes.maxHealth).getValue(); } -+ public final int getStuckArrows() { return this.bY(); } // Paper // OBFHELPER - public final int bY() { ++ public final int getStuckArrows() { return this.cb(); } // Paper - OBFHELPER + public final int cb() { return ((Integer) this.datawatcher.get(EntityLiving.h)).intValue(); } -+ public final void setStuckArrows(int arrows) { this.k(arrows); } // Paper - deobfuscation helper - public final void k(int i) { ++ public final void setStuckArrows(int arrows) { this.f(arrows); } // Paper - OBFHELPER + public final void f(int i) { this.datawatcher.set(EntityLiving.h, Integer.valueOf(i)); } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java diff --git a/Spigot-Server-Patches/All-chunks-are-slime-spawn-chunks-toggle.patch b/Spigot-Server-Patches/All-chunks-are-slime-spawn-chunks-toggle.patch index 2c08cf9768..084f8219bf 100644 --- a/Spigot-Server-Patches/All-chunks-are-slime-spawn-chunks-toggle.patch +++ b/Spigot-Server-Patches/All-chunks-are-slime-spawn-chunks-toggle.patch @@ -23,13 +23,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntitySlime.java +++ b/src/main/java/net/minecraft/server/EntitySlime.java @@ -0,0 +0,0 @@ public class EntitySlime extends EntityInsentient implements IMonster { - return super.cG(); + return super.cK(); } - if (this.random.nextInt(10) == 0 && chunk.a(987234911L).nextInt(10) == 0 && this.locY < 40.0D) { + boolean isSlimeChunk = world.paperConfig.allChunksAreSlimeChunks || chunk.a(987234911L).nextInt(10) == 0; // Paper -+ if (this.random.nextInt(10) == 0 && isSlimeChunk && this.locY < 40.0D) { // Paper - return super.cG(); ++ if (this.random.nextInt(10) == 0 && isSlimeChunk && this.locY < 40.0D) { + return super.cK(); } } -- \ No newline at end of file diff --git a/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch b/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch index 235d2deaa3..3929297bdc 100644 --- a/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch +++ b/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch @@ -23,9 +23,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving { - private boolean bD; + private boolean bE; private Entity leashHolder; - private NBTTagCompound bF; + private NBTTagCompound bG; + public PathfinderGoalFloat goalFloat; // Paper public EntityInsentient(World world) { diff --git a/Spigot-Server-Patches/Arrow-pickup-rule-API.patch b/Spigot-Server-Patches/Arrow-pickup-rule-API.patch index 0c735644d7..12d3bd1249 100644 --- a/Spigot-Server-Patches/Arrow-pickup-rule-API.patch +++ b/Spigot-Server-Patches/Arrow-pickup-rule-API.patch @@ -53,6 +53,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Spigot start private final Arrow.Spigot spigot = new Arrow.Spigot() { --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Avoid-blocking-on-Network-Manager-creation.patch b/Spigot-Server-Patches/Avoid-blocking-on-Network-Manager-creation.patch index 51c7789c1e..2b4fc92bdf 100644 --- a/Spigot-Server-Patches/Avoid-blocking-on-Network-Manager-creation.patch +++ b/Spigot-Server-Patches/Avoid-blocking-on-Network-Manager-creation.patch @@ -44,6 +44,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // 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 ) { --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Avoid-hopper-searches-if-there-are-no-items.patch b/Spigot-Server-Patches/Avoid-hopper-searches-if-there-are-no-items.patch index 8aca1cec6a..1cd3a4444f 100644 --- a/Spigot-Server-Patches/Avoid-hopper-searches-if-there-are-no-items.patch +++ b/Spigot-Server-Patches/Avoid-hopper-searches-if-there-are-no-items.patch @@ -32,8 +32,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private int neighbors = 0x1 << 12; @@ -0,0 +0,0 @@ public class Chunk { - entity.ac = k; - entity.ad = this.locZ; + entity.ad = k; + entity.ae = this.locZ; this.entitySlices[k].add(entity); + // Paper start - update count + if (entity instanceof EntityItem) { diff --git a/Spigot-Server-Patches/Change-implementation-of-tile-entity-removal-list.patch b/Spigot-Server-Patches/Change-implementation-of-tile-entity-removal-list.patch index ba7bb1710c..714c3ef8d4 100644 --- a/Spigot-Server-Patches/Change-implementation-of-tile-entity-removal-list.patch +++ b/Spigot-Server-Patches/Change-implementation-of-tile-entity-removal-list.patch @@ -11,14 +11,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { private static final DataWatcherObject aB = DataWatcher.a(Entity.class, DataWatcherRegistry.h); private static final DataWatcherObject aC = DataWatcher.a(Entity.class, DataWatcherRegistry.h); - public boolean aa; -- public int ab; + private static final DataWatcherObject aD = DataWatcher.a(Entity.class, DataWatcherRegistry.h); +- public boolean ab; - public int ac; - public int ad; -+ public int ab;public int getChunkX() { return ab; } // Paper -+ public int ac;public int getChunkY() { return ac; } // Paper -+ public int ad;public int getChunkZ() { return ad; } // Paper - public boolean ah; +- public int ae; ++ public boolean ab; public boolean isAddedToChunk() { return ab; } // Paper - OBFHELPER ++ public int ac; public int getChunkX() { return ac; } // Paper - OBFHELPER ++ public int ad; public int getChunkY() { return ad; } // Paper - OBFHELPER ++ public int ae; public int getChunkZ() { return ae; } // Paper - OBFHELPER + public boolean ai; public boolean impulse; public int portalCooldown; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java @@ -52,22 +54,23 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public final List j = Lists.newArrayList(); protected final IntHashMap entitiesById = new IntHashMap(); @@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { + this.entityList.removeAll(this.f); int j; ++ // Paper start - Set based removal lists ++ for (Entity e : this.f) { ++ j = e.getChunkZ(); ++ int k = e.getChunkX(); - for (i = 0; i < this.f.size(); ++i) { - entity = (Entity) this.f.get(i); -- int k = entity.ab; -+ // Paper start - Set based removal lists -+ for (Entity e : this.f) { -+ j = e.getChunkX(); -+ int k = e.getChunkZ(); - -- j = entity.ad; -- if (entity.aa && this.isChunkLoaded(k, j, true)) { +- int k = entity.ac; +- +- j = entity.ae; +- if (entity.ab && this.isChunkLoaded(k, j, true)) { - this.getChunkAt(k, j).b(entity); -+ if (e.aa && this.isChunkLoaded(j, k, true)) { -+ this.getChunkAt(j, k).b(e); ++ if (e.isAddedToChunk() && this.isChunkLoaded(k, j, true)) { ++ this.getChunkAt(k, j).b(e); } } diff --git a/Spigot-Server-Patches/Check-entity-count-additions-and-mark-entities-remov.patch b/Spigot-Server-Patches/Check-entity-count-additions-and-mark-entities-remov.patch deleted file mode 100644 index 5336f32ad4..0000000000 --- a/Spigot-Server-Patches/Check-entity-count-additions-and-mark-entities-remov.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Zach Brown <1254957+zachbr@users.noreply.github.com> -Date: Fri, 22 Apr 2016 20:34:21 -0500 -Subject: [PATCH] Check entity count additions and mark entities removed - - -diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 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 { - k = this.entitySlices.length - 1; - } - -+ // Paper start - Try to catch plugins doing indecent things -+ boolean ignoreAdd = false; -+ if (entity.aa && entity.getChunkX() == this.locX && entity.getChunkY() == k && entity.getChunkZ() == this.locZ) { -+ String chunkName = entity.getWorld().getWorld().getName() + ":" + entity.getChunkX() + "," + entity.getChunkY() + "," + entity.getChunkZ(); -+ if (this.entitySlices[k].contains(entity)) { -+ new Throwable("Double Chunk Add to: " + chunkName).printStackTrace(); -+ ignoreAdd = true; -+ } else { -+ boolean found = false; -+ for (int i1 = 0; i1 < this.entitySlices.length; i1++) { -+ if (this.entitySlices[i1].contains(entity)) { -+ new Throwable("Entity was found in another slice of this chunk, tried: " + k + ", was in: " + chunkName).printStackTrace(); -+ found = true; -+ ignoreAdd = true; -+ } -+ } -+ if (!found) { -+ new Throwable("Improperly detected double chunk add. Was not actually in this chunk.").printStackTrace(); -+ } -+ } -+ } -+ // Paper end -+ - entity.aa = true; - entity.ab = this.locX; - entity.ac = k; - entity.ad = this.locZ; - this.entitySlices[k].add(entity); - // Paper start - update count -+ if (ignoreAdd) return; - if (entity instanceof EntityItem) { - itemCounts[k]++; - } else if (entity instanceof IInventory) { -@@ -0,0 +0,0 @@ public class Chunk { - } else if (entity instanceof IInventory) { - inventoryEntityCounts[i]--; - } -+ entity.aa = false; // You aren't added to chunk anymore - // Paper end - // Spigot start - decrement creature type count - // Keep this synced up with World.a(Class) -diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/World.java -+++ b/src/main/java/net/minecraft/server/World.java -@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { - } - - int k = MathHelper.floor(entity.locX / 16.0D); -- int l = MathHelper.floor(entity.locY / 16.0D); -+ int l = Math.min(15, Math.max(0, MathHelper.floor(entity.locY / 16.0D))); // Paper - stay consistent with chunk add/remove behavior - int i1 = MathHelper.floor(entity.locZ / 16.0D); - - if (!entity.aa || entity.ab != k || entity.ac != l || entity.ad != i1) { --- -2.7.4 (Apple Git-66) - diff --git a/Spigot-Server-Patches/Check-online-mode-before-converting-and-renaming-pla.patch b/Spigot-Server-Patches/Check-online-mode-before-converting-and-renaming-pla.patch index 03704ce38b..137d196c70 100644 --- a/Spigot-Server-Patches/Check-online-mode-before-converting-and-renaming-pla.patch +++ b/Spigot-Server-Patches/Check-online-mode-before-converting-and-renaming-pla.patch @@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/WorldNBTStorage.java +++ b/src/main/java/net/minecraft/server/WorldNBTStorage.java @@ -0,0 +0,0 @@ public class WorldNBTStorage implements IDataManager, IPlayerFileData { - File file = new File(this.playerDir, entityhuman.bd() + ".dat"); + File file = new File(this.playerDir, entityhuman.bf() + ".dat"); // Spigot Start boolean usingWrongFile = false; - if ( !file.exists() ) diff --git a/Spigot-Server-Patches/Chunk-save-queue-improvements.patch b/Spigot-Server-Patches/Chunk-save-queue-improvements.patch index bdf2c62ca3..34c4b9da21 100644 --- a/Spigot-Server-Patches/Chunk-save-queue-improvements.patch +++ b/Spigot-Server-Patches/Chunk-save-queue-improvements.patch @@ -57,12 +57,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + private ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue<>(); // Paper - Chunk queue improvements + private final Object lock = new Object(); // Paper - Chunk queue improvements private static final Logger a = LogManager.getLogger(); - private Map b = new ConcurrentHashMap(); -- private Set c = Collections.newSetFromMap(new ConcurrentHashMap()); -+ //private Set c = Collections.newSetFromMap(new ConcurrentHashMap()); // Paper - Chunk queue improvements + private final Map b = new ConcurrentHashMap(); +- private final Set c = Collections.newSetFromMap(new ConcurrentHashMap()); ++ //private final Set c = Collections.newSetFromMap(new ConcurrentHashMap()); // Paper - Chunk queue improvements private final File d; private final DataConverterManager e; - private boolean f = false; + private boolean f; @@ -0,0 +0,0 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver { public boolean chunkExists(World world, int i, int j) { ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(i, j); diff --git a/Spigot-Server-Patches/Complete-resource-pack-API.patch b/Spigot-Server-Patches/Complete-resource-pack-API.patch index c418a387e9..a7ff49ad51 100644 --- a/Spigot-Server-Patches/Complete-resource-pack-API.patch +++ b/Spigot-Server-Patches/Complete-resource-pack-API.patch @@ -4,19 +4,6 @@ Date: Sat, 4 Apr 2015 23:17:52 -0400 Subject: [PATCH] Complete resource pack API -diff --git a/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java b/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java -+++ b/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java -@@ -0,0 +0,0 @@ import java.io.IOException; - - public class PacketPlayInResourcePackStatus implements Packet { - -- private String a; -+ public String a; // Paper - make public - public PacketPlayInResourcePackStatus.EnumResourcePackStatus status; - - public PacketPlayInResourcePackStatus() {} diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java @@ -30,8 +17,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper start + PlayerConnectionUtils.ensureMainThread(packetplayinresourcepackstatus, this, this.player.x()); + final PlayerResourcePackStatusEvent.Status status = PlayerResourcePackStatusEvent.Status.values()[packetplayinresourcepackstatus.status.ordinal()]; -+ this.getPlayer().setResourcePackStatus(status, packetplayinresourcepackstatus.a); -+ this.server.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(getPlayer(), status, packetplayinresourcepackstatus.a)); ++ this.getPlayer().setResourcePackStatus(status); ++ this.server.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(getPlayer(), status)); + // paper end } // CraftBukkit end @@ -77,9 +64,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + return this.resourcePackStatus == org.bukkit.event.player.PlayerResourcePackStatusEvent.Status.SUCCESSFULLY_LOADED; + } + -+ public void setResourcePackStatus(org.bukkit.event.player.PlayerResourcePackStatusEvent.Status status, String hash) { ++ public void setResourcePackStatus(org.bukkit.event.player.PlayerResourcePackStatusEvent.Status status) { + this.resourcePackStatus = status; -+ this.resourcePackHash = hash; + } + // Spigot start diff --git a/Spigot-Server-Patches/Configurable-Keep-Spawn-Loaded-range-per-world.patch b/Spigot-Server-Patches/Configurable-Keep-Spawn-Loaded-range-per-world.patch index 83c5a99d71..536bdd2a63 100644 --- a/Spigot-Server-Patches/Configurable-Keep-Spawn-Loaded-range-per-world.patch +++ b/Spigot-Server-Patches/Configurable-Keep-Spawn-Loaded-range-per-world.patch @@ -41,14 +41,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { - BlockPosition blockposition = this.getSpawn(); int k = i * 16 + 8 - blockposition.getX(); int l = j * 16 + 8 - blockposition.getZ(); -- short short0 = 128; -+ short short0 = paperConfig.keepLoadedRange; // Paper + boolean flag = true; ++ short keepLoadedRange = paperConfig.keepLoadedRange; // Paper - return k >= -short0 && k <= short0 && l >= -short0 && l <= short0 && this.keepSpawnInMemory; // CraftBukkit - Added 'this.keepSpawnInMemory' +- return k >= -128 && k <= 128 && l >= -128 && l <= 128 && this.keepSpawnInMemory; // CraftBukkit - Added 'this.keepSpawnInMemory' ++ return k >= -keepLoadedRange && k <= keepLoadedRange && l >= -keepLoadedRange && l <= keepLoadedRange && this.keepSpawnInMemory; // CraftBukkit - Added 'this.keepSpawnInMemory' // Paper - Re-add range var } + + public void a(Packet packet) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java diff --git a/Spigot-Server-Patches/Configurable-Non-Player-Arrow-Despawn-Rate.patch b/Spigot-Server-Patches/Configurable-Non-Player-Arrow-Despawn-Rate.patch index 2daccac0d5..9e500e6a6f 100644 --- a/Spigot-Server-Patches/Configurable-Non-Player-Arrow-Despawn-Rate.patch +++ b/Spigot-Server-Patches/Configurable-Non-Player-Arrow-Despawn-Rate.patch @@ -29,10 +29,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/net/minecraft/server/EntityArrow.java @@ -0,0 +0,0 @@ public abstract class EntityArrow extends Entity implements IProjectile { - if (block == this.av && i == this.aw) { - ++this.ax; -- if (this.ax >= world.spigotConfig.arrowDespawnRate) { // Spigot - First int after shooter -+ if (this.ax >= (fromPlayer != PickupStatus.DISALLOWED ? world.spigotConfig.arrowDespawnRate : world.paperConfig.nonPlayerArrowDespawnRate)) { // Spigot - First int after shooter // Paper + if (block == this.aw && i == this.ax) { + ++this.ay; +- if (this.ay >= world.spigotConfig.arrowDespawnRate) { // Spigot - First int after shooter ++ if (this.ay >= (fromPlayer != PickupStatus.DISALLOWED ? world.spigotConfig.arrowDespawnRate : world.paperConfig.nonPlayerArrowDespawnRate)) { // Spigot - First int after shooter // Paper this.die(); } } else { diff --git a/Spigot-Server-Patches/Configurable-RCON-IP-address.patch b/Spigot-Server-Patches/Configurable-RCON-IP-address.patch index 804af14a78..2196c5697d 100644 --- a/Spigot-Server-Patches/Configurable-RCON-IP-address.patch +++ b/Spigot-Server-Patches/Configurable-RCON-IP-address.patch @@ -18,6 +18,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.i = iminecraftserver.e_(); if (0 == this.h) { this.h = this.i + 10; --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-baby-zombie-movement-speed.patch b/Spigot-Server-Patches/Configurable-baby-zombie-movement-speed.patch index 1e0c894aec..452d50a782 100644 --- a/Spigot-Server-Patches/Configurable-baby-zombie-movement-speed.patch +++ b/Spigot-Server-Patches/Configurable-baby-zombie-movement-speed.patch @@ -29,9 +29,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static final UUID b = UUID.fromString("B9766B59-9566-4402-BC1F-2EE2A276D836"); - private static final AttributeModifier c = new AttributeModifier(EntityZombie.b, "Baby speed boost", 0.5D, 1); + private final AttributeModifier c = new AttributeModifier(EntityZombie.b, "Baby speed boost", world.paperConfig.babyZombieMovementSpeed, 1); // Paper - Remove static - Make baby speed configurable - private static final DataWatcherObject bw = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.h); - private static final DataWatcherObject bx = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.b); - private static final DataWatcherObject by = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.h); + private static final DataWatcherObject bx = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.h); + private static final DataWatcherObject by = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.b); + private static final DataWatcherObject bz = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.h); @@ -0,0 +0,0 @@ public class EntityZombie extends EntityMonster { if (this.world != null && !this.world.isClientSide) { AttributeInstance attributeinstance = this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED); diff --git a/Spigot-Server-Patches/Configurable-end-credits.patch b/Spigot-Server-Patches/Configurable-end-credits.patch index 1df2bedf4c..4f7d00e90a 100644 --- a/Spigot-Server-Patches/Configurable-end-credits.patch +++ b/Spigot-Server-Patches/Configurable-end-credits.patch @@ -38,7 +38,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + @Nullable public Entity c(int i) { - //this.ck = true; // CraftBukkit - Moved down and into PlayerList#changeDimension + // this.worldChangeInvuln = true; // CraftBukkit - Moved down and into PlayerList#changeDimension @@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting { this.world.kill(this); if (!this.viewingCredits) { diff --git a/Spigot-Server-Patches/Configurable-fishing-time-ranges.patch b/Spigot-Server-Patches/Configurable-fishing-time-ranges.patch index f2ef144fed..624a2e7837 100644 --- a/Spigot-Server-Patches/Configurable-fishing-time-ranges.patch +++ b/Spigot-Server-Patches/Configurable-fishing-time-ranges.patch @@ -26,12 +26,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntityFishingHook.java +++ b/src/main/java/net/minecraft/server/EntityFishingHook.java @@ -0,0 +0,0 @@ public class EntityFishingHook extends Entity { - this.ax = MathHelper.nextInt(this.random, 20, 80); + this.aw = MathHelper.nextInt(this.random, 20, 80); } } else { -- this.aw = MathHelper.nextInt(this.random, 100, 900); -+ this.aw = MathHelper.nextInt(this.random, world.paperConfig.fishingMinTicks, world.paperConfig.fishingMaxTicks); // Paper - Configurable fishing time range - this.aw -= EnchantmentManager.g(this.owner) * 20 * 5; +- this.av = MathHelper.nextInt(this.random, 100, 900); ++ this.av = MathHelper.nextInt(this.random, world.paperConfig.fishingMinTicks, world.paperConfig.fishingMaxTicks); // Paper - Configurable fishing time range + this.av -= EnchantmentManager.g(this.owner) * 20 * 5; } } -- \ No newline at end of file diff --git a/Spigot-Server-Patches/Configurable-squid-spawn-ranges.patch b/Spigot-Server-Patches/Configurable-squid-spawn-ranges.patch index 129f1c1cd9..b987dd9237 100644 --- a/Spigot-Server-Patches/Configurable-squid-spawn-ranges.patch +++ b/Spigot-Server-Patches/Configurable-squid-spawn-ranges.patch @@ -28,10 +28,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class EntitySquid extends EntityWaterAnimal { } - public boolean cG() { -- return this.locY > 45.0D && this.locY < (double) this.world.K() && super.cG(); + public boolean cK() { +- return this.locY > 45.0D && this.locY < (double) this.world.K() && super.cK(); + // Paper - Configurable squid spawn height range -+ return this.locY > world.paperConfig.squidMinSpawnHeight && this.locY < world.paperConfig.squidMaxSpawnHeight && super.cG(); ++ return this.locY > world.paperConfig.squidMinSpawnHeight && this.locY < world.paperConfig.squidMaxSpawnHeight && super.cK(); } public void b(float f, float f1, float f2) { diff --git a/Spigot-Server-Patches/Configurable-top-of-nether-void-damage.patch b/Spigot-Server-Patches/Configurable-top-of-nether-void-damage.patch index 7f29f18bf4..1b65f99bb9 100644 --- a/Spigot-Server-Patches/Configurable-top-of-nether-void-damage.patch +++ b/Spigot-Server-Patches/Configurable-top-of-nether-void-damage.patch @@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public void U() { this.world.methodProfiler.a("entityBaseTick"); - if (this.isPassenger() && this.bz().dead) { + if (this.isPassenger() && this.bB().dead) { @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { this.fallDistance *= 0.5F; } diff --git a/Spigot-Server-Patches/Custom-replacement-for-eaten-items.patch b/Spigot-Server-Patches/Custom-replacement-for-eaten-items.patch index 616485d741..5045256f34 100644 --- a/Spigot-Server-Patches/Custom-replacement-for-eaten-items.patch +++ b/Spigot-Server-Patches/Custom-replacement-for-eaten-items.patch @@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { - ItemStack itemstack = (craftItem.equals(event.getItem())) ? this.bn.a(this.world, this) : CraftItemStack.asNMSCopy(event.getItem()).a(world, this); + ItemStack itemstack = (craftItem.equals(event.getItem())) ? this.bo.a(this.world, this) : CraftItemStack.asNMSCopy(event.getItem()).a(world, this); // CraftBukkit end + // Paper start - save the default replacement item and change it if necessary @@ -23,14 +23,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 itemstack = null; } - this.a(this.cu(), itemstack); - this.cA(); + this.a(this.cy(), itemstack); + this.cE(); + + // Paper start - if the replacement is anything but the default, update the client inventory + if (this instanceof EntityPlayer && !com.google.common.base.Objects.equal(defaultReplacement, itemstack)) { + ((EntityPlayer) this).getBukkitEntity().updateInventory(); + } -+ // Paper end } } diff --git a/Spigot-Server-Patches/Disable-Scoreboards-for-non-players-by-default.patch b/Spigot-Server-Patches/Disable-Scoreboards-for-non-players-by-default.patch index 36c202609a..1cbf90c95f 100644 --- a/Spigot-Server-Patches/Disable-Scoreboards-for-non-players-by-default.patch +++ b/Spigot-Server-Patches/Disable-Scoreboards-for-non-players-by-default.patch @@ -33,7 +33,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 while (iterator.hasNext()) { Entity entity = (Entity) iterator.next(); + if (!entity.world.paperConfig.nonPlayerEntitiesOnScoreboards && !(entity instanceof EntityHuman)) { continue; } // Paper - String s2 = e(minecraftserver, icommandlistener, entity.bd()); + String s2 = e(minecraftserver, icommandlistener, entity.bf()); if (scoreboard.addPlayerToTeam(s2, s)) { diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java @@ -43,9 +43,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { @Nullable - public ScoreboardTeamBase aO() { + public ScoreboardTeamBase aQ() { + if (!this.world.paperConfig.nonPlayerEntitiesOnScoreboards && !(this instanceof EntityHuman)) { return null; } // Paper - return this.world.getScoreboard().getPlayerTeam(this.bd()); + return this.world.getScoreboard().getPlayerTeam(this.bf()); } -- \ No newline at end of file diff --git a/Spigot-Server-Patches/Disable-explosion-knockback.patch b/Spigot-Server-Patches/Disable-explosion-knockback.patch index 5657f8b49f..1ffeecf13a 100644 --- a/Spigot-Server-Patches/Disable-explosion-knockback.patch +++ b/Spigot-Server-Patches/Disable-explosion-knockback.patch @@ -44,7 +44,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + if (knockbackCancelled) this.world.broadcastEntityEffect(this, (byte) 2); // Paper - Disable explosion knockback + if (this.getHealth() <= 0.0F) { - SoundEffect soundeffect = this.bT(); + SoundEffect soundeffect = this.bW(); diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 @@ -63,8 +63,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (entity instanceof EntityHuman) { EntityHuman entityhuman = (EntityHuman) entity; -- if (!entityhuman.isSpectator() && (!entityhuman.l_() || !entityhuman.abilities.isFlying)) { -+ if (!entityhuman.isSpectator() && (!entityhuman.l_() && !world.paperConfig.disableExplosionKnockback|| !entityhuman.abilities.isFlying)) { // Paper - Disable explosion knockback +- if (!entityhuman.isSpectator() && (!entityhuman.z() || !entityhuman.abilities.isFlying)) { ++ if (!entityhuman.isSpectator() && (!entityhuman.z() && !world.paperConfig.disableExplosionKnockback || !entityhuman.abilities.isFlying)) { // Paper - Disable explosion knockback this.k.put(entityhuman, new Vec3D(d8 * d13, d9 * d13, d10 * d13)); } } diff --git a/Spigot-Server-Patches/Do-not-load-chunks-for-pathfinding.patch b/Spigot-Server-Patches/Do-not-load-chunks-for-pathfinding.patch index 6f14ad2842..b94da4c9b5 100644 --- a/Spigot-Server-Patches/Do-not-load-chunks-for-pathfinding.patch +++ b/Spigot-Server-Patches/Do-not-load-chunks-for-pathfinding.patch @@ -17,6 +17,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Do-not-mark-chunks-as-active-for-neighbor-updates.patch b/Spigot-Server-Patches/Do-not-mark-chunks-as-active-for-neighbor-updates.patch index 0de0468e7c..ef72d0c476 100644 --- a/Spigot-Server-Patches/Do-not-mark-chunks-as-active-for-neighbor-updates.patch +++ b/Spigot-Server-Patches/Do-not-mark-chunks-as-active-for-neighbor-updates.patch @@ -108,6 +108,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (neighbor != null) { neighbor.setNeighborLoaded(-x, -z); chunk.setNeighborLoaded(x, z); --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch b/Spigot-Server-Patches/Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch index 803d7b5b67..2bbd65e3f0 100644 --- a/Spigot-Server-Patches/Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch +++ b/Spigot-Server-Patches/Don-t-save-empty-scoreboard-teams-to-scoreboard.dat.patch @@ -30,6 +30,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 NBTTagCompound nbttagcompound = new NBTTagCompound(); nbttagcompound.setString("Name", scoreboardteam.getName()); --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Don-t-spam-reload-spawn-chunks-in-nether-end.patch b/Spigot-Server-Patches/Don-t-spam-reload-spawn-chunks-in-nether-end.patch index a04bbe9add..7a47f6e45d 100644 --- a/Spigot-Server-Patches/Don-t-spam-reload-spawn-chunks-in-nether-end.patch +++ b/Spigot-Server-Patches/Don-t-spam-reload-spawn-chunks-in-nether-end.patch @@ -12,8 +12,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return this.N; } -+ public boolean shouldStayLoaded(int i, int j) { return c(i, j); } // Paper - OBFHELPER - public boolean c(int i, int j) { ++ public boolean shouldStayLoaded(int i, int j) { return d(i, j); } // Paper - OBFHELPER + public boolean d(int i, int j) { BlockPosition blockposition = this.getSpawn(); int k = i * 16 + 8 - blockposition.getX(); diff --git a/src/main/java/net/minecraft/server/WorldProvider.java b/src/main/java/net/minecraft/server/WorldProvider.java diff --git a/Spigot-Server-Patches/Don-t-tick-Skulls-unused-code.patch b/Spigot-Server-Patches/Don-t-tick-Skulls-unused-code.patch index 8177cdfb0c..8468e1db59 100644 --- a/Spigot-Server-Patches/Don-t-tick-Skulls-unused-code.patch +++ b/Spigot-Server-Patches/Don-t-tick-Skulls-unused-code.patch @@ -16,5 +16,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +public class TileEntitySkull extends TileEntity /*implements ITickable*/ { // Paper - remove tickable private int a; - private int rotation; + public int rotation; -- \ No newline at end of file diff --git a/Spigot-Server-Patches/Drop-falling-block-and-tnt-entities-at-the-specified.patch b/Spigot-Server-Patches/Drop-falling-block-and-tnt-entities-at-the-specified.patch index 55bbf84323..9aca16b505 100644 --- a/Spigot-Server-Patches/Drop-falling-block-and-tnt-entities-at-the-specified.patch +++ b/Spigot-Server-Patches/Drop-falling-block-and-tnt-entities-at-the-specified.patch @@ -28,8 +28,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntityFallingBlock.java +++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java @@ -0,0 +0,0 @@ public class EntityFallingBlock extends Entity { + } - this.motY -= 0.03999999910593033D; this.move(this.motX, this.motY, this.motZ); + + // Paper start - Configurable EntityFallingBlock height nerf @@ -50,8 +50,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntityTNTPrimed.java +++ b/src/main/java/net/minecraft/server/EntityTNTPrimed.java @@ -0,0 +0,0 @@ public class EntityTNTPrimed extends Entity { - this.lastZ = this.locZ; - this.motY -= 0.03999999910593033D; + } + this.move(this.motX, this.motY, this.motZ); + + // Paper start - Configurable TNT entity height nerf diff --git a/Spigot-Server-Patches/Ensure-Chunks-never-ever-load-async.patch b/Spigot-Server-Patches/Ensure-Chunks-never-ever-load-async.patch index 28594df6f0..279bdbcd03 100644 --- a/Spigot-Server-Patches/Ensure-Chunks-never-ever-load-async.patch +++ b/Spigot-Server-Patches/Ensure-Chunks-never-ever-load-async.patch @@ -41,6 +41,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 queuedChunk.provider.originalGetChunkAt(queuedChunk.x, queuedChunk.z); return; } --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Entity-Origin-API.patch b/Spigot-Server-Patches/Entity-Origin-API.patch index ac0431ddfb..22980b6fa6 100644 --- a/Spigot-Server-Patches/Entity-Origin-API.patch +++ b/Spigot-Server-Patches/Entity-Origin-API.patch @@ -44,9 +44,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Entity being loaded"); @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { - public void at() {} + protected abstract void b(NBTTagCompound nbttagcompound); -+ protected NBTTagList createList(double... adouble) { return a(adouble); } // Paper // OBFHELPER ++ protected NBTTagList createList(double... adouble) { return a(adouble); } // Paper - OBFHELPER protected NBTTagList a(double... adouble) { NBTTagList nbttaglist = new NBTTagList(); double[] adouble1 = adouble; diff --git a/Spigot-Server-Patches/Entity-Tracking-Improvements.patch b/Spigot-Server-Patches/Entity-Tracking-Improvements.patch index 20fde246e2..7b9b861384 100644 --- a/Spigot-Server-Patches/Entity-Tracking-Improvements.patch +++ b/Spigot-Server-Patches/Entity-Tracking-Improvements.patch @@ -98,6 +98,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/EntityPathfindEvent.patch b/Spigot-Server-Patches/EntityPathfindEvent.patch index 975f8b0bc1..3fefc3cc6a 100644 --- a/Spigot-Server-Patches/EntityPathfindEvent.patch +++ b/Spigot-Server-Patches/EntityPathfindEvent.patch @@ -10,28 +10,28 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/NavigationAbstract.java +++ b/src/main/java/net/minecraft/server/NavigationAbstract.java @@ -0,0 +0,0 @@ import javax.annotation.Nullable; + public abstract class NavigationAbstract { - private static int f = 20; - protected EntityInsentient a; -+ protected EntityInsentient a;public Entity getEntity() { return a; } // Paper ++ protected EntityInsentient a; public Entity getEntity() { return a; } // Paper - OBFHELPER protected World b; @Nullable protected PathEntity c; @@ -0,0 +0,0 @@ public abstract class NavigationAbstract { - } else if (this.c != null && !this.c.b() && blockposition.equals(this.r)) { + } else if (this.c != null && !this.c.b() && blockposition.equals(this.q)) { return this.c; } else { + if (!new com.destroystokyo.paper.event.entity.EntityPathfindEvent(getEntity().getBukkitEntity(), MCUtil.toLocation(getEntity().world, blockposition), null).callEvent()) { return null; } // Paper - this.r = blockposition; + this.q = blockposition; float f = this.h(); @@ -0,0 +0,0 @@ public abstract class NavigationAbstract { - if (this.c != null && !this.c.b() && blockposition.equals(this.r)) { + if (this.c != null && !this.c.b() && blockposition.equals(this.q)) { return this.c; } else { + if (!new com.destroystokyo.paper.event.entity.EntityPathfindEvent(getEntity().getBukkitEntity(), MCUtil.toLocation(entity.world, blockposition), entity.getBukkitEntity()).callEvent()) { return null; } // Paper - this.r = blockposition; + this.q = blockposition; float f = this.h(); -- \ No newline at end of file diff --git a/Spigot-Server-Patches/EntityRegainHealthEvent-isFastRegen-API.patch b/Spigot-Server-Patches/EntityRegainHealthEvent-isFastRegen-API.patch index 7144c6d431..55a2280656 100644 --- a/Spigot-Server-Patches/EntityRegainHealthEvent-isFastRegen-API.patch +++ b/Spigot-Server-Patches/EntityRegainHealthEvent-isFastRegen-API.patch @@ -40,6 +40,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.a(f); this.foodTickTimer = 0; } --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Faster-redstone-torch-rapid-clock-removal.patch b/Spigot-Server-Patches/Faster-redstone-torch-rapid-clock-removal.patch index 8b43931e84..89a9ca1a40 100644 --- a/Spigot-Server-Patches/Faster-redstone-torch-rapid-clock-removal.patch +++ b/Spigot-Server-Patches/Faster-redstone-torch-rapid-clock-removal.patch @@ -38,6 +38,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public RedstoneUpdateInfo(BlockPosition blockposition, long i) { this.a = blockposition; --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Fix-Potion-Equals-Bug.patch b/Spigot-Server-Patches/Fix-Potion-Equals-Bug.patch deleted file mode 100644 index 336822b155..0000000000 --- a/Spigot-Server-Patches/Fix-Potion-Equals-Bug.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: chickeneer -Date: Wed, 8 Jun 2016 20:39:19 -0400 -Subject: [PATCH] Fix Potion Equals Bug - -Will be in Spigot 1.10, but getting it in for 1.9 users - -diff --git a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -+++ b/src/main/java/org/bukkit/craftbukkit/potion/CraftPotionUtil.java -@@ -0,0 +0,0 @@ public class CraftPotionUtil { - .build(); - - public static String fromBukkit(PotionData data) { -+ String type; - if (data.isUpgraded()) { -- return upgradeable.get(data.getType()); -+ type = upgradeable.get(data.getType()); -+ } else if (data.isExtended()) { -+ type = extendable.get(data.getType()); -+ } else { -+ type = regular.get(data.getType()); - } -- if (data.isExtended()) { -- return extendable.get(data.getType()); -- } -- return regular.get(data.getType()); -+ return "minecraft:" + type; - } - - public static PotionData toBukkit(String type) { --- \ No newline at end of file diff --git a/Spigot-Server-Patches/Generator-Settings.patch b/Spigot-Server-Patches/Generator-Settings.patch index 9b79b53bb0..7eec5f552c 100644 --- a/Spigot-Server-Patches/Generator-Settings.patch +++ b/Spigot-Server-Patches/Generator-Settings.patch @@ -55,14 +55,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/BiomeMesa.java +++ b/src/main/java/net/minecraft/server/BiomeMesa.java @@ -0,0 +0,0 @@ public class BiomeMesa extends BiomeBase { - chunksnapshot.a(l, l1, k, BiomeMesa.a); + chunksnapshot.a(l, i2, k, BiomeMesa.a); } -- if (l1 <= random.nextInt(5)) { -+ if (l1 <= (world.paperConfig.generateFlatBedrock ? 0 : random.nextInt(5))) { // Paper - Configurable flat bedrock - chunksnapshot.a(l, l1, k, BiomeMesa.c); - } else { - IBlockData iblockdata2 = chunksnapshot.a(l, l1, k); +- if (i2 <= random.nextInt(5)) { ++ if (i2 <= (world.paperConfig.generateFlatBedrock ? 0 : random.nextInt(5))) { // Paper - Configurable flat bedrock + chunksnapshot.a(l, i2, k, BiomeMesa.c); + } else if (l1 < 15) { + IBlockData iblockdata2 = chunksnapshot.a(l, i2, k); diff --git a/src/main/java/net/minecraft/server/ChunkProviderFlat.java b/src/main/java/net/minecraft/server/ChunkProviderFlat.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderFlat.java @@ -240,8 +240,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void recreateStructures(Chunk chunk, int i, int j) { -- this.H.a(this.n, i, j, (ChunkSnapshot) null); -+ if (this.n.paperConfig.generateFortress) this.H.a(this.n, i, j, (ChunkSnapshot) null); // Paper +- this.I.a(this.n, i, j, (ChunkSnapshot) null); ++ if (this.n.paperConfig.generateFortress) this.I.a(this.n, i, j, (ChunkSnapshot) null); } } diff --git a/src/main/java/net/minecraft/server/StructureGenerator.java b/src/main/java/net/minecraft/server/StructureGenerator.java diff --git a/Spigot-Server-Patches/Implement-PlayerLocaleChangeEvent.patch b/Spigot-Server-Patches/Implement-PlayerLocaleChangeEvent.patch index 98e6f23502..d0d2c779c6 100644 --- a/Spigot-Server-Patches/Implement-PlayerLocaleChangeEvent.patch +++ b/Spigot-Server-Patches/Implement-PlayerLocaleChangeEvent.patch @@ -11,7 +11,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ import org.bukkit.inventory.MainHand; public class EntityPlayer extends EntityHuman implements ICrafting { - private static final Logger bR = LogManager.getLogger(); + private static final Logger bS = LogManager.getLogger(); - public String locale = "en_US"; // Spigot private -> public + public String locale = null; // Spigot private -> public // Paper - default to null public PlayerConnection playerConnection; @@ -30,9 +30,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + new com.destroystokyo.paper.event.player.PlayerLocaleChangeEvent(this.getBukkitEntity(), oldLocale, this.locale).callEvent(); + } + // Paper end - this.cg = packetplayinsettings.c(); - this.ch = packetplayinsettings.d(); - this.getDataWatcher().set(EntityPlayer.bq, Byte.valueOf((byte) packetplayinsettings.e())); + this.ch = packetplayinsettings.c(); + this.ci = packetplayinsettings.d(); + this.getDataWatcher().set(EntityPlayer.br, Byte.valueOf((byte) packetplayinsettings.e())); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java diff --git a/Spigot-Server-Patches/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch b/Spigot-Server-Patches/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch index f8bc2a10d6..51a96ea9f4 100644 --- a/Spigot-Server-Patches/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch +++ b/Spigot-Server-Patches/Improve-Maps-in-item-frames-performance-and-bug-fixe.patch @@ -65,7 +65,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/net/minecraft/server/WorldMap.java @@ -0,0 +0,0 @@ public class WorldMap extends PersistentBase { public List h = Lists.newArrayList(); - public Map j = Maps.newHashMap(); // Spigot + public final Map j = Maps.newHashMap(); // Spigot public Map decorations = Maps.newLinkedHashMap(); // Spigot + private org.bukkit.craftbukkit.map.RenderData vanillaRender = new org.bukkit.craftbukkit.map.RenderData(); // Paper @@ -116,7 +116,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper stop public final EntityHuman trackee; private boolean d = true; - private int e = 0; + private int e; @@ -0,0 +0,0 @@ public class WorldMap extends PersistentBase { public Packet a(ItemStack itemstack) { @@ -144,6 +144,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public final ArrayList cursors; public RenderData() { --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/LootTable-API-Replenishable-Lootables-Feature.patch b/Spigot-Server-Patches/LootTable-API-Replenishable-Lootables-Feature.patch index 4eac5a5931..c4de9a401c 100644 --- a/Spigot-Server-Patches/LootTable-API-Replenishable-Lootables-Feature.patch +++ b/Spigot-Server-Patches/LootTable-API-Replenishable-Lootables-Feature.patch @@ -562,7 +562,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public TileEntityLootable() {} - protected boolean d(NBTTagCompound nbttagcompound) { + protected boolean c(NBTTagCompound nbttagcompound) { + lootableData.loadNbt(nbttagcompound); // Paper if (nbttagcompound.hasKeyOfType("LootTable", 8)) { this.m = new MinecraftKey(nbttagcompound.getString("LootTable")); @@ -574,7 +574,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } - protected boolean e(NBTTagCompound nbttagcompound) { + protected boolean d(NBTTagCompound nbttagcompound) { + lootableData.saveNbt(nbttagcompound); // Paper if (this.m != null) { nbttagcompound.setString("LootTable", this.m.toString()); diff --git a/Spigot-Server-Patches/MC-99914-ensure-EntityItem-loads-before-EntityPotion.patch b/Spigot-Server-Patches/MC-99914-ensure-EntityItem-loads-before-EntityPotion.patch index a6aea30462..03e275e415 100644 --- a/Spigot-Server-Patches/MC-99914-ensure-EntityItem-loads-before-EntityPotion.patch +++ b/Spigot-Server-Patches/MC-99914-ensure-EntityItem-loads-before-EntityPotion.patch @@ -28,6 +28,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Try to see if we're actually running in a terminal, disable jline if not if (System.console() == null && System.getProperty("jline.terminal") == null) { System.setProperty("jline.terminal", "jline.UnsupportedTerminal"); --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/MC-Utils.patch b/Spigot-Server-Patches/MC-Utils.patch index 298a66280f..8e1c188a0a 100644 --- a/Spigot-Server-Patches/MC-Utils.patch +++ b/Spigot-Server-Patches/MC-Utils.patch @@ -3,7 +3,6 @@ From: Aikar Date: Mon, 28 Mar 2016 20:55:47 -0400 Subject: [PATCH] MC Utils -Collection of utils to help reduce NMS diff diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java new file mode 100644 @@ -204,8 +203,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public class NBTTagCompound extends NBTBase { -- private Map map = Maps.newHashMap(); -+ public Map map = Maps.newHashMap(); // Paper +- private final Map map = Maps.newHashMap(); ++ public final Map map = Maps.newHashMap(); // Paper public NBTTagCompound() {} @@ -236,6 +235,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private byte type = 0; public NBTTagList() {} --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Only-send-Dragon-Wither-Death-sounds-to-same-world.patch b/Spigot-Server-Patches/Only-send-Dragon-Wither-Death-sounds-to-same-world.patch index 3aa7b29631..703882702e 100644 --- a/Spigot-Server-Patches/Only-send-Dragon-Wither-Death-sounds-to-same-world.patch +++ b/Spigot-Server-Patches/Only-send-Dragon-Wither-Death-sounds-to-same-world.patch @@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java +++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java @@ -0,0 +0,0 @@ public class EntityEnderDragon extends EntityInsentient implements IComplex, IMo - if (this.bG == 1) { + if (this.bH == 1) { // CraftBukkit start - Use relative location for far away sounds // this.world.a(1028, new BlockPosition(this), 0); - int viewDistance = ((WorldServer) this.world).getServer().getViewDistance() * 16; diff --git a/Spigot-Server-Patches/Optimize-Chunk-Access.patch b/Spigot-Server-Patches/Optimize-Chunk-Access.patch index bae828ab6c..5586ba54c1 100644 --- a/Spigot-Server-Patches/Optimize-Chunk-Access.patch +++ b/Spigot-Server-Patches/Optimize-Chunk-Access.patch @@ -33,7 +33,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- 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 implements IChunkProvider { - public final Set unloadQueue = Sets.newHashSet(); // PAIL: private -> public + public final Set unloadQueue = Sets.newHashSet(); public final ChunkGenerator chunkGenerator; private final IChunkLoader chunkLoader; - public final Long2ObjectMap chunks = new Long2ObjectOpenHashMap(8192); diff --git a/Spigot-Server-Patches/Optimize-EAR.patch b/Spigot-Server-Patches/Optimize-EAR.patch index 96e54a347b..f20bbbdfc0 100644 --- a/Spigot-Server-Patches/Optimize-EAR.patch +++ b/Spigot-Server-Patches/Optimize-EAR.patch @@ -64,6 +64,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } } --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Optimize-Pathfinding.patch b/Spigot-Server-Patches/Optimize-Pathfinding.patch index 82c5ca20af..8164543ce5 100644 --- a/Spigot-Server-Patches/Optimize-Pathfinding.patch +++ b/Spigot-Server-Patches/Optimize-Pathfinding.patch @@ -21,7 +21,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + PathEntity pathentity = this.a(entity); -- return pathentity != null ? this.a(pathentity, d0) : false; +- return pathentity != null && this.a(pathentity, d0); + if (pathentity != null && this.a(pathentity, d0)) { + this.lastFailure = 0; + this.pathfindFailures = 0; diff --git a/Spigot-Server-Patches/Optimize-TileEntity-Ticking.patch b/Spigot-Server-Patches/Optimize-TileEntity-Ticking.patch index 4c308debb6..cde326d31b 100644 --- a/Spigot-Server-Patches/Optimize-TileEntity-Ticking.patch +++ b/Spigot-Server-Patches/Optimize-TileEntity-Ticking.patch @@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public class TileEntityChest extends TileEntityLootable implements ITickable, II } - public void c() { + public void E_() { + // Paper - Disable all of this, just in case this does get ticked + /* this.m(); @@ -135,7 +135,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public TileEntityEnderChest() {} - public void c() { + public void E_() { + // Paper start - Disable all of this, just in case this does get ticked + /* if (++this.h % 20 * 4 == 0) { @@ -162,7 +162,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + double d1 = (double) this.getPosition().getX() + 0.5D; + double d0 = (double) this.getPosition().getZ() + 0.5D; + -+ this.world.a((EntityHuman) null, d1, (double) this.getPosition().getY() + 0.5D, d0, SoundEffects.aM, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); ++ this.world.a((EntityHuman) null, d1, (double) this.getPosition().getY() + 0.5D, d0, SoundEffects.aN, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); + } + // Paper end + @@ -177,7 +177,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + double d0 = (double) this.getPosition().getX() + 0.5D; + double d2 = (double) this.getPosition().getZ() + 0.5D; + -+ this.world.a((EntityHuman) null, d0, (double) this.getPosition().getY() + 0.5D, d2, SoundEffects.aL, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); ++ this.world.a((EntityHuman) null, d0, (double) this.getPosition().getY() + 0.5D, d2, SoundEffects.aM, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F); + this.a = 0.0F; + } + // Paper end diff --git a/Spigot-Server-Patches/Optimize-UserCache-Thread-Safe.patch b/Spigot-Server-Patches/Optimize-UserCache-Thread-Safe.patch index 2033731bd4..23a9f7fd41 100644 --- a/Spigot-Server-Patches/Optimize-UserCache-Thread-Safe.patch +++ b/Spigot-Server-Patches/Optimize-UserCache-Thread-Safe.patch @@ -95,6 +95,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Option-to-use-vanilla-per-world-scoreboard-coloring-.patch b/Spigot-Server-Patches/Option-to-use-vanilla-per-world-scoreboard-coloring-.patch index 0dc527c44e..c80ae197c5 100644 --- a/Spigot-Server-Patches/Option-to-use-vanilla-per-world-scoreboard-coloring-.patch +++ b/Spigot-Server-Patches/Option-to-use-vanilla-per-world-scoreboard-coloring-.patch @@ -30,7 +30,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper Start - (Meh) Support for vanilla world scoreboard name coloring + String displayName = event.getPlayer().getDisplayName(); + if (this.player.getWorld().paperConfig.useVanillaScoreboardColoring) { -+ displayName = ScoreboardTeam.getPlayerDisplayName(this.player.aO(), player.getDisplayName()); ++ displayName = ScoreboardTeam.getPlayerDisplayName(this.player.aQ(), player.getDisplayName()); + } + + s = String.format(event.getFormat(), displayName, event.getMessage()); diff --git a/Spigot-Server-Patches/Optional-old-TNT-cannon-behaviors.patch b/Spigot-Server-Patches/Optional-old-TNT-cannon-behaviors.patch index 4473f8c42f..6e5bdec374 100644 --- a/Spigot-Server-Patches/Optional-old-TNT-cannon-behaviors.patch +++ b/Spigot-Server-Patches/Optional-old-TNT-cannon-behaviors.patch @@ -189,7 +189,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end world.addEntity(entitytntprimed); - world.a((EntityHuman) null, entitytntprimed.locX, entitytntprimed.locY, entitytntprimed.locZ, SoundEffects.gk, SoundCategory.BLOCKS, 1.0F, 1.0F); + world.a((EntityHuman) null, entitytntprimed.locX, entitytntprimed.locY, entitytntprimed.locZ, SoundEffects.gz, SoundCategory.BLOCKS, 1.0F, 1.0F); diff --git a/src/main/java/net/minecraft/server/DispenserRegistry.java b/src/main/java/net/minecraft/server/DispenserRegistry.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/DispenserRegistry.java @@ -214,14 +214,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { } - public boolean aj() { + public boolean ak() { + // Paper start - OBFHELPER + return this.doWaterMovement(); + } + + public boolean doWaterMovement() { + // Paper end - if (this.bz() instanceof EntityBoat) { + if (this.bB() instanceof EntityBoat) { this.inWater = false; } else if (this.world.a(this.getBoundingBox().grow(0.0D, -0.4000000059604645D, 0.0D).shrink(0.001D), Material.WATER, this)) { @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { @@ -253,7 +253,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { } - public boolean be() { + public boolean bg() { + // Paper start - OBFHELPER + return this.pushedByWater(); + } @@ -268,7 +268,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/EntityFallingBlock.java +++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java @@ -0,0 +0,0 @@ public class EntityFallingBlock extends Entity { - public boolean bs() { + public boolean bu() { return true; } + diff --git a/Spigot-Server-Patches/POM-Changes.patch b/Spigot-Server-Patches/POM-Changes.patch index 958ec60b35..39352dd7cc 100644 --- a/Spigot-Server-Patches/POM-Changes.patch +++ b/Spigot-Server-Patches/POM-Changes.patch @@ -17,16 +17,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + com.destroystokyo.paper + paper jar - 1.9.4-R0.1-SNAPSHOT + 1.10-R0.1-SNAPSHOT - Spigot - http://www.spigotmc.org + Paper -+ https://github.com/PaperSpigot/Paper ++ https://github.com/PaperMC/Paper UTF-8 @@ -0,0 +0,0 @@ - 1_9_R2 + 1_10_R1 git-Bukkit- - 1.6 diff --git a/Spigot-Server-Patches/Pass-world-to-Village-creation.patch b/Spigot-Server-Patches/Pass-world-to-Village-creation.patch index b8ec114146..069da46d9a 100644 --- a/Spigot-Server-Patches/Pass-world-to-Village-creation.patch +++ b/Spigot-Server-Patches/Pass-world-to-Village-creation.patch @@ -23,7 +23,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/Village.java +++ b/src/main/java/net/minecraft/server/Village.java @@ -0,0 +0,0 @@ public class Village { - private List k; + private final List k; private int l; - public Village() { @@ -31,13 +31,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.c = BlockPosition.ZERO; this.d = BlockPosition.ZERO; this.j = new TreeMap(); -@@ -0,0 +0,0 @@ public class Village { - NBTTagCompound nbttagcompound2 = nbttaglist1.get(j); - - if (nbttagcompound2.hasKey("UUID")) { -- UserCache usercache = this.a.getMinecraftServer().getUserCache(); -+ UserCache usercache = MinecraftServer.getServer().getUserCache(); // Paper - Bandaid for world being null - GameProfile gameprofile = usercache.a(UUID.fromString(nbttagcompound2.getString("UUID"))); - - if (gameprofile != null) { -- \ No newline at end of file diff --git a/Spigot-Server-Patches/Player-Exhaustion-Multipliers.patch b/Spigot-Server-Patches/Player-Exhaustion-Multipliers.patch index 1002a9ae91..0a00e0c503 100644 --- a/Spigot-Server-Patches/Player-Exhaustion-Multipliers.patch +++ b/Spigot-Server-Patches/Player-Exhaustion-Multipliers.patch @@ -53,6 +53,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - this.applyExhaustion(0.015F * (float) i * 0.01F); + this.applyExhaustion(world.paperConfig.playerSwimmingExhaustion); // Paper - Configurable swimming exhaustion } - } else if (this.n_()) { + } else if (this.m_()) { if (d1 > 0.0D) { -- \ No newline at end of file diff --git a/Spigot-Server-Patches/Player-affects-spawning-API.patch b/Spigot-Server-Patches/Player-affects-spawning-API.patch index dc2ca0d660..919fad3396 100644 --- a/Spigot-Server-Patches/Player-affects-spawning-API.patch +++ b/Spigot-Server-Patches/Player-affects-spawning-API.patch @@ -17,7 +17,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 import com.mojang.authlib.GameProfile; import java.util.Arrays; @@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving { - private final ItemCooldown bV = this.l(); + private final ItemCooldown bW = this.l(); public EntityFishingHook hookedFish; + // Paper start - affectsSpawning API @@ -55,8 +55,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/net/minecraft/server/EntitySilverfish.java @@ -0,0 +0,0 @@ public class EntitySilverfish extends EntityMonster { - public boolean cG() { - if (super.cG()) { + public boolean cK() { + if (super.cK()) { - EntityHuman entityhuman = this.world.b(this, 5.0D); + EntityHuman entityhuman = this.world.findNearbyPlayerNotInCreativeMode(this, 5.0D, EntityHuman.affectsSpawningFilter()); // Paper - affectsSpawning filter diff --git a/Spigot-Server-Patches/Prevent-Fire-from-loading-chunks.patch b/Spigot-Server-Patches/Prevent-Fire-from-loading-chunks.patch index a0f4d78a44..e647081ba0 100644 --- a/Spigot-Server-Patches/Prevent-Fire-from-loading-chunks.patch +++ b/Spigot-Server-Patches/Prevent-Fire-from-loading-chunks.patch @@ -44,6 +44,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } return i; --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Prevent-Waterflow-BlockFromToEvent-from-loading-chun.patch b/Spigot-Server-Patches/Prevent-Waterflow-BlockFromToEvent-from-loading-chun.patch index 9ed7a8a493..540bf4455f 100644 --- a/Spigot-Server-Patches/Prevent-Waterflow-BlockFromToEvent-from-loading-chun.patch +++ b/Spigot-Server-Patches/Prevent-Waterflow-BlockFromToEvent-from-loading-chun.patch @@ -44,7 +44,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private void flow(World world, BlockPosition blockposition, IBlockData iblockdata, int i) { - if (world.isLoaded(blockposition) && this.h(world, blockposition, iblockdata)) { // CraftBukkit - add isLoaded check + if (/*world.isLoaded(blockposition) &&*/ this.h(world, blockposition, iblockdata)) { // CraftBukkit - add isLoaded check // Paper - Already checked before we get here for isLoaded - if (iblockdata.getBlock() != Blocks.AIR) { + if (iblockdata.getMaterial() != Material.AIR) { if (this.material == Material.LAVA) { this.fizz(world, blockposition); -- \ No newline at end of file diff --git a/Spigot-Server-Patches/Prevent-tile-entity-and-entity-crashes.patch b/Spigot-Server-Patches/Prevent-tile-entity-and-entity-crashes.patch index d8ce9ca0dd..11f3a9a40e 100644 --- a/Spigot-Server-Patches/Prevent-tile-entity-and-entity-crashes.patch +++ b/Spigot-Server-Patches/Prevent-tile-entity-and-entity-crashes.patch @@ -44,7 +44,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { - ((ITickable) tileentity).c(); + ((ITickable) tileentity).E_(); this.methodProfiler.b(); } catch (Throwable throwable2) { - crashreport1 = CrashReport.a(throwable2, "Ticking block entity"); diff --git a/Spigot-Server-Patches/Reimplement-PlayerEditBookEvent.patch b/Spigot-Server-Patches/Reimplement-PlayerEditBookEvent.patch index 5a4b119ed9..c441b7e696 100644 --- a/Spigot-Server-Patches/Reimplement-PlayerEditBookEvent.patch +++ b/Spigot-Server-Patches/Reimplement-PlayerEditBookEvent.patch @@ -9,59 +9,45 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { - ItemStack itemstack; - ItemStack itemstack1; -+ try { // Paper - Reimplement BookEditEvent - if ("MC|BEdit".equals(s)) { - packetdataserializer = new PacketDataSerializer(Unpooled.wrappedBuffer(packetplayincustompayload.b())); - -@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { - if (itemstack1 != null) { - if (itemstack.getItem() == Items.WRITABLE_BOOK && itemstack.getItem() == itemstack1.getItem()) { - itemstack1.a("pages", (NBTBase) itemstack.getTag().getList("pages", 8)); -+ CraftEventFactory.handleEditBookEvent(player, itemstack1); // Paper - } - - return; + if (itemstack.getItem() == Items.WRITABLE_BOOK && itemstack.getItem() == itemstack1.getItem()) { + itemstack1.a("pages", (NBTBase) itemstack.getTag().getList("pages", 8)); ++ CraftEventFactory.handleEditBookEvent(player, itemstack1); // Paper } } catch (Exception exception) { PlayerConnection.LOGGER.error("Couldn\'t handle book info", exception); + this.disconnect("Invalid Book Data!"); // Paper - return; - } finally { - packetdataserializer.release(); + } + } else { + String s1; @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { - itemstack1.a("pages", (NBTBase) nbttaglist); - itemstack1.setItem(Items.WRITTEN_BOOK); -+ CraftEventFactory.handleEditBookEvent(player, itemstack1); // Paper - } - - return; + itemstack1.a("pages", (NBTBase) nbttaglist); + itemstack1.setItem(Items.WRITTEN_BOOK); ++ CraftEventFactory.handleEditBookEvent(player, itemstack1); // Paper } } catch (Exception exception1) { PlayerConnection.LOGGER.error("Couldn\'t sign book", exception1); + this.disconnect("Invalid Book Data!"); // Paper - return; - } finally { - packetdataserializer.release(); + } + } else if ("MC|TrSel".equals(s)) { + try { @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { } } catch (Exception exception3) { PlayerConnection.LOGGER.error("Couldn\'t set command block", exception3); + this.disconnect("Invalid Command Block Data!"); // Paper - } finally { - packetdataserializer.release(); } + } else if ("MC|AutoCmd".equals(s)) { + if (!this.minecraftServer.getEnableCommandBlock()) { @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { } } catch (Exception exception4) { PlayerConnection.LOGGER.error("Couldn\'t set command block", exception4); + this.disconnect("Invalid Command Block Data!"); // Paper - } finally { - packetdataserializer.release(); } + } else { + int k; @@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { } } catch (Exception exception5) { @@ -70,20 +56,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } } else if ("MC|ItemName".equals(s)) { -@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable { - } - } - } -+ // Paper start -+ } finally { -+ if (packetplayincustompayload.b().refCnt() > 0) { -+ packetplayincustompayload.b().release(); -+ } -+ } -+ // Paper end - - } - --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/SPIGOT-1401-Fix-dispenser-dropper-furnace-placement.patch b/Spigot-Server-Patches/SPIGOT-1401-Fix-dispenser-dropper-furnace-placement.patch index 4aae7c6ec0..71b24f8dc5 100644 --- a/Spigot-Server-Patches/SPIGOT-1401-Fix-dispenser-dropper-furnace-placement.patch +++ b/Spigot-Server-Patches/SPIGOT-1401-Fix-dispenser-dropper-furnace-placement.patch @@ -50,6 +50,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public boolean interact(World world, BlockPosition blockposition, IBlockData iblockdata, EntityHuman entityhuman, EnumHand enumhand, @Nullable ItemStack itemstack, EnumDirection enumdirection, float f, float f1, float f2) { if (world.isClientSide) { --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Send-absolute-position-the-first-time-an-entity-is-s.patch b/Spigot-Server-Patches/Send-absolute-position-the-first-time-an-entity-is-s.patch index 4684fa027a..b5289f71fe 100644 --- a/Spigot-Server-Patches/Send-absolute-position-the-first-time-an-entity-is-s.patch +++ b/Spigot-Server-Patches/Send-absolute-position-the-first-time-an-entity-is-s.patch @@ -12,7 +12,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private boolean x; private boolean y; public boolean b; -- public Set trackedPlayers = Sets.newHashSet(); +- public final Set trackedPlayers = Sets.newHashSet(); + // Paper start + // Replace trackedPlayers Set with a Map. The value is true until the player receives + // their first update (which is forced to have absolute coordinates), false afterward. @@ -23,38 +23,21 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public EntityTrackerEntry(Entity entity, int i, int j, int k, boolean flag) { this.tracker = entity; @@ -0,0 +0,0 @@ public class EntityTrackerEntry { - boolean flag = k1 * k1 + l1 * l1 + i2 * i2 >= 128L || this.a % 60 == 0; - boolean flag1 = Math.abs(i1 - this.yRot) >= 1 || Math.abs(j1 - this.xRot) >= 1; + boolean flag1 = l1 * l1 + i2 * i2 + j2 * j2 >= 128L || this.a % 60 == 0; + boolean flag2 = Math.abs(j1 - this.yRot) >= 1 || Math.abs(k1 - this.xRot) >= 1; -- // CraftBukkit start - Code moved from below -- if (flag) { -- this.xLoc = j; -- this.yLoc = k; -- this.zLoc = l; -- } + if (this.a > 0 || this.tracker instanceof EntityArrow) { // Paper - Moved up -+ // CraftBukkit start - Code moved from below -+ if (flag) { -+ this.xLoc = j; -+ this.yLoc = k; -+ this.zLoc = l; -+ } - -- if (flag1) { -+ if (flag1) { -+ this.yRot = i1; -+ this.xRot = j1; -+ } -+ // CraftBukkit end - this.yRot = i1; - this.xRot = j1; -- } + // CraftBukkit start - Code moved from below + if (flag1) { + this.xLoc = k; +@@ -0,0 +0,0 @@ public class EntityTrackerEntry { + } // CraftBukkit end -- + - if (this.a > 0 || this.tracker instanceof EntityArrow) { - if (k1 >= -32768L && k1 < 32768L && l1 >= -32768L && l1 < 32768L && i2 >= -32768L && i2 < 32768L && this.v <= 400 && !this.x && this.y == this.tracker.onGround) { - if ((!flag || !flag1) && !(this.tracker instanceof EntityArrow)) { - if (flag) { + if (l1 >= -32768L && l1 < 32768L && i2 >= -32768L && i2 < 32768L && j2 >= -32768L && j2 < 32768L && this.v <= 400 && !this.x && this.y == this.tracker.onGround) { + if ((!flag1 || !flag2) && !(this.tracker instanceof EntityArrow)) { + if (flag1) { @@ -0,0 +0,0 @@ public class EntityTrackerEntry { } diff --git a/Spigot-Server-Patches/Show-Paper-in-client-crashes-server-lists-and-Mojang.patch b/Spigot-Server-Patches/Show-Paper-in-client-crashes-server-lists-and-Mojang.patch index 1a8232151e..25f706f4f4 100644 --- a/Spigot-Server-Patches/Show-Paper-in-client-crashes-server-lists-and-Mojang.patch +++ b/Spigot-Server-Patches/Show-Paper-in-client-crashes-server-lists-and-Mojang.patch @@ -17,7 +17,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + properties.store(fileoutputstream, "By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula)." + + "\nand also agreeing that tacos are tasty."); // Paper - fix lag } catch (Exception exception) { - EULA.a.warn("Failed to save " + this.b, exception); + EULA.a.warn("Failed to save {}", new Object[] { this.b, exception}); } finally { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 diff --git a/Spigot-Server-Patches/Support-offline-mode-in-whitelist-command-as-well.patch b/Spigot-Server-Patches/Support-offline-mode-in-whitelist-command-as-well.patch index e3a03a04a1..89ece1d34b 100644 --- a/Spigot-Server-Patches/Support-offline-mode-in-whitelist-command-as-well.patch +++ b/Spigot-Server-Patches/Support-offline-mode-in-whitelist-command-as-well.patch @@ -24,7 +24,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + this.whitelist(minecraftserver, astring[1], true); + // Paper end a(icommandlistener, (ICommand) this, "commands.whitelist.add.success", new Object[] { astring[1]}); - } else if (astring[0].equals("remove")) { + } else if ("remove".equals(astring[0])) { if (astring.length < 2) { throw new ExceptionUsage("commands.whitelist.remove.usage", new Object[0]); } @@ -42,7 +42,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + this.whitelist(minecraftserver, astring[1], false); + // Paper end a(icommandlistener, (ICommand) this, "commands.whitelist.remove.success", new Object[] { astring[1]}); - } else if (astring[0].equals("reload")) { + } else if ("reload".equals(astring[0])) { minecraftserver.getPlayerList().reloadWhitelist(); @@ -0,0 +0,0 @@ public class CommandWhitelist extends CommandAbstract { return Collections.emptyList(); diff --git a/Spigot-Server-Patches/System-property-for-disabling-watchdoge.patch b/Spigot-Server-Patches/System-property-for-disabling-watchdoge.patch index bcd8ec31f5..7ec4d8aa14 100644 --- a/Spigot-Server-Patches/System-property-for-disabling-watchdoge.patch +++ b/Spigot-Server-Patches/System-property-for-disabling-watchdoge.patch @@ -17,6 +17,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 { Logger log = Bukkit.getServer().getLogger(); log.log( Level.SEVERE, "The server has stopped responding!" ); --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Timings-v2.patch b/Spigot-Server-Patches/Timings-v2.patch index 2823e2f953..e4c2084116 100644 --- a/Spigot-Server-Patches/Timings-v2.patch +++ b/Spigot-Server-Patches/Timings-v2.patch @@ -381,7 +381,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void m() { - SpigotTimings.timerEntityBaseTick.startTiming(); // Spigot super.m(); - this.cv(); + this.cz(); if (!this.world.isClientSide) { @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { } @@ -395,7 +395,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 float f = (float) (d0 * d0 + d1 * d1); @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { } else { - this.bp = 0; + this.bq = 0; } - - SpigotTimings.timerEntityTickRest.stopTiming(); // Spigot @@ -407,9 +407,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.world.methodProfiler.a("ai"); - SpigotTimings.timerEntityAI.startTiming(); // Spigot - if (this.cg()) { - this.bd = false; - this.be = 0.0F; + if (this.cj()) { + this.be = false; + this.bf = 0.0F; @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { this.doTick(); this.world.methodProfiler.b(); @@ -419,16 +419,16 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.world.methodProfiler.b(); this.world.methodProfiler.a("jump"); @@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity { - this.bf *= 0.98F; - this.bg *= 0.9F; + this.bg *= 0.98F; + this.bh *= 0.9F; this.r(); - SpigotTimings.timerEntityAIMove.startTiming(); // Spigot - this.g(this.be, this.bf); + this.g(this.bf, this.bg); - SpigotTimings.timerEntityAIMove.stopTiming(); // Spigot this.world.methodProfiler.b(); this.world.methodProfiler.a("push"); - SpigotTimings.timerEntityAICollision.startTiming(); // Spigot - this.co(); + this.cs(); - SpigotTimings.timerEntityAICollision.stopTiming(); // Spigot this.world.methodProfiler.b(); } @@ -486,7 +486,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (this.server != null) { this.server.disablePlugins(); @@ -0,0 +0,0 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs - protected void B() {} + public void B() {} protected void C() throws ExceptionWorldConflict { // CraftBukkit - added throws - SpigotTimings.serverTickTimer.startTiming(); // Spigot @@ -602,7 +602,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - SpigotTimings.tickablesTimer.startTiming(); // Spigot + MinecraftTimings.tickablesTimer.startTiming(); // Spigot for (i = 0; i < this.o.size(); ++i) { - ((ITickable) this.o.get(i)).c(); + ((ITickable) this.o.get(i)).E_(); } - SpigotTimings.tickablesTimer.stopTiming(); // Spigot + MinecraftTimings.tickablesTimer.stopTiming(); // Spigot @@ -775,8 +775,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - public CustomTimingsHandler tickTimer = org.bukkit.craftbukkit.SpigotTimings.getTileEntityTimings(this); // Spigot + public Timing tickTimer = MinecraftTimings.getTileEntityTimings(this); // Paper private static final Logger a = LogManager.getLogger(); - private static Map> f = Maps.newHashMap(); - private static Map, String> g = Maps.newHashMap(); + private static final Map> f = Maps.newHashMap(); + private static final Map, String> g = Maps.newHashMap(); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/World.java @@ -868,7 +868,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 entity.N = entity.locY; @@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { entity.lastPitch = entity.pitch; - if (flag && entity.aa) { + if (flag && entity.ab) { ++entity.ticksLived; + ++co.aikar.timings.TimingHistory.activatedEntityTicks; // Paper if (entity.isPassenger()) { @@ -944,7 +944,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 while (iterator.hasNext()) { @@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler { - if (this.areChunksLoadedBetween(nextticklistentry.a.a(-b0, -b0, -b0), nextticklistentry.a.a(b0, b0, b0))) { + if (this.areChunksLoadedBetween(nextticklistentry.a.a(0, 0, 0), nextticklistentry.a.a(0, 0, 0))) { IBlockData iblockdata = this.getType(nextticklistentry.a); + co.aikar.timings.Timing timing = iblockdata.getBlock().getTiming(); // Paper + timing.startTiming(); // Paper @@ -1398,7 +1398,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - SpigotTimings.checkIfActiveTimer.startTiming(); // Never safe to skip fireworks or entities not yet added to chunk // PAIL: inChunk - if ( !entity.aa || entity instanceof EntityFireworks ) { + if ( !entity.ab || entity instanceof EntityFireworks ) { - SpigotTimings.checkIfActiveTimer.stopTiming(); return true; } diff --git a/Spigot-Server-Patches/Use-Optimized-Collections.patch b/Spigot-Server-Patches/Use-Optimized-Collections.patch index 1c912e16c4..72cd1b0cea 100644 --- a/Spigot-Server-Patches/Use-Optimized-Collections.patch +++ b/Spigot-Server-Patches/Use-Optimized-Collections.patch @@ -20,7 +20,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public class ChunkProviderServer implements IChunkProvider { private static final Logger a = LogManager.getLogger(); -- public final Set unloadQueue = Sets.newHashSet(); // PAIL: private -> public +- public final Set unloadQueue = Sets.newHashSet(); + public final it.unimi.dsi.fastutil.longs.LongSet unloadQueue = new it.unimi.dsi.fastutil.longs.LongArraySet(); // PAIL: private -> public // Paper public final ChunkGenerator chunkGenerator; private final IChunkLoader chunkLoader; diff --git a/Spigot-Server-Patches/Use-a-Shared-Random-for-Entities.patch b/Spigot-Server-Patches/Use-a-Shared-Random-for-Entities.patch index 28982f8803..7335a3e6b6 100644 --- a/Spigot-Server-Patches/Use-a-Shared-Random-for-Entities.patch +++ b/Spigot-Server-Patches/Use-a-Shared-Random-for-Entities.patch @@ -20,7 +20,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { this.width = 0.6F; this.length = 1.8F; - this.aw = 1; + this.ax = 1; - this.random = new Random(); + this.random = SHARED_RANDOM; // Paper this.maxFireTicks = 1; diff --git a/Spigot-Server-Patches/Vehicle-Event-Cancellation-Changes.patch b/Spigot-Server-Patches/Vehicle-Event-Cancellation-Changes.patch index a55f9360cf..2c9b376314 100644 --- a/Spigot-Server-Patches/Vehicle-Event-Cancellation-Changes.patch +++ b/Spigot-Server-Patches/Vehicle-Event-Cancellation-Changes.patch @@ -12,7 +12,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public boolean a(Entity entity, boolean flag) { -+ return this.mountEntity(entity, flag, false); // Paper - forward ++ return this.mountEntity(entity, flag, false); // Paper - OBFHELPER + } + + public boolean mountEntity(Entity entity, boolean flag, boolean suppressEvents) { // Paper @@ -22,9 +22,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { } - this.at = entity; -- this.at.o(this); -+ this.at.addRider(this, suppressEvents); // Paper + this.au = entity; +- this.au.o(this); ++ this.au.addRider(this, suppressEvents); // Paper return true; } } @@ -32,13 +32,13 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } protected void o(Entity entity) { -+ // Paper start - Forward ++ // Paper start - OBFHELPER + this.addRider(entity, false); + } + + private void addRider(Entity entity, boolean suppressEvents) { + // Paper end - if (entity.bz() != this) { + if (entity.bB() != this) { throw new IllegalStateException("Use x.startRiding(y), not y.addPassenger(x)"); } else { // CraftBukkit start @@ -55,7 +55,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Spigot end + // ============================================================= + } // Paper - end suppressible block - if (!this.world.isClientSide && entity instanceof EntityHuman && !(this.bu() instanceof EntityHuman)) { + if (!this.world.isClientSide && entity instanceof EntityHuman && !(this.bw() instanceof EntityHuman)) { this.passengers.add(0, entity); } else { @@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener { @@ -87,8 +87,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end + protected boolean q(Entity entity) { - return this.bv().size() < 1; + return this.bx().size() < 1; } --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Water-mobs-should-only-spawn-in-the-water.patch b/Spigot-Server-Patches/Water-mobs-should-only-spawn-in-the-water.patch index 2e34bb5c74..ccd6c68d5a 100644 --- a/Spigot-Server-Patches/Water-mobs-should-only-spawn-in-the-water.patch +++ b/Spigot-Server-Patches/Water-mobs-should-only-spawn-in-the-water.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Water mobs should only spawn in the water diff --git a/src/main/java/net/minecraft/server/EntityWaterAnimal.java b/src/main/java/net/minecraft/server/EntityWaterAnimal.java -index 0000000000000000000000000000000000000000..00000000000000000000000000000000000000005 100644 +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/EntityWaterAnimal.java +++ b/src/main/java/net/minecraft/server/EntityWaterAnimal.java @@ -0,0 +0,0 @@ public abstract class EntityWaterAnimal extends EntityInsentient implements IAni } - public boolean cG() { + public boolean cK() { - return true; + // Paper start - Don't let water mobs spawn in non-water blocks + // Based around EntityAnimal's implementation diff --git a/Spigot-Server-Patches/remove-null-possibility-for-getServer-singleton.patch b/Spigot-Server-Patches/remove-null-possibility-for-getServer-singleton.patch index 0f27cb4eca..daea82d232 100644 --- a/Spigot-Server-Patches/remove-null-possibility-for-getServer-singleton.patch +++ b/Spigot-Server-Patches/remove-null-possibility-for-getServer-singleton.patch @@ -34,6 +34,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // CraftBukkit end --- -2.7.4 (Apple Git-66) - +-- \ No newline at end of file diff --git a/scripts/importmcdev.sh b/scripts/importmcdev.sh index 1223cf4c77..ffac3728b3 100755 --- a/scripts/importmcdev.sh +++ b/scripts/importmcdev.sh @@ -62,7 +62,6 @@ import NavigationAbstract import NBTTagCompound import NBTTagList import PersistentScoreboard -import PacketPlayInResourcePackStatus import PacketPlayInUseEntity import PacketPlayOutPlayerListHeaderFooter import PacketPlayOutScoreboardTeam diff --git a/work/BuildData b/work/BuildData index 9b100f8a6f..cede5450c9 160000 --- a/work/BuildData +++ b/work/BuildData @@ -1 +1 @@ -Subproject commit 9b100f8a6f0d86b5fd5f22f65dd6dd9eba6547d3 +Subproject commit cede5450c952c76341e047b8d04f9894f16e596d diff --git a/work/Bukkit b/work/Bukkit index c5bf6bc614..a4fe2264e6 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit c5bf6bc614bfd1e119e7fc067ff30cd8e8221cb2 +Subproject commit a4fe2264e678cdc646098df61398ea8a10b0731a diff --git a/work/CraftBukkit b/work/CraftBukkit index 0cd0397a82..885f4dce9e 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 0cd0397a8295992112ad3bf0d37795a04d22503e +Subproject commit 885f4dce9e238040777536ff34b5b7cee76d6d80 diff --git a/work/Spigot b/work/Spigot index 798f32dcaa..da278d16b4 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit 798f32dcaacf2cb2af0d4e17ff0d221dafe141ab +Subproject commit da278d16b469b98f961d0e8fbffe81f274a930db