From b39f2133a151c856e17ffc15ea030f768ed5b5e0 Mon Sep 17 00:00:00 2001
From: Zach Brown <1254957+zachbr@users.noreply.github.com>
Date: Sat, 20 May 2017 23:41:39 -0500
Subject: [PATCH] Update Paper to MC 1.12-pre5
---
...lease-versioning-change-and-warning.patch} | 6 +-
Spigot-API-Patches/POM-changes.patch | 4 +-
.../Add-EntityZapEvent.patch | 6 +-
.../Add-PlayerUseUnknownEntityEvent.patch | 2 +-
...ke-parrots-stay-on-shoulders-despite.patch | 6 +-
.../Allow-nerfed-mobs-to-jump.patch | 44 ++++++--
.../Auto-Save-Improvements.patch | 10 +-
.../Cap-Entity-Collisions.patch | 6 +-
...entation-of-tile-entity-removal-list.patch | 4 +-
.../Chunk-registration-fixes.patch | 14 +--
.../Complete-resource-pack-API.patch | 4 +-
...le-Keep-Spawn-Loaded-range-per-world.patch | 4 +-
.../Configurable-end-credits.patch | 20 ++--
...onfigurable-packet-in-spam-threshold.patch | 4 +-
.../Do-not-let-armorstands-drown.patch | 2 +-
...llow-entities-to-ride-themselves-572.patch | 2 +-
.../Don-t-let-fishinghooks-use-portals.patch | 4 +-
...am-reload-spawn-chunks-in-nether-end.patch | 2 +-
.../Enforce-Sync-Player-Saves.patch | 2 +-
.../Ensure-commands-are-not-ran-async.patch | 2 +-
Spigot-Server-Patches/Entity-Origin-API.patch | 6 +-
.../Fix-AIOOBE-in-inventory-handling.patch | 2 +-
...n-attempting-to-read-EMPTY-ItemStack.patch | 2 +-
.../Fix-block-break-desync.patch | 2 +-
.../IllegalPacketEvent.patch | 2 +-
.../Implement-PlayerLocaleChangeEvent.patch | 11 +-
...item-frames-performance-and-bug-fixe.patch | 4 +-
...ore-Improper-Anvil-Item-Name-Packets.patch | 26 -----
...llow-31-instead-of-30-for-item-names.patch | 20 ----
.../Optimise-removeQueue.patch | 20 ++--
.../Optimized-Light-Level-Comparisons.patch | 16 +--
...nilla-per-world-scoreboard-coloring-.patch | 4 +-
Spigot-Server-Patches/POM-Changes.patch | 4 +-
.../Player-Tab-List-and-Title-APIs.patch | 4 +-
.../Player-affects-spawning-API.patch | 12 +--
.../Properly-fix-item-duplication-bug.patch | 4 +-
...le-async-calls-to-restart-the-server.patch | 101 +++++++++---------
.../Remove-the-Vanilla-Method-Profiler.patch | 2 +-
.../ShulkerBox-Dupe-Prevention.patch | 2 +-
Spigot-Server-Patches/Timings-v2.patch | 58 +++++-----
.../Vanished-players-don-t-have-rights.patch | 6 +-
scripts/upstreamMerge.sh | 2 +-
work/BuildData | 2 +-
work/Bukkit | 2 +-
work/CraftBukkit | 2 +-
work/Spigot | 2 +-
46 files changed, 223 insertions(+), 243 deletions(-)
rename Spigot-API-Patches/{1.12-pre2-versioning-change-and-warning.patch => 1.12-prerelease-versioning-change-and-warning.patch} (84%)
delete mode 100644 Spigot-Server-Patches/MC-111699-Ignore-Improper-Anvil-Item-Name-Packets.patch
delete mode 100644 Spigot-Server-Patches/MC-112017-Allow-31-instead-of-30-for-item-names.patch
diff --git a/Spigot-API-Patches/1.12-pre2-versioning-change-and-warning.patch b/Spigot-API-Patches/1.12-prerelease-versioning-change-and-warning.patch
similarity index 84%
rename from Spigot-API-Patches/1.12-pre2-versioning-change-and-warning.patch
rename to Spigot-API-Patches/1.12-prerelease-versioning-change-and-warning.patch
index 72897d3882..9a7ef0b234 100644
--- a/Spigot-API-Patches/1.12-pre2-versioning-change-and-warning.patch
+++ b/Spigot-API-Patches/1.12-prerelease-versioning-change-and-warning.patch
@@ -1,19 +1,19 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Zach Brown <1254957+zachbr@users.noreply.github.com>
Date: Mon, 15 May 2017 10:11:42 -0500
-Subject: [PATCH] 1.12-pre2 versioning change and warning
+Subject: [PATCH] 1.12 prerelease versioning change and warning
Remove when merged to master
diff --git a/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/src/main/java/org/bukkit/command/defaults/VersionCommand.java
-index aae605e9..d7e3d7f4 100644
+index aae605e9..2319d6b5 100644
--- a/src/main/java/org/bukkit/command/defaults/VersionCommand.java
+++ b/src/main/java/org/bukkit/command/defaults/VersionCommand.java
@@ -0,0 +0,0 @@ public class VersionCommand extends BukkitCommand {
if (!testPermission(sender)) return true;
if (args.length == 0) {
-+ sender.sendMessage("This is pre-release software, and is not necessarily of the same quality as a full release"); // TODO: Remove during merge into master
++ sender.sendMessage("This is pre-release software"); // TODO: Remove during merge into master
sender.sendMessage("This server is running " + Bukkit.getName() + " version " + Bukkit.getVersion() + " (Implementing API version " + Bukkit.getBukkitVersion() + ")");
sendVersion(sender);
} else {
diff --git a/Spigot-API-Patches/POM-changes.patch b/Spigot-API-Patches/POM-changes.patch
index c7f663a45c..4b54dc350b 100644
--- a/Spigot-API-Patches/POM-changes.patch
+++ b/Spigot-API-Patches/POM-changes.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] POM changes
diff --git a/pom.xml b/pom.xml
-index e7891169..067d30e8 100644
+index 66bb7a12..ea6a710e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -0,0 +0,0 @@
@@ -24,7 +24,7 @@ index e7891169..067d30e8 100644
- spigot-api
+ com.destroystokyo.paper
+ paper-api
- 1.12-pre2-SNAPSHOT
+ 1.12-pre5-SNAPSHOT
jar
- Spigot-API
diff --git a/Spigot-Server-Patches/Add-EntityZapEvent.patch b/Spigot-Server-Patches/Add-EntityZapEvent.patch
index 287dccee47..a3bb637420 100644
--- a/Spigot-Server-Patches/Add-EntityZapEvent.patch
+++ b/Spigot-Server-Patches/Add-EntityZapEvent.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add EntityZapEvent
diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java
-index c2f4337d0..50629ff33 100644
+index cd97aa30f..835fd7461 100644
--- a/src/main/java/net/minecraft/server/EntityPig.java
+++ b/src/main/java/net/minecraft/server/EntityPig.java
@@ -0,0 +0,0 @@ public class EntityPig extends EntityAnimal {
@@ -22,7 +22,7 @@ index c2f4337d0..50629ff33 100644
if (CraftEventFactory.callPigZapEvent(this, entitylightning, entitypigzombie).isCancelled()) {
return;
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
-index 67be37ae8..34945598c 100644
+index fa7ec707f..2562cc45e 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -0,0 +0,0 @@ public class EntityVillager extends EntityAgeable implements NPC, IMerchant {
@@ -37,7 +37,7 @@ index 67be37ae8..34945598c 100644
+
entitywitch.setPositionRotation(this.locX, this.locY, this.locZ, this.yaw, this.pitch);
entitywitch.prepare(this.world.D(new BlockPosition(entitywitch)), (GroupDataEntity) null);
- entitywitch.setAI(this.hasAI());
+ entitywitch.setNoAI(this.isNoAI());
@@ -0,0 +0,0 @@ public class EntityVillager extends EntityAgeable implements NPC, IMerchant {
entitywitch.setCustomNameVisible(this.getCustomNameVisible());
}
diff --git a/Spigot-Server-Patches/Add-PlayerUseUnknownEntityEvent.patch b/Spigot-Server-Patches/Add-PlayerUseUnknownEntityEvent.patch
index cef3eea323..58c211124d 100644
--- a/Spigot-Server-Patches/Add-PlayerUseUnknownEntityEvent.patch
+++ b/Spigot-Server-Patches/Add-PlayerUseUnknownEntityEvent.patch
@@ -18,7 +18,7 @@ index c67cb54a3..521f46262 100644
private Vec3D c;
private EnumHand d;
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index 1bc61ef43..25c02c727 100644
+index 3b4b5cf8c..81f8e0fd0 100644
--- 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 {
diff --git a/Spigot-Server-Patches/Add-option-to-make-parrots-stay-on-shoulders-despite.patch b/Spigot-Server-Patches/Add-option-to-make-parrots-stay-on-shoulders-despite.patch
index 007ced8a10..16cb849b29 100644
--- a/Spigot-Server-Patches/Add-option-to-make-parrots-stay-on-shoulders-despite.patch
+++ b/Spigot-Server-Patches/Add-option-to-make-parrots-stay-on-shoulders-despite.patch
@@ -26,20 +26,20 @@ index af953dda4..1ce3aaa8c 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
-index 29c2fd4c9..02f3c001b 100644
+index 7d79e4625..a977a6775 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving {
this.j(this.getShoulderEntityLeft());
this.j(this.getShoulderEntityRight());
- if (!this.world.isClientSide && (!this.onGround || this.isInWater())) {
+ if (!this.world.isClientSide && (!this.onGround || this.isInWater() || this.isPassenger())) {
- this.releaseShoulderEntities();
+ if (!this.world.paperConfig.parrotsHangOnBetter) this.releaseShoulderEntities(); // Paper - Hang on!
}
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index 0b6fd67e7..7a4673278 100644
+index 9b78df95c..3c59a2f40 100644
--- 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 {
diff --git a/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch b/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch
index e37ea1b9d5..f2e11c6a3d 100644
--- a/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch
+++ b/Spigot-Server-Patches/Allow-nerfed-mobs-to-jump.patch
@@ -30,8 +30,20 @@ index 4f2fa59ac..8af52a61f 100644
public void b() {
this.b.l(this.a);
this.a = false;
+diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
+index 0e70cdf6f..8a61c2369 100644
+--- a/src/main/java/net/minecraft/server/Entity.java
++++ b/src/main/java/net/minecraft/server/Entity.java
+@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
+ public boolean noclip;
+ public float R;
+ protected Random random;
++ public boolean fromMobSpawner; // Paper
+ public int ticksLived;
+ public int fireTicks;
+ public boolean inWater; // Spigot - protected -> public // PAIL
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
-index 254955156..09e5408ac 100644
+index 67f26bd62..6adb38de0 100644
--- 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 {
@@ -43,18 +55,23 @@ index 254955156..09e5408ac 100644
public EntityInsentient(World world) {
super(world);
@@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving {
- // Spigot Start
- if ( this.fromMobSpawner )
- {
+ this.world.methodProfiler.a("checkDespawn");
+ this.L();
+ this.world.methodProfiler.b();
++ // Paper start - Re-add so we can allow them to float in water
++ if (this.fromMobSpawner) {
+ // Paper start - Allow nerfed mobs to jump and float
+ if (goalFloat != null) {
+ if (goalFloat.validConditions()) goalFloat.update();
+ this.getControllerJump().jumpIfSet();
+ }
+ // Paper end
- return;
- }
- // Spigot End
++ return;
++ }
++ // Spigot End
+ this.world.methodProfiler.a("sensing");
+ this.bw.a();
+ this.world.methodProfiler.b();
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFloat.java b/src/main/java/net/minecraft/server/PathfinderGoalFloat.java
index b3b303b3b..fc8be86fd 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalFloat.java
@@ -80,4 +97,17 @@ index b3b303b3b..fc8be86fd 100644
public void e() {
if (this.a.getRandom().nextFloat() < 0.8F) {
this.a.getControllerJump().a();
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+index 825ca9346..2f409fe1e 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+@@ -0,0 +0,0 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
+
+ @Override
+ public boolean hasAI() {
+- return (this.getHandle() instanceof EntityInsentient) ? !((EntityInsentient) this.getHandle()).isNoAI(): false;
++ return this.getHandle() instanceof EntityInsentient && (!((EntityInsentient) this.getHandle()).isNoAI() || this.getHandle().getWorld().spigotConfig.nerfSpawnerMobs && ((EntityInsentient) this.getHandle()).fromMobSpawner); // Paper
+ }
+
+ @Override
--
\ No newline at end of file
diff --git a/Spigot-Server-Patches/Auto-Save-Improvements.patch b/Spigot-Server-Patches/Auto-Save-Improvements.patch
index d2ed32c232..f1a70309ce 100644
--- a/Spigot-Server-Patches/Auto-Save-Improvements.patch
+++ b/Spigot-Server-Patches/Auto-Save-Improvements.patch
@@ -96,19 +96,19 @@ index 9836c0c5a..39f0f5a17 100644
}
}
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
-index 2b01c5395..42eaef8a1 100644
+index 2ee915226..fd7fda511 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
- private static final Logger bW = LogManager.getLogger();
+ private static final Logger bV = LogManager.getLogger();
public String locale = null; // Spigot private -> public // Paper - default to null
+ public long lastSave = MinecraftServer.currentTick; // Paper
public PlayerConnection playerConnection;
public final MinecraftServer server;
public final PlayerInteractManager playerInteractManager;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 19a66b64c..1f0e79387 100644
+index 374ab7294..6f6cc49c0 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 implements ICommandListener, Runnable, IAs
@@ -155,7 +155,7 @@ index 19a66b64c..1f0e79387 100644
this.methodProfiler.a("tallying");
// Spigot start
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
-index e7017883f..31f2704af 100644
+index a6576841b..f40bd1f46 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 {
@@ -192,7 +192,7 @@ index e7017883f..31f2704af 100644
public void addWhitelist(GameProfile gameprofile) {
this.whitelist.add(new WhiteListEntry(gameprofile));
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
-index 36e6fdd16..b1253899c 100644
+index 9f297f8de..a49e2302c 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler {
diff --git a/Spigot-Server-Patches/Cap-Entity-Collisions.patch b/Spigot-Server-Patches/Cap-Entity-Collisions.patch
index 67edd4e3b9..c9e02be9aa 100644
--- a/Spigot-Server-Patches/Cap-Entity-Collisions.patch
+++ b/Spigot-Server-Patches/Cap-Entity-Collisions.patch
@@ -27,19 +27,19 @@ index 70af657f5..af953dda4 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index b8b1b32df..2794ffa5b 100644
+index 7339e337b..883777223 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
+ public final byte activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
public final boolean defaultActivationState;
public long activatedTick = Integer.MIN_VALUE;
- public boolean fromMobSpawner;
+ protected int numCollisions = 0; // Paper
public void inactiveTick() { }
// Spigot end
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index f59c67b79..096d56026 100644
+index 75dbd8cf1..e5c7ee17f 100644
--- 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 {
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 387befbe6d..6c46cfb7c9 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
@@ -5,7 +5,7 @@ Subject: [PATCH] Change implementation of (tile)entity removal list
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index e712ab370..e9a7565ae 100644
+index a41bfe580..321306cb8 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
@@ -24,7 +24,7 @@ index e712ab370..e9a7565ae 100644
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
-index 4b49d1976..b7f502ecd 100644
+index 07596960b..c3449f94c 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -0,0 +0,0 @@ import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
diff --git a/Spigot-Server-Patches/Chunk-registration-fixes.patch b/Spigot-Server-Patches/Chunk-registration-fixes.patch
index 74eebdd37e..bb0d890a61 100644
--- a/Spigot-Server-Patches/Chunk-registration-fixes.patch
+++ b/Spigot-Server-Patches/Chunk-registration-fixes.patch
@@ -8,16 +8,16 @@ World checks and the Chunk Add logic are inconsistent on how Y > 256, < 0, is tr
Keep them consistent
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index 0a473d7d2..888ecce77 100644
+index 28c249718..b12d464dc 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);
+ int i = MathHelper.floor(entity.locX / 16.0D);
+- int j = MathHelper.floor(entity.locY / 16.0D);
++ int j = Math.min(15, Math.max(0, MathHelper.floor(entity.locY / 16.0D))); // Paper - stay consistent with chunk add/remove behavior
+ int k = MathHelper.floor(entity.locZ / 16.0D);
- if (!entity.aa || entity.ab != k || entity.ac != l || entity.ad != i1) {
+ if (!entity.aa || entity.ab != i || entity.ac != j || entity.ad != k) {
--
\ No newline at end of file
diff --git a/Spigot-Server-Patches/Complete-resource-pack-API.patch b/Spigot-Server-Patches/Complete-resource-pack-API.patch
index 497a1617b8..06012beb37 100644
--- a/Spigot-Server-Patches/Complete-resource-pack-API.patch
+++ b/Spigot-Server-Patches/Complete-resource-pack-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Complete resource pack API
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index 65ab76cc5..1bc61ef43 100644
+index 9be557062..3b4b5cf8c 100644
--- 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 {
@@ -23,7 +23,7 @@ index 65ab76cc5..1bc61ef43 100644
// CraftBukkit end
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index cf753d362..5839801f5 100644
+index 4822071c9..409582d5b 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 {
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 9ef535362e..340f6f8b36 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
@@ -21,7 +21,7 @@ index 74a49a5fb..3a942c763 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index ecdb92397..b55ce6b1a 100644
+index cf2c4ea3b..0ce50541c 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 implements ICommandListener, Runnable, IAs
@@ -39,7 +39,7 @@ index ecdb92397..b55ce6b1a 100644
if (i1 - j > 1000L) {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index 036d96fa7..b3c580836 100644
+index fee13283f..33776d905 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 {
diff --git a/Spigot-Server-Patches/Configurable-end-credits.patch b/Spigot-Server-Patches/Configurable-end-credits.patch
index 0b8cf60d0c..95bc9f041b 100644
--- a/Spigot-Server-Patches/Configurable-end-credits.patch
+++ b/Spigot-Server-Patches/Configurable-end-credits.patch
@@ -20,24 +20,24 @@ index fd606ee14..c00fa83d5 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
-index 3ef2ffd2d..586c4ad0d 100644
+index a6f70d846..8b0c126a3 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
- private long co = System.currentTimeMillis();
- private Entity cp;
+ private long cn = System.currentTimeMillis();
+ private Entity co;
public boolean worldChangeInvuln;
-- private boolean cr;
-+ private boolean cr; private void setHasSeenCredits(boolean has) { this.cr = has; } // Paper - OBFHELPER
- private final RecipeBookServer cs = new RecipeBookServer();
- private Vec3D ct;
- private int cu;
+- private boolean cq;
++ private boolean cq; private void setHasSeenCredits(boolean has) { this.cq = has; } // Paper - OBFHELPER
+ private final RecipeBookServer cr = new RecipeBookServer();
+ private Vec3D cs;
+ private int ct;
@@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.world.kill(this);
if (!this.viewingCredits) {
this.viewingCredits = true;
+ if (world.paperConfig.disableEndCredits) this.setHasSeenCredits(true); // Paper - Toggle to always disable end credits
- this.playerConnection.sendPacket(new PacketPlayOutGameStateChange(4, this.cr ? 0.0F : 1.0F));
- this.cr = true;
+ this.playerConnection.sendPacket(new PacketPlayOutGameStateChange(4, this.cq ? 0.0F : 1.0F));
+ this.cq = true;
}
--
\ No newline at end of file
diff --git a/Spigot-Server-Patches/Configurable-packet-in-spam-threshold.patch b/Spigot-Server-Patches/Configurable-packet-in-spam-threshold.patch
index 1e46bb977a..280bc74189 100644
--- a/Spigot-Server-Patches/Configurable-packet-in-spam-threshold.patch
+++ b/Spigot-Server-Patches/Configurable-packet-in-spam-threshold.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable packet in spam threshold
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
-index c758bde3f..d765607c0 100644
+index cf06f8ac3..2001175bf 100644
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
@@ -0,0 +0,0 @@ public class PaperConfig {
@@ -23,7 +23,7 @@ index c758bde3f..d765607c0 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index bac3ba83d..7b8e7f343 100644
+index 73baf015b..de8c9a3a5 100644
--- 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 {
diff --git a/Spigot-Server-Patches/Do-not-let-armorstands-drown.patch b/Spigot-Server-Patches/Do-not-let-armorstands-drown.patch
index 7630693341..3a3031fc5a 100644
--- a/Spigot-Server-Patches/Do-not-let-armorstands-drown.patch
+++ b/Spigot-Server-Patches/Do-not-let-armorstands-drown.patch
@@ -20,7 +20,7 @@ index 091c96411..693f157ea 100644
// Paper end
}
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index 1277ba3c2..ff2fe1b9d 100644
+index e5c7ee17f..00201988f 100644
--- 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 {
diff --git a/Spigot-Server-Patches/Don-t-allow-entities-to-ride-themselves-572.patch b/Spigot-Server-Patches/Don-t-allow-entities-to-ride-themselves-572.patch
index 499f3116cf..61a8ef7156 100644
--- a/Spigot-Server-Patches/Don-t-allow-entities-to-ride-themselves-572.patch
+++ b/Spigot-Server-Patches/Don-t-allow-entities-to-ride-themselves-572.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Don't allow entities to ride themselves - #572
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 6915be3f1..b8b1b32df 100644
+index 902df7ac6..7339e337b 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
diff --git a/Spigot-Server-Patches/Don-t-let-fishinghooks-use-portals.patch b/Spigot-Server-Patches/Don-t-let-fishinghooks-use-portals.patch
index 0f4ddcd0c8..30a0f4aa3d 100644
--- a/Spigot-Server-Patches/Don-t-let-fishinghooks-use-portals.patch
+++ b/Spigot-Server-Patches/Don-t-let-fishinghooks-use-portals.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Don't let fishinghooks use portals
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 5476aa5f7..ca05b3310 100644
+index 7ced4d196..c5c701f08 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
@@ -18,7 +18,7 @@ index 5476aa5f7..ca05b3310 100644
public int dimension;
protected BlockPosition an;
diff --git a/src/main/java/net/minecraft/server/EntityFishingHook.java b/src/main/java/net/minecraft/server/EntityFishingHook.java
-index e6a1e5a2a..d905c338f 100644
+index 1ef0fbe4d..95cc18716 100644
--- 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 {
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 64cbbbf6c1..e409da4f40 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
@@ -5,7 +5,7 @@ Subject: [PATCH] Don't spam reload spawn chunks in nether/end
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index fb24b5407..e301eaf9d 100644
+index 85cd83c35..364cfe885 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 {
diff --git a/Spigot-Server-Patches/Enforce-Sync-Player-Saves.patch b/Spigot-Server-Patches/Enforce-Sync-Player-Saves.patch
index 580a3f26d3..6bfa9b1d5c 100644
--- a/Spigot-Server-Patches/Enforce-Sync-Player-Saves.patch
+++ b/Spigot-Server-Patches/Enforce-Sync-Player-Saves.patch
@@ -7,7 +7,7 @@ Saving players async is extremely dangerous. This will force it to main
the same way we handle async chunk loads.
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
-index 31f2704af..bc2322e62 100644
+index f40bd1f46..772670a03 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 {
diff --git a/Spigot-Server-Patches/Ensure-commands-are-not-ran-async.patch b/Spigot-Server-Patches/Ensure-commands-are-not-ran-async.patch
index f62c9a6934..5c17a5b4ac 100644
--- a/Spigot-Server-Patches/Ensure-commands-are-not-ran-async.patch
+++ b/Spigot-Server-Patches/Ensure-commands-are-not-ran-async.patch
@@ -14,7 +14,7 @@ big slowdown in execution but throwing an exception at same time to raise awaren
that it is happening so that plugin authors can fix their code to stop executing commands async.
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index 63ea04fb4..65ab76cc5 100644
+index 7c4fe706a..9be557062 100644
--- 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 {
diff --git a/Spigot-Server-Patches/Entity-Origin-API.patch b/Spigot-Server-Patches/Entity-Origin-API.patch
index 8e0fca4046..0a94ee7c33 100644
--- a/Spigot-Server-Patches/Entity-Origin-API.patch
+++ b/Spigot-Server-Patches/Entity-Origin-API.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Entity Origin API
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index bbbd1689e..3dff98596 100644
+index 7ced523cd..2892f31f0 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
@@ -101,7 +101,7 @@ index bc6383669..ca9eb2f3b 100644
if (i >= 0 && i < this.list.size()) {
NBTBase nbtbase = (NBTBase) this.list.get(i);
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index b87273aca..c6cf7754b 100644
+index 3d114cfea..d207092ed 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 {
@@ -118,7 +118,7 @@ index b87273aca..c6cf7754b 100644
flag = true;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
-index f849a8148..63154b647 100644
+index 6375b5c40..87813d59c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -0,0 +0,0 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
diff --git a/Spigot-Server-Patches/Fix-AIOOBE-in-inventory-handling.patch b/Spigot-Server-Patches/Fix-AIOOBE-in-inventory-handling.patch
index 2bc1a9b97a..793870e7ee 100644
--- a/Spigot-Server-Patches/Fix-AIOOBE-in-inventory-handling.patch
+++ b/Spigot-Server-Patches/Fix-AIOOBE-in-inventory-handling.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix AIOOBE in inventory handling
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index b8ec71a93..bac3ba83d 100644
+index c2e93bb45..73baf015b 100644
--- 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 {
diff --git a/Spigot-Server-Patches/Fix-NFE-when-attempting-to-read-EMPTY-ItemStack.patch b/Spigot-Server-Patches/Fix-NFE-when-attempting-to-read-EMPTY-ItemStack.patch
index 8e5f893ca7..178cf5cc41 100644
--- a/Spigot-Server-Patches/Fix-NFE-when-attempting-to-read-EMPTY-ItemStack.patch
+++ b/Spigot-Server-Patches/Fix-NFE-when-attempting-to-read-EMPTY-ItemStack.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Fix NFE when attempting to read EMPTY ItemStack
Thanks @gabizou
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
-index 4de2e2b25..b8ac7479d 100644
+index 3aefb023e..8c7f57bc7 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -0,0 +0,0 @@ public final class ItemStack {
diff --git a/Spigot-Server-Patches/Fix-block-break-desync.patch b/Spigot-Server-Patches/Fix-block-break-desync.patch
index a863e930ba..a86b9db113 100644
--- a/Spigot-Server-Patches/Fix-block-break-desync.patch
+++ b/Spigot-Server-Patches/Fix-block-break-desync.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix block break desync
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index 20f026eb8..0b6fd67e7 100644
+index 32baff5e2..9b78df95c 100644
--- 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 {
diff --git a/Spigot-Server-Patches/IllegalPacketEvent.patch b/Spigot-Server-Patches/IllegalPacketEvent.patch
index dd8a61a0b3..26227972d3 100644
--- a/Spigot-Server-Patches/IllegalPacketEvent.patch
+++ b/Spigot-Server-Patches/IllegalPacketEvent.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] IllegalPacketEvent
Fired for invalid data from players that represents hacking attempts
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index d2742df61..13cce8904 100644
+index 12e07ccc4..9ee2cd17d 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;
diff --git a/Spigot-Server-Patches/Implement-PlayerLocaleChangeEvent.patch b/Spigot-Server-Patches/Implement-PlayerLocaleChangeEvent.patch
index 3e7943298f..f10b9dec3a 100644
--- a/Spigot-Server-Patches/Implement-PlayerLocaleChangeEvent.patch
+++ b/Spigot-Server-Patches/Implement-PlayerLocaleChangeEvent.patch
@@ -5,13 +5,13 @@ Subject: [PATCH] Implement PlayerLocaleChangeEvent
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
-index 42f6b7206..f4a2e748d 100644
+index 01adb5807..6024b001f 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -0,0 +0,0 @@ import org.bukkit.inventory.MainHand;
public class EntityPlayer extends EntityHuman implements ICrafting {
- private static final Logger bW = LogManager.getLogger();
+ private static final Logger bV = 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,11 +30,11 @@ index 42f6b7206..f4a2e748d 100644
+ new com.destroystokyo.paper.event.player.PlayerLocaleChangeEvent(this.getBukkitEntity(), oldLocale, this.locale).callEvent();
+ }
+ // Paper end
- this.cm = packetplayinsettings.c();
- this.cn = packetplayinsettings.d();
+ this.cl = packetplayinsettings.c();
+ this.cm = 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 00f9229f0..d1f70af51 100644
+index ca0fd5843..234becfd4 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 {
@@ -45,7 +45,6 @@ index 00f9229f0..d1f70af51 100644
+ // Paper start - Locale change event
+ final String locale = getHandle().locale;
+ return locale != null ? locale : "en_US";
-+ // Paper end
}
@Override
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 145f73e2c4..0c2e00172d 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
@@ -13,7 +13,7 @@ custom renderers are in use, defaulting to the much simpler Vanilla system.
Additionally, numerous issues to player position tracking on maps has been fixed.
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
-index b4507fe0c..29c2fd4c9 100644
+index dcd2ac6ab..7d79e4625 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving {
@@ -48,7 +48,7 @@ index 10cafe057..1d0d7453a 100644
Iterator iterator = this.trackedPlayers.iterator(); // CraftBukkit
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index 0ddc03507..634f1c28c 100644
+index 8729a0056..ba554517f 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 {
diff --git a/Spigot-Server-Patches/MC-111699-Ignore-Improper-Anvil-Item-Name-Packets.patch b/Spigot-Server-Patches/MC-111699-Ignore-Improper-Anvil-Item-Name-Packets.patch
deleted file mode 100644
index 61bd955827..0000000000
--- a/Spigot-Server-Patches/MC-111699-Ignore-Improper-Anvil-Item-Name-Packets.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Aikar
-Date: Mon, 2 Jan 2017 02:07:24 -0500
-Subject: [PATCH] MC-111699: Ignore Improper Anvil Item Name Packets
-
-The client is improperly sending Item Name Packets to the server BEFORE
-the click event. This causes the server to reset before the click event is processed
-
-This breaks the ability to rename more than 1 item at a time.
-
-See: https://bugs.mojang.com/browse/MC-111699
-
-diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index 563781256..dfeadd9b5 100644
---- 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 {
- String s4 = SharedConstants.a(packetplayincustompayload.b().e(32767));
-
- if (s4.length() <= 30) {
-- containeranvil.a(s4);
-+ if (!s4.isEmpty() || containeranvil.getSlot(2).getItem().isEmpty()) containeranvil.a(s4); // Paper - Hack Fix for MC-111699
- }
- } else {
- containeranvil.a("");
---
\ No newline at end of file
diff --git a/Spigot-Server-Patches/MC-112017-Allow-31-instead-of-30-for-item-names.patch b/Spigot-Server-Patches/MC-112017-Allow-31-instead-of-30-for-item-names.patch
deleted file mode 100644
index bf3bcd8d9c..0000000000
--- a/Spigot-Server-Patches/MC-112017-Allow-31-instead-of-30-for-item-names.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Aikar
-Date: Mon, 2 Jan 2017 02:43:22 -0500
-Subject: [PATCH] MC-112017: Allow 31 instead of 30 for item names
-
-
-diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index dfeadd9b5..20f026eb8 100644
---- 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 {
- if (packetplayincustompayload.b() != null && packetplayincustompayload.b().readableBytes() >= 1) {
- String s4 = SharedConstants.a(packetplayincustompayload.b().e(32767));
-
-- if (s4.length() <= 30) {
-+ if (s4.length() <= 31) { // Paper - MC-112017
- if (!s4.isEmpty() || containeranvil.getSlot(2).getItem().isEmpty()) containeranvil.a(s4); // Paper - Hack Fix for MC-111699
- }
- } else {
---
\ No newline at end of file
diff --git a/Spigot-Server-Patches/Optimise-removeQueue.patch b/Spigot-Server-Patches/Optimise-removeQueue.patch
index 4fcd0d2d7d..14133d4031 100644
--- a/Spigot-Server-Patches/Optimise-removeQueue.patch
+++ b/Spigot-Server-Patches/Optimise-removeQueue.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Optimise removeQueue
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
-index c8183de48..1aa2d2e0a 100644
+index 182513efd..3906d4bf7 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -0,0 +0,0 @@ package net.minecraft.server;
@@ -25,9 +25,9 @@ index c8183de48..1aa2d2e0a 100644
public double e;
- public final List removeQueue = Lists.newLinkedList();
+ public final Deque removeQueue = new ArrayDeque<>(); // Paper
- private final AdvancementDataPlayer bZ;
- private final ServerStatisticManager ca;
- private float cb = Float.MIN_VALUE;
+ private final AdvancementDataPlayer bY;
+ private final ServerStatisticManager bZ;
+ private float ca = Float.MIN_VALUE;
@@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
Iterator iterator = this.removeQueue.iterator();
int j = 0;
@@ -49,15 +49,15 @@ index c8183de48..1aa2d2e0a 100644
}
@@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.lastHealthSent = -1.0F;
- this.ci = -1;
- // this.cs.a((RecipeBook) entityplayer.cs); // CraftBukkit
+ this.ch = -1;
+ // this.cr.a((RecipeBook) entityplayer.cr); // CraftBukkit
- this.removeQueue.addAll(entityplayer.removeQueue);
-+ //this.removeQueue.addAll(entityplayer.removeQueue); // Paper
++ // Paper start - Optimize remove queue
++ //this.removeQueue.addAll(entityplayer.removeQueue);
+ if (this.removeQueue != entityplayer.removeQueue) {
+ this.removeQueue.addAll(entityplayer.removeQueue);
+ }
-+ // Paper end
- this.cr = entityplayer.cr;
- this.cw = entityplayer.cw;
+ this.cq = entityplayer.cq;
+ this.cv = entityplayer.cv;
this.setShoulderEntityLeft(entityplayer.getShoulderEntityLeft());
--
\ No newline at end of file
diff --git a/Spigot-Server-Patches/Optimized-Light-Level-Comparisons.patch b/Spigot-Server-Patches/Optimized-Light-Level-Comparisons.patch
index bbe31b4bcf..20ea57a1b4 100644
--- a/Spigot-Server-Patches/Optimized-Light-Level-Comparisons.patch
+++ b/Spigot-Server-Patches/Optimized-Light-Level-Comparisons.patch
@@ -8,7 +8,7 @@ Use an optimized method to test if a block position meets a desired light level.
This method benefits from returning as soon as the desired light level matches.
diff --git a/src/main/java/net/minecraft/server/BlockCrops.java b/src/main/java/net/minecraft/server/BlockCrops.java
-index e9c5d1465..9015affc5 100644
+index 128096453..fea81de16 100644
--- a/src/main/java/net/minecraft/server/BlockCrops.java
+++ b/src/main/java/net/minecraft/server/BlockCrops.java
@@ -0,0 +0,0 @@ public class BlockCrops extends BlockPlant implements IBlockFragilePlantElement
@@ -17,11 +17,11 @@ index e9c5d1465..9015affc5 100644
super.b(world, blockposition, iblockdata, random);
- if (world.getLightLevel(blockposition.up()) >= 9) {
+ if (world.isLightLevel(blockposition.up(), 9)) { // Paper
- int i = this.z(iblockdata);
+ int i = this.y(iblockdata);
if (i < this.g()) {
diff --git a/src/main/java/net/minecraft/server/BlockGrass.java b/src/main/java/net/minecraft/server/BlockGrass.java
-index fb1bf80b8..8b43e6070 100644
+index d0fa96651..62ec2ad31 100644
--- a/src/main/java/net/minecraft/server/BlockGrass.java
+++ b/src/main/java/net/minecraft/server/BlockGrass.java
@@ -0,0 +0,0 @@ public class BlockGrass extends Block implements IBlockFragilePlantElement {
@@ -65,7 +65,7 @@ index fb1bf80b8..8b43e6070 100644
// world.setTypeUpdate(blockposition1, Blocks.GRASS.getBlockData());
org.bukkit.World bworld = world.getWorld();
diff --git a/src/main/java/net/minecraft/server/BlockSapling.java b/src/main/java/net/minecraft/server/BlockSapling.java
-index f463b7113..89458cd77 100644
+index b22949368..cb1e5a2a3 100644
--- a/src/main/java/net/minecraft/server/BlockSapling.java
+++ b/src/main/java/net/minecraft/server/BlockSapling.java
@@ -0,0 +0,0 @@ public class BlockSapling extends BlockPlant implements IBlockFragilePlantElemen
@@ -78,7 +78,7 @@ index f463b7113..89458cd77 100644
world.captureTreeGeneration = true;
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/BlockStem.java b/src/main/java/net/minecraft/server/BlockStem.java
-index c74b6284f..bb96e164e 100644
+index 7492110fa..8d1630ac0 100644
--- a/src/main/java/net/minecraft/server/BlockStem.java
+++ b/src/main/java/net/minecraft/server/BlockStem.java
@@ -0,0 +0,0 @@ public class BlockStem extends BlockPlant implements IBlockFragilePlantElement {
@@ -118,15 +118,15 @@ index 21539ff9b..1585bf3bc 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java
-index bf059a746..003e06156 100644
+index 2b619ab93..372890b5d 100644
--- a/src/main/java/net/minecraft/server/EntityZombie.java
+++ b/src/main/java/net/minecraft/server/EntityZombie.java
@@ -0,0 +0,0 @@ public class EntityZombie extends EntityMonster {
int j1 = j + MathHelper.nextInt(this.random, 7, 40) * MathHelper.nextInt(this.random, -1, 1);
int k1 = k + MathHelper.nextInt(this.random, 7, 40) * MathHelper.nextInt(this.random, -1, 1);
-- if (this.world.getType(new BlockPosition(i1, j1 - 1, k1)).r() && this.world.getLightLevel(new BlockPosition(i1, j1, k1)) < 10) {
-+ if (this.world.getType(new BlockPosition(i1, j1 - 1, k1)).r() && !this.world.isLightLevel(new BlockPosition(i1, j1, k1), 10)) { // Paper
+- if (this.world.getType(new BlockPosition(i1, j1 - 1, k1)).q() && this.world.getLightLevel(new BlockPosition(i1, j1, k1)) < 10) {
++ if (this.world.getType(new BlockPosition(i1, j1 - 1, k1)).q() && !this.world.isLightLevel(new BlockPosition(i1, j1, k1), 10)) { // Paper
entityzombie.setPosition((double) i1, (double) j1, (double) k1);
if (!this.world.isPlayerNearby((double) i1, (double) j1, (double) k1, 7.0D) && this.world.a(entityzombie.getBoundingBox(), (Entity) entityzombie) && this.world.getCubes(entityzombie, entityzombie.getBoundingBox()).isEmpty() && !this.world.containsLiquid(entityzombie.getBoundingBox())) {
this.world.addEntity(entityzombie, CreatureSpawnEvent.SpawnReason.REINFORCEMENTS); // CraftBukkit
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 1df118011d..a1220d23c7 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
@@ -19,7 +19,7 @@ index 3a942c763..3bd29650c 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index b3911fa9f..fa940ad31 100644
+index 5428220a0..3177c17c4 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
@@ -31,7 +31,7 @@ index b3911fa9f..fa940ad31 100644
public ScoreboardTeamBase aW() {
if (!this.world.paperConfig.nonPlayerEntitiesOnScoreboards && !(this instanceof EntityHuman)) { return null; } // Paper
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index 25c02c727..353e73b15 100644
+index 81f8e0fd0..b5284cecd 100644
--- 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 {
diff --git a/Spigot-Server-Patches/POM-Changes.patch b/Spigot-Server-Patches/POM-Changes.patch
index 8aec163857..885c5d99dc 100644
--- a/Spigot-Server-Patches/POM-Changes.patch
+++ b/Spigot-Server-Patches/POM-Changes.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] POM Changes
diff --git a/pom.xml b/pom.xml
-index 4f14d6f41..a833892e3 100644
+index 31cb11194..167bc0ac2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -0,0 +0,0 @@
@@ -17,7 +17,7 @@ index 4f14d6f41..a833892e3 100644
+ com.destroystokyo.paper
+ paper
jar
- 1.12-pre2-SNAPSHOT
+ 1.12-pre5-SNAPSHOT
- Spigot
- http://www.spigotmc.org
+ Paper
diff --git a/Spigot-Server-Patches/Player-Tab-List-and-Title-APIs.patch b/Spigot-Server-Patches/Player-Tab-List-and-Title-APIs.patch
index 06fb66ee34..8dc6d590e0 100644
--- a/Spigot-Server-Patches/Player-Tab-List-and-Title-APIs.patch
+++ b/Spigot-Server-Patches/Player-Tab-List-and-Title-APIs.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Player Tab List and Title APIs
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
-index 5f5b3825d..242efb0b9 100644
+index 0663b07ca..f5ef1ba31 100644
--- a/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
+++ b/src/main/java/net/minecraft/server/PacketPlayOutPlayerListHeaderFooter.java
@@ -0,0 +0,0 @@ import java.io.IOException;
@@ -78,7 +78,7 @@ index 7bcafa8bb..4f6c1c2e7 100644
if (this.a == PacketPlayOutTitle.EnumTitleAction.TIMES) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index efcf383e7..b1c06388b 100644
+index 21c729026..a7e011404 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 @@
diff --git a/Spigot-Server-Patches/Player-affects-spawning-API.patch b/Spigot-Server-Patches/Player-affects-spawning-API.patch
index 3edde04b7e..99598a9ac1 100644
--- a/Spigot-Server-Patches/Player-affects-spawning-API.patch
+++ b/Spigot-Server-Patches/Player-affects-spawning-API.patch
@@ -5,11 +5,11 @@ Subject: [PATCH] Player affects spawning API
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
-index fc3d05394..b4507fe0c 100644
+index 186e2df8b..dcd2ac6ab 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -0,0 +0,0 @@ public abstract class EntityHuman extends EntityLiving {
- private final ItemCooldown bX;
+ private final ItemCooldown bW;
@Nullable
public EntityFishingHook hookedFish;
+ public boolean affectsSpawning = true;
@@ -17,7 +17,7 @@ index fc3d05394..b4507fe0c 100644
// CraftBukkit start
public boolean fauxSleeping;
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
-index be3422adc..2802cc062 100644
+index bb27f5dd8..65b7b33be 100644
--- 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 {
@@ -44,7 +44,7 @@ index dcc251e31..d8344ddc9 100644
return false;
}
diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
-index 4c65dc0a9..c56a8e9c2 100644
+index a599a043d..1c7c187c7 100644
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
@@ -0,0 +0,0 @@ public final class SpawnerCreature {
@@ -57,7 +57,7 @@ index 4c65dc0a9..c56a8e9c2 100644
j = MathHelper.floor(entityhuman.locZ / 16.0D);
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index 1ff2263eb..b87273aca 100644
+index 6b404e385..3d114cfea 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 {
@@ -70,7 +70,7 @@ index 1ff2263eb..b87273aca 100644
if (d3 < 0.0D || d4 < d3 * d3) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
-index 433aafb33..c5924a2be 100644
+index 06f33f80e..6f042b620 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 {
diff --git a/Spigot-Server-Patches/Properly-fix-item-duplication-bug.patch b/Spigot-Server-Patches/Properly-fix-item-duplication-bug.patch
index d4b19cabf7..2a07baa5b2 100644
--- a/Spigot-Server-Patches/Properly-fix-item-duplication-bug.patch
+++ b/Spigot-Server-Patches/Properly-fix-item-duplication-bug.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Properly fix item duplication bug
Credit to prplz for figuring out the real issue
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
-index 8d48d7c0c..eca718513 100644
+index 3906d4bf7..0cd711c3e 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -0,0 +0,0 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -19,7 +19,7 @@ index 8d48d7c0c..eca718513 100644
public void reset() {
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index 13cce8904..563781256 100644
+index 9ee2cd17d..32baff5e2 100644
--- 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 {
diff --git a/Spigot-Server-Patches/Properly-handle-async-calls-to-restart-the-server.patch b/Spigot-Server-Patches/Properly-handle-async-calls-to-restart-the-server.patch
index 47a8220bed..c97ff8a646 100644
--- a/Spigot-Server-Patches/Properly-handle-async-calls-to-restart-the-server.patch
+++ b/Spigot-Server-Patches/Properly-handle-async-calls-to-restart-the-server.patch
@@ -30,7 +30,7 @@ will have plugins and worlds saving to the disk has a high potential to result
in corruption/dataloss.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 40514d042..f0743e6cc 100644
+index 42769d164..6c5b40f32 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 implements ICommandListener, Runnable, IAs
@@ -78,7 +78,7 @@ index 40514d042..f0743e6cc 100644
return this.serverThread;
}
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
-index 072de1f71..4483beeba 100644
+index 772670a03..34f113ee5 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 {
@@ -107,7 +107,7 @@ index 072de1f71..4483beeba 100644
// CraftBukkit start
public void sendMessage(IChatBaseComponent[] iChatBaseComponents) {
diff --git a/src/main/java/org/spigotmc/RestartCommand.java b/src/main/java/org/spigotmc/RestartCommand.java
-index 49768734d..d51636c8e 100644
+index 49768734d..e1bc3e64e 100644
--- a/src/main/java/org/spigotmc/RestartCommand.java
+++ b/src/main/java/org/spigotmc/RestartCommand.java
@@ -0,0 +0,0 @@ public class RestartCommand extends Command
@@ -115,6 +115,8 @@ index 49768734d..d51636c8e 100644
try
{
- if ( script.isFile() )
+- {
+- System.out.println( "Attempting to restart with " + SpigotConfig.restartScript );
+ // Paper - extract method and cleanup
+ boolean isRestarting = addShutdownHook(script);
+ if (isRestarting) {
@@ -122,39 +124,11 @@ index 49768734d..d51636c8e 100644
+ } else {
+ System.out.println( "Startup script '" + SpigotConfig.restartScript + "' does not exist! Stopping server." );
+ }
-+
-+ // Stop the watchdog
-+ WatchdogThread.doStop();
-+
-+ shutdownServer(isRestarting);
-+ } catch ( Exception ex )
-+ {
-+ ex.printStackTrace();
-+ }
-+ }
-+
-+ // Paper start - sync copied from above with minor changes, async added
-+ private static void shutdownServer(boolean isRestarting)
-+ {
-+ if (MinecraftServer.getServer().isMainThread())
-+ {
-+ // Kick all players
-+ for ( EntityPlayer p : com.google.common.collect.ImmutableList.copyOf( MinecraftServer.getServer().getPlayerList().players ) )
-+ {
-+ p.playerConnection.disconnect(SpigotConfig.restartMessage);
-+ }
-+ // Give the socket a chance to send the packets
-+ try
-+ {
-+ Thread.sleep( 100 );
-+ } catch ( InterruptedException ex )
- {
-- System.out.println( "Attempting to restart with " + SpigotConfig.restartScript );
-+ }
- // Disable Watchdog
- WatchdogThread.doStop();
-+ closeSocket();
++ // Stop the watchdog
++ WatchdogThread.doStop();
- // Kick all players
- for ( EntityPlayer p : (List< EntityPlayer>) MinecraftServer.getServer().getPlayerList().players )
@@ -170,14 +144,7 @@ index 49768734d..d51636c8e 100644
- }
- // Close the socket so we can rebind with the new process
- MinecraftServer.getServer().getServerConnection().b();
-+ // Actually shutdown
-+ try
-+ {
-+ MinecraftServer.getServer().stop();
-+ } catch ( Throwable t )
-+ {
-+ }
-
+-
- // Give time for it to kick in
- try
- {
@@ -185,8 +152,12 @@ index 49768734d..d51636c8e 100644
- } catch ( InterruptedException ex )
- {
- }
-+ // Actually stop the JVM
-+ System.exit(0);
++ shutdownServer(isRestarting);
++ } catch ( Exception ex )
++ {
++ ex.printStackTrace();
++ }
++ }
- // Actually shutdown
- try
@@ -195,10 +166,23 @@ index 49768734d..d51636c8e 100644
- } catch ( Throwable t )
- {
- }
-+ } else
++ // Paper start - sync copied from above with minor changes, async added
++ private static void shutdownServer(boolean isRestarting)
++ {
++ if (MinecraftServer.getServer().isMainThread())
+ {
-+ // Mark the server to shutdown at the end of the tick
-+ MinecraftServer.getServer().safeShutdown(isRestarting);
++ // Kick all players
++ for ( EntityPlayer p : com.google.common.collect.ImmutableList.copyOf( MinecraftServer.getServer().getPlayerList().players ) )
++ {
++ p.playerConnection.disconnect(SpigotConfig.restartMessage);
++ }
++ // Give the socket a chance to send the packets
++ try
++ {
++ Thread.sleep( 100 );
++ } catch ( InterruptedException ex )
++ {
++ }
- // This will be done AFTER the server has completely halted
- Thread shutdownHook = new Thread()
@@ -225,19 +209,24 @@ index 49768734d..d51636c8e 100644
- }
- }
- };
++ closeSocket();
- shutdownHook.setDaemon( true );
- Runtime.getRuntime().addShutdownHook( shutdownHook );
- } else
-+ // wait 10 seconds to see if we're actually going to try shutdown
++ // Actually shutdown
+ try
-+ {
-+ Thread.sleep(10000);
-+ }
-+ catch (InterruptedException ignored)
{
- System.out.println( "Startup script '" + SpigotConfig.restartScript + "' does not exist! Stopping server." );
--
++ MinecraftServer.getServer().stop();
++ } catch ( Throwable t )
++ {
++ }
++ } else
++ {
++ // Mark the server to shutdown at the end of the tick
++ MinecraftServer.getServer().safeShutdown(isRestarting);
+
- // Actually shutdown
- try
- {
@@ -245,6 +234,14 @@ index 49768734d..d51636c8e 100644
- } catch ( Throwable t )
- {
- }
++
++ // wait 10 seconds to see if we're actually going to try shutdown
++ try
++ {
++ Thread.sleep(10000);
++ }
++ catch (InterruptedException ignored)
++ {
}
+
+ // Check if we've actually hit a state where the server is going to safely shutdown
diff --git a/Spigot-Server-Patches/Remove-the-Vanilla-Method-Profiler.patch b/Spigot-Server-Patches/Remove-the-Vanilla-Method-Profiler.patch
index 9a29a14155..0e92e94608 100644
--- a/Spigot-Server-Patches/Remove-the-Vanilla-Method-Profiler.patch
+++ b/Spigot-Server-Patches/Remove-the-Vanilla-Method-Profiler.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Remove the Vanilla Method Profiler
Spigot rebrought this back after it was removed for years due to the performance hit.
-It is unknown if the JIT will optimize it out as effeciently with how it was
+It is unknown if the JIT will optimize it out as efficiently with how it was
added, so we do not want any risk of performance degredation.
Paper has a proper Timings system that makes the Vanilla Method profiler obsolete and inferior.
diff --git a/Spigot-Server-Patches/ShulkerBox-Dupe-Prevention.patch b/Spigot-Server-Patches/ShulkerBox-Dupe-Prevention.patch
index c4d667bae0..f1b7a84a8e 100644
--- a/Spigot-Server-Patches/ShulkerBox-Dupe-Prevention.patch
+++ b/Spigot-Server-Patches/ShulkerBox-Dupe-Prevention.patch
@@ -7,7 +7,7 @@ This ensures that Shulker Boxes can never drop their contents twice, and
that the inventory is cleared incase it some how also got saved to the world.
diff --git a/src/main/java/net/minecraft/server/BlockShulkerBox.java b/src/main/java/net/minecraft/server/BlockShulkerBox.java
-index e4e0eae60..3fe3af1c2 100644
+index 717dc3245..96a279cb1 100644
--- a/src/main/java/net/minecraft/server/BlockShulkerBox.java
+++ b/src/main/java/net/minecraft/server/BlockShulkerBox.java
@@ -0,0 +0,0 @@ public class BlockShulkerBox extends BlockTileEntity {
diff --git a/Spigot-Server-Patches/Timings-v2.patch b/Spigot-Server-Patches/Timings-v2.patch
index f2da22f34a..cd29814aa1 100644
--- a/Spigot-Server-Patches/Timings-v2.patch
+++ b/Spigot-Server-Patches/Timings-v2.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Timings v2
diff --git a/pom.xml b/pom.xml
-index 33bbeb2bd..0cbe47cb6 100644
+index 167bc0ac2..6b73c55f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -0,0 +0,0 @@
@@ -441,7 +441,7 @@ index 5ab2cf6ee..b5795b6d3 100644
+ }
}
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
-index 0ee47df3f..ba3913667 100644
+index 7c39edca8..6c1c5e566 100644
--- a/src/main/java/net/minecraft/server/Block.java
+++ b/src/main/java/net/minecraft/server/Block.java
@@ -0,0 +0,0 @@ public class Block {
@@ -531,7 +531,7 @@ index 9dcab42de..c1b0d6cea 100644
this.chunkLoader.a(this.world, chunk);
} catch (IOException ioexception) {
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
-index fe387e218..6550686ee 100644
+index b23de7663..fe64ee4aa 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -0,0 +0,0 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
@@ -571,7 +571,7 @@ index fe387e218..6550686ee 100644
// return chunk; // CraftBukkit
}
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
-index 30538d8ec..840ffeb93 100644
+index 70fde368f..c56aa5c19 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.io.PrintStream;
@@ -624,7 +624,7 @@ index 30538d8ec..840ffeb93 100644
return waitable.get();
} catch (java.util.concurrent.ExecutionException e) {
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index bae717b18..c6b7d6c22 100644
+index ef63b5d3b..0e70cdf6f 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.block.BlockFace;
@@ -663,7 +663,7 @@ index bae717b18..c6b7d6c22 100644
public void recalcPosition() {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index 3a92c468c..2c22b6ca2 100644
+index bf2761d53..5a2dbe5ff 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;
@@ -765,7 +765,7 @@ index c840f6761..14504cbcc 100644
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 39318aaf1..e847f3f1a 100644
+index 249fccce9..3629cbc47 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.Bukkit;
@@ -1012,7 +1012,7 @@ index eeac34998..e4ed2e991 100644
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
-index 1dbdcfa57..63ea04fb4 100644
+index 3bcabb195..7c4fe706a 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;
@@ -1056,7 +1056,7 @@ index 1dbdcfa57..63ea04fb4 100644
}
- org.bukkit.craftbukkit.SpigotTimings.playerCommandTimer.stopTiming(); // Spigot
+ MinecraftTimings.playerCommandTimer.stopTiming(); // Paper
- // this.minecraftServer.getCommandHandler().b(this.player, s);
+ // this.minecraftServer.getCommandHandler().a(this.player, s);
// CraftBukkit end
}
diff --git a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java
@@ -1090,7 +1090,7 @@ index f74b06794..1fc632e0c 100644
+ // Paper end
}
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
-index f79683a60..4aaf287ae 100644
+index 35f421164..4a8927798 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -0,0 +0,0 @@
@@ -1176,7 +1176,7 @@ index 591f4ad7f..e02f0c442 100644
private static final RegistryMaterials> f = new RegistryMaterials();
protected World world;
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index a366b2d70..eafb76003 100644
+index 41f0ac2bf..919f041d9 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -0,0 +0,0 @@ import com.google.common.collect.Maps;
@@ -1257,32 +1257,32 @@ index a366b2d70..eafb76003 100644
this.methodProfiler.b();
}
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
- entity.ticksLived++;
- entity.inactiveTick();
- } else {
-- entity.tickTimer.startTiming(); // Spigot
- // CraftBukkit end
- entity.M = entity.locX;
- entity.N = entity.locY;
+ }
+ // CraftBukkit end
+
+- entity.tickTimer.startTiming(); // Spigot
+ entity.M = entity.locX;
+ entity.N = entity.locY;
+ entity.O = entity.locZ;
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
- entity.lastPitch = entity.pitch;
- if (flag && entity.aa) {
- ++entity.ticksLived;
-+ ++co.aikar.timings.TimingHistory.activatedEntityTicks; // Paper
- if (entity.isPassenger()) {
- entity.leaveVehicle();
- } else {
+ entity.lastPitch = entity.pitch;
+ if (flag && entity.aa) {
+ ++entity.ticksLived;
++ ++co.aikar.timings.TimingHistory.activatedEntityTicks; // Paper
+ if (entity.isPassenger()) {
+ entity.leaveVehicle();
+ } else {
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
- }
}
}
--
-- entity.tickTimer.stopTiming(); // Spigot
}
+- entity.tickTimer.stopTiming(); // Spigot
+-
}
+ public boolean b(AxisAlignedBB axisalignedbb) {
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
-index d91de898f..af722bd00 100644
+index b924dad97..63c7d4402 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -0,0 +0,0 @@ public class WorldServer extends World implements IAsyncTaskHandler {
diff --git a/Spigot-Server-Patches/Vanished-players-don-t-have-rights.patch b/Spigot-Server-Patches/Vanished-players-don-t-have-rights.patch
index ad5a75a4c4..d114228c9f 100644
--- a/Spigot-Server-Patches/Vanished-players-don-t-have-rights.patch
+++ b/Spigot-Server-Patches/Vanished-players-don-t-have-rights.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Vanished players don't have rights
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index ca05b3310..916c63ef7 100644
+index c5c701f08..902df7ac6 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -0,0 +0,0 @@ public abstract class Entity implements ICommandListener {
@@ -31,7 +31,7 @@ index c0d97f154..363209170 100644
IBlockData iblockdata1 = this.a.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityhuman);
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index cfdd04d8b..42cfbe096 100644
+index 7c12338a5..8537f65fd 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 {
@@ -69,7 +69,7 @@ index cfdd04d8b..42cfbe096 100644
List list = this.getEntities((Entity) null, axisalignedbb);
@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess {
- AxisAlignedBB axisalignedbb = flag ? null : block.getBlockData().c(this, blockposition);
+ AxisAlignedBB axisalignedbb = flag ? null : block.getBlockData().d(this, blockposition);
// CraftBukkit start - store default return
- boolean defaultReturn = axisalignedbb != Block.k && !this.a(axisalignedbb.a(blockposition), entity) ? false : (iblockdata.getMaterial() == Material.ORIENTABLE && block == Blocks.ANVIL ? true : iblockdata.getMaterial().isReplaceable() && block.canPlace(this, blockposition, enumdirection));
diff --git a/scripts/upstreamMerge.sh b/scripts/upstreamMerge.sh
index 11dd71dea3..aa673419d8 100755
--- a/scripts/upstreamMerge.sh
+++ b/scripts/upstreamMerge.sh
@@ -17,7 +17,7 @@ update Bukkit
update CraftBukkit
update Spigot
-if [[ "$2" = "all" ]] ; then
+if [[ "$2" = "all" || "$2" = "a" ]] ; then
update BuildData
update Paperclip
fi
diff --git a/work/BuildData b/work/BuildData
index f4d4fd9c0f..ceb1b906af 160000
--- a/work/BuildData
+++ b/work/BuildData
@@ -1 +1 @@
-Subproject commit f4d4fd9c0ff899191e17fb7f7a3673f5529c0e05
+Subproject commit ceb1b906afeaa302a4038f73c2d2029914c6a6b2
diff --git a/work/Bukkit b/work/Bukkit
index 211c15e446..60a4fa84ba 160000
--- a/work/Bukkit
+++ b/work/Bukkit
@@ -1 +1 @@
-Subproject commit 211c15e44665dd0365460fb3330411dca6dbbe53
+Subproject commit 60a4fa84ba7a6254d77017501a900b148aad2bfe
diff --git a/work/CraftBukkit b/work/CraftBukkit
index 3ecbb59cbb..c7920f4302 160000
--- a/work/CraftBukkit
+++ b/work/CraftBukkit
@@ -1 +1 @@
-Subproject commit 3ecbb59cbb9e20064d04628d26387742705ab9ac
+Subproject commit c7920f4302bce2042aa9c5d1d121e488cb88f7f0
diff --git a/work/Spigot b/work/Spigot
index 1ffab67d68..662916298a 160000
--- a/work/Spigot
+++ b/work/Spigot
@@ -1 +1 @@
-Subproject commit 1ffab67d68300a10e9c01d0ae2f87fba30e82a92
+Subproject commit 662916298a344f788a6e3cafaa90f06ad48232d2