diff --git a/Paper b/Paper index c8028d1c7..cf82dad39 160000 --- a/Paper +++ b/Paper @@ -1 +1 @@ -Subproject commit c8028d1c76fa18eb52a0bdd8f295fe0232d9385f +Subproject commit cf82dad399cf3bfb6b4cdd54f264d4563633940e diff --git a/current-paper b/current-paper index c60d224ff..7be70fceb 100644 --- a/current-paper +++ b/current-paper @@ -1 +1 @@ -1.15.2--0c6830d7565eff99b423b84111c1159be356df13 +1.15.2--4b2e1d61714587ba29125b8ceb75a8cbb6c65824 diff --git a/patches/server/0004-Add-language-asset-purpur.lang.patch b/patches/server/0004-Add-language-asset-purpur.lang.patch index 189b9361c..e898aec2f 100644 --- a/patches/server/0004-Add-language-asset-purpur.lang.patch +++ b/patches/server/0004-Add-language-asset-purpur.lang.patch @@ -1,4 +1,4 @@ -From 219ff737bfd7175c99cc7ab05733cd32ebee471d Mon Sep 17 00:00:00 2001 +From 2eebb2917735c5dbb2fee924861f3da007d84acf Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 26 Mar 2020 13:17:09 -0500 Subject: [PATCH] Add language asset purpur.lang @@ -12,10 +12,10 @@ Subject: [PATCH] Add language asset purpur.lang create mode 100644 src/main/resources/purpur.lang diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 0f9bca8b8..90c5dc1d6 100644 +index d60f659b3..4b88a74ff 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -1560,6 +1560,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -1561,6 +1561,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public void a(IChatBaseComponent ichatbasecomponent, ChatMessageType chatmessagetype) { diff --git a/patches/server/0007-Ridables.patch b/patches/server/0007-Ridables.patch index 8136a830e..ae7f0dc5c 100644 --- a/patches/server/0007-Ridables.patch +++ b/patches/server/0007-Ridables.patch @@ -1,4 +1,4 @@ -From a4bd5ae6b15eae7ff3ef922097ac77434a3b26b9 Mon Sep 17 00:00:00 2001 +From 03e8fc205943d49907e5d9604466408dc809681b Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 6 Feb 2020 19:53:59 -0600 Subject: [PATCH] Ridables @@ -3366,10 +3366,10 @@ index 0357c9da9..98a657cec 100644 this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)); diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 62f1e4c5f..a657522cc 100644 +index 4b88a74ff..3970576cf 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -1291,6 +1291,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -1292,6 +1292,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public void a(float f, float f1, boolean flag, boolean flag1) { @@ -3377,7 +3377,7 @@ index 62f1e4c5f..a657522cc 100644 if (this.isPassenger()) { if (f >= -1.0F && f <= 1.0F) { this.aZ = f; -@@ -1303,7 +1304,6 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -1304,7 +1305,6 @@ public class EntityPlayer extends EntityHuman implements ICrafting { this.jumping = flag; this.setSneaking(flag1); } diff --git a/patches/server/0031-Signs-allow-color-codes.patch b/patches/server/0031-Signs-allow-color-codes.patch index 9424ca1ac..676a2e9df 100644 --- a/patches/server/0031-Signs-allow-color-codes.patch +++ b/patches/server/0031-Signs-allow-color-codes.patch @@ -1,4 +1,4 @@ -From 6736a689133e386f0ec23a3f9c1c95b55fc6d8b8 Mon Sep 17 00:00:00 2001 +From 8befdaeb526895946d1ac88ac55dada3011d2317 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 6 Jun 2019 17:40:30 -0500 Subject: [PATCH] Signs allow color codes @@ -11,10 +11,10 @@ Subject: [PATCH] Signs allow color codes 4 files changed, 25 insertions(+) diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index a657522cc..c3dc8ada8 100644 +index 3970576cf..b66f9cd2c 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -1131,6 +1131,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -1132,6 +1132,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @Override public void openSign(TileEntitySign tileentitysign) { tileentitysign.a((EntityHuman) this); diff --git a/patches/server/0037-Implement-AFK-API.patch b/patches/server/0037-Implement-AFK-API.patch index 8102416c9..23455f5d4 100644 --- a/patches/server/0037-Implement-AFK-API.patch +++ b/patches/server/0037-Implement-AFK-API.patch @@ -1,4 +1,4 @@ -From dfcd5e0469a2c910964d8f9b2071b925625be773 Mon Sep 17 00:00:00 2001 +From 08028ae0a027ecced21386341be053dc433ec59f Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 8 Aug 2019 15:29:15 -0500 Subject: [PATCH] Implement AFK API @@ -50,10 +50,10 @@ index 27cfc6654..d62174e9c 100644 super(EntityTypes.PLAYER, world); this.bV = ItemStack.a; diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index c3dc8ada8..0d57cff87 100644 +index b66f9cd2c..0834ca328 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -1624,8 +1624,51 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -1625,8 +1625,51 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public void resetIdleTimer() { this.cj = SystemUtils.getMonotonicMillis(); diff --git a/patches/server/0043-Players-should-not-cram-to-death.patch b/patches/server/0043-Players-should-not-cram-to-death.patch index 27b8116c5..bc8f087f3 100644 --- a/patches/server/0043-Players-should-not-cram-to-death.patch +++ b/patches/server/0043-Players-should-not-cram-to-death.patch @@ -1,4 +1,4 @@ -From b92e256e7ef06b9ac02a78cd870f085556d9008d Mon Sep 17 00:00:00 2001 +From 8ffeee36c43f81997d2494e86506bc642ff6b614 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 21 Jul 2019 18:01:46 -0500 Subject: [PATCH] Players should not cram to death @@ -8,10 +8,10 @@ Subject: [PATCH] Players should not cram to death 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 40a2308e4..2453f0149 100644 +index 0834ca328..5a64da6a3 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java -@@ -1104,7 +1104,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -1105,7 +1105,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @Override public boolean isInvulnerable(DamageSource damagesource) { diff --git a/patches/server/0062-Add-moon-phase-API.patch b/patches/server/0062-Add-moon-phase-API.patch index b68468a73..cce87612b 100644 --- a/patches/server/0062-Add-moon-phase-API.patch +++ b/patches/server/0062-Add-moon-phase-API.patch @@ -1,4 +1,4 @@ -From 0007148e4418e7676942bae638381c265f9df97c Mon Sep 17 00:00:00 2001 +From 634656de202a96a0b4004e5a7820b014b315641c Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 1 Feb 2020 22:22:16 -0600 Subject: [PATCH] Add moon phase API @@ -8,10 +8,10 @@ Subject: [PATCH] Add moon phase API 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 874240d9d..08175e300 100644 +index 7230ddbf6..2c2176919 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2463,6 +2463,14 @@ public class CraftWorld implements World { +@@ -2462,6 +2462,14 @@ public class CraftWorld implements World { return new CraftDragonBattle(((WorldProviderTheEnd) worldProvider).o()); // PAIL rename getDragonBattle } diff --git a/patches/server/0063-Add-getPlacementBlockData-to-World.patch b/patches/server/0063-Add-getPlacementBlockData-to-World.patch index 958491c5a..928ef4018 100644 --- a/patches/server/0063-Add-getPlacementBlockData-to-World.patch +++ b/patches/server/0063-Add-getPlacementBlockData-to-World.patch @@ -1,4 +1,4 @@ -From 906e4e33c188c9ab482b9de4adea2b605b21a775 Mon Sep 17 00:00:00 2001 +From dc561d5d0f39071ea710f243bfe8581ebb71de5d Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 8 Feb 2020 23:30:17 -0600 Subject: [PATCH] Add getPlacementBlockData to World @@ -66,10 +66,10 @@ index 9c9b93f28..74a722cce 100644 public static final Item bZ = a(Blocks.CHEST, CreativeModeTab.c); public static final Item ca = a(Blocks.DIAMOND_ORE, CreativeModeTab.b); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 08175e300..177eec1c6 100644 +index 2c2176919..1524d0ed2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2469,6 +2469,11 @@ public class CraftWorld implements World { +@@ -2468,6 +2468,11 @@ public class CraftWorld implements World { public net.pl3x.purpur.MoonPhase getMoonPhase() { return net.pl3x.purpur.MoonPhase.getPhase(getFullTime() / 24000L); } diff --git a/patches/server/0075-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch b/patches/server/0075-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch index 854cbcc26..9af303bb7 100644 --- a/patches/server/0075-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch +++ b/patches/server/0075-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch @@ -1,4 +1,4 @@ -From 1a9eb647458d4f89ab12c198f611534dbff7904c Mon Sep 17 00:00:00 2001 +From d93cab923b90c3110303ddc0fa5639fa9bb766e9 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 19 Oct 2019 01:42:50 -0500 Subject: [PATCH] Fix SpawnChangeEvent not firing for all use-cases @@ -25,10 +25,10 @@ index 4c04e2120..7356d794d 100644 public boolean a(EntityHuman entityhuman, BlockPosition blockposition) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 177eec1c6..b32031815 100644 +index 1524d0ed2..4ba2ec7df 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -385,12 +385,16 @@ public class CraftWorld implements World { +@@ -384,12 +384,16 @@ public class CraftWorld implements World { @Override public boolean setSpawnLocation(int x, int y, int z) { try { diff --git a/patches/server/0089-Add-option-to-disable-saving-projectiles-to-disk.patch b/patches/server/0089-Add-option-to-disable-saving-projectiles-to-disk.patch index f1c2f6ef6..4e50408e8 100644 --- a/patches/server/0089-Add-option-to-disable-saving-projectiles-to-disk.patch +++ b/patches/server/0089-Add-option-to-disable-saving-projectiles-to-disk.patch @@ -1,4 +1,4 @@ -From 1940aae5b2ec54b55798f99c4aa15b14f7d02d1a Mon Sep 17 00:00:00 2001 +From 91ce35606f22d364618692367be15758f0b27e56 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Tue, 18 Feb 2020 20:07:08 -0600 Subject: [PATCH] Add option to disable saving projectiles to disk @@ -15,10 +15,10 @@ Subject: [PATCH] Add option to disable saving projectiles to disk 8 files changed, 58 insertions(+) diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -index 82264bf65..10764dd10 100644 +index 1685237df..a8c0f9216 100644 --- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java +++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java -@@ -441,6 +441,7 @@ public class ChunkRegionLoader { +@@ -468,6 +468,7 @@ public class ChunkRegionLoader { while (iterator1.hasNext()) { Entity entity = (Entity) iterator1.next(); diff --git a/patches/server/0103-Optimize-Chunk-Ticks.patch b/patches/server/0103-Optimize-Chunk-Ticks.patch index 80145f9d7..1c5053e96 100644 --- a/patches/server/0103-Optimize-Chunk-Ticks.patch +++ b/patches/server/0103-Optimize-Chunk-Ticks.patch @@ -1,4 +1,4 @@ -From 8c0c22b4f9bcaa2c8671de1f4cefe082c18b9692 Mon Sep 17 00:00:00 2001 +From 996bfc559c8d08e6ba40434b6dd1ef37778779e9 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 2 Apr 2020 00:28:06 -0500 Subject: [PATCH] Optimize Chunk Ticks @@ -9,10 +9,10 @@ Subject: [PATCH] Optimize Chunk Ticks 2 files changed, 25 insertions(+), 39 deletions(-) diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java -index 8ca6adbac..389b42afa 100644 +index 54e89c9cc..9af2c5c74 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java -@@ -771,11 +771,12 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -781,11 +781,12 @@ public class ChunkProviderServer extends IChunkProvider { int k = this.world.getGameRules().getInt(GameRules.RANDOM_TICK_SPEED); BlockPosition blockposition = this.world.getSpawn(); // CraftBukkit start - Other mob type spawn tick rate @@ -30,7 +30,7 @@ index 8ca6adbac..389b42afa 100644 // CraftBukkit end this.world.getMethodProfiler().enter("naturalSpawnCount"); -@@ -821,40 +822,11 @@ public class ChunkProviderServer extends IChunkProvider { +@@ -831,40 +832,11 @@ public class ChunkProviderServer extends IChunkProvider { if (flag1 && (this.allowMonsters || this.allowAnimals) && this.world.getWorldBorder().isInBounds(chunk.getPos()) && !this.playerChunkMap.isOutsideOfRange(playerchunk, chunkcoordintpair, true)) { // Spigot // Paper - optimise isOutsideOfRange this.world.getMethodProfiler().enter("spawner"); this.world.timings.mobSpawn.startTiming(); // Spigot diff --git a/patches/server/0113-Player-invulnerabilities.patch b/patches/server/0113-Player-invulnerabilities.patch index e15ccb886..f37df42d3 100644 --- a/patches/server/0113-Player-invulnerabilities.patch +++ b/patches/server/0113-Player-invulnerabilities.patch @@ -1,4 +1,4 @@ -From 62f89ef6290a97c5149e838728a711a2766356ad Mon Sep 17 00:00:00 2001 +From 4f5c6cd5333bd2f911b097d038ab0b87e0b5a166 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 2 May 2020 20:55:44 -0500 Subject: [PATCH] Player invulnerabilities @@ -12,7 +12,7 @@ Subject: [PATCH] Player invulnerabilities 5 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index c4a6f94a3..d6415a506 100644 +index 5a64da6a3..265bb0757 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -131,6 +131,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -24,7 +24,7 @@ index c4a6f94a3..d6415a506 100644 } // Yes, this doesn't match Vanilla, but it's the best we can do for now. -@@ -726,6 +728,12 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -727,6 +729,12 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } @@ -37,7 +37,7 @@ index c4a6f94a3..d6415a506 100644 @Override public boolean damageEntity(DamageSource damagesource, float f) { if (this.isInvulnerable(damagesource)) { -@@ -733,7 +741,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -734,7 +742,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } else { boolean flag = this.server.m() && this.canPvP() && "fall".equals(damagesource.translationIndex); @@ -46,7 +46,7 @@ index c4a6f94a3..d6415a506 100644 return false; } else { if (damagesource instanceof EntityDamageSource) { -@@ -1000,6 +1008,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -1001,6 +1009,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { PlayerChangedWorldEvent changeEvent = new PlayerChangedWorldEvent(this.getBukkitEntity(), worldserver.getWorld()); this.world.getServer().getPluginManager().callEvent(changeEvent); // CraftBukkit end @@ -55,7 +55,7 @@ index c4a6f94a3..d6415a506 100644 return this; } } -@@ -1988,9 +1998,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting { +@@ -1989,9 +1999,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @Override public boolean isFrozen() { // Paper - protected > public diff --git a/patches/server/0120-PaperPR-Per-World-Spawn-limits.patch b/patches/server/0120-PaperPR-Per-World-Spawn-limits.patch index 23c0fc984..21ea90538 100644 --- a/patches/server/0120-PaperPR-Per-World-Spawn-limits.patch +++ b/patches/server/0120-PaperPR-Per-World-Spawn-limits.patch @@ -1,4 +1,4 @@ -From e20f17afdb64be8a7b94f2a8b4ff7de1bf76befc Mon Sep 17 00:00:00 2001 +From 24c75bc95d5b36139730c743f4d32357295f90c6 Mon Sep 17 00:00:00 2001 From: chase Date: Sun, 15 Mar 2020 18:32:22 -0600 Subject: [PATCH] PaperPR - Per World Spawn limits @@ -31,10 +31,10 @@ index 7e7f10351..f2281d325 100644 public boolean batRidableInWater = false; public boolean batRequireShiftToMount = true; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index b32031815..bfd500587 100644 +index 4ba2ec7df..066b07f5a 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -334,6 +334,13 @@ public class CraftWorld implements World { +@@ -333,6 +333,13 @@ public class CraftWorld implements World { this.generator = gen; environment = env; diff --git a/patches/server/0122-Tuinity-Delay-chunk-unloads.patch b/patches/server/0122-Tuinity-Delay-chunk-unloads.patch index 2f1e2adca..7858fcc4a 100644 --- a/patches/server/0122-Tuinity-Delay-chunk-unloads.patch +++ b/patches/server/0122-Tuinity-Delay-chunk-unloads.patch @@ -1,4 +1,4 @@ -From fb5246adbd39b33de4c97f8ab9ece717ac69b1cb Mon Sep 17 00:00:00 2001 +From d2c2b464f6e94a3c3904e410164da9c97e9dde84 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Fri, 25 Oct 2019 02:11:30 -0700 Subject: [PATCH] Tuinity - Delay chunk unloads @@ -35,10 +35,10 @@ index 55f9f4e6e..ac21fdb4c 100644 this.a(ChunkCoordIntPair.a, i, j, flag); } diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java -index 716d4eab3..8eddb1fa1 100644 +index 771d87971..6d46ca591 100644 --- a/src/main/java/net/minecraft/server/ChunkMapDistance.java +++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java -@@ -30,7 +30,7 @@ public abstract class ChunkMapDistance { +@@ -31,7 +31,7 @@ public abstract class ChunkMapDistance { private static final int b = 33 + ChunkStatus.a(ChunkStatus.FULL) - 2; private final Long2ObjectMap> c = new Long2ObjectOpenHashMap(); public final Long2ObjectOpenHashMap>> tickets = new Long2ObjectOpenHashMap(); @@ -46,8 +46,8 @@ index 716d4eab3..8eddb1fa1 100644 + private final ChunkMapDistance.a e = new ChunkMapDistance.a(); final ChunkMapDistance.a getTicketTracker() { return this.e; } // Purpur - OBFHELPER public static final int MOB_SPAWN_RANGE = 8; //private final ChunkMapDistance.b f = new ChunkMapDistance.b(8); // Paper - no longer used private final ChunkMapDistance.c g = new ChunkMapDistance.c(33); - private final java.util.Queue pendingChunkUpdates = new java.util.ArrayDeque<>(); // PAIL pendingChunkUpdates // Paper - use a queue -@@ -42,6 +42,46 @@ public abstract class ChunkMapDistance { + // Paper start use a queue, but still keep unique requirement +@@ -52,6 +52,46 @@ public abstract class ChunkMapDistance { private long currentTick; PlayerChunkMap chunkMap; // Paper @@ -94,7 +94,7 @@ index 716d4eab3..8eddb1fa1 100644 protected ChunkMapDistance(Executor executor, Executor executor1) { executor1.getClass(); -@@ -58,12 +98,30 @@ public abstract class ChunkMapDistance { +@@ -68,12 +108,30 @@ public abstract class ChunkMapDistance { ++this.currentTick; ObjectIterator objectiterator = this.tickets.long2ObjectEntrySet().fastIterator(); @@ -126,15 +126,15 @@ index 716d4eab3..8eddb1fa1 100644 this.e.b(entry.getLongKey(), a((ArraySetSorted) entry.getValue()), false); } -@@ -74,6 +132,7 @@ public abstract class ChunkMapDistance { +@@ -84,6 +142,7 @@ public abstract class ChunkMapDistance { } + private static int getLowestTicketLevel(ArraySetSorted> arraysetsorted) { return a(arraysetsorted); } // Purpur - OBFHELPER private static int a(ArraySetSorted> arraysetsorted) { + AsyncCatcher.catchOp("ChunkMapDistance::getHighestTicketLevel"); // Paper return !arraysetsorted.isEmpty() ? ((Ticket) arraysetsorted.b()).b() : PlayerChunkMap.GOLDEN_TICKET + 1; - } -@@ -156,6 +215,11 @@ public abstract class ChunkMapDistance { +@@ -175,6 +234,11 @@ public abstract class ChunkMapDistance { boolean removed = false; // CraftBukkit if (arraysetsorted.remove(ticket)) { removed = true; // CraftBukkit @@ -147,7 +147,7 @@ index 716d4eab3..8eddb1fa1 100644 if (arraysetsorted.isEmpty()) { diff --git a/src/main/java/net/minecraft/server/Ticket.java b/src/main/java/net/minecraft/server/Ticket.java -index 7a8397815..8aae0b63e 100644 +index 0d6e0f2dd..ce0aef25c 100644 --- a/src/main/java/net/minecraft/server/Ticket.java +++ b/src/main/java/net/minecraft/server/Ticket.java @@ -5,9 +5,10 @@ import java.util.Objects; @@ -160,10 +160,10 @@ index 7a8397815..8aae0b63e 100644 - private long d; public final long getCreationTick() { return this.d; } // Paper - OBFHELPER + private long d; public final long getCreationTick() { return this.d; } public final void setCreationTick(final long value) { this.d = value; } // Paper - OBFHELPER // Purpur - OBFHELPER + boolean isCached; // Purpur - delay chunk unloads, this defends against really stupid plugins + public int priority = 0; // Paper protected Ticket(TicketType tickettype, int i, T t0) { - this.a = tickettype; -@@ -60,6 +61,7 @@ public final class Ticket implements Comparable> { +@@ -61,6 +62,7 @@ public final class Ticket implements Comparable> { this.d = i; } @@ -172,13 +172,13 @@ index 7a8397815..8aae0b63e 100644 long j = this.a.b(); diff --git a/src/main/java/net/minecraft/server/TicketType.java b/src/main/java/net/minecraft/server/TicketType.java -index 8055f5998..93587068f 100644 +index 24ec5d77c..1243134bc 100644 --- a/src/main/java/net/minecraft/server/TicketType.java +++ b/src/main/java/net/minecraft/server/TicketType.java -@@ -23,6 +23,7 @@ public class TicketType { - public static final TicketType PLUGIN_TICKET = a("plugin_ticket", (plugin1, plugin2) -> plugin1.getClass().getName().compareTo(plugin2.getClass().getName())); // CraftBukkit - public static final TicketType FUTURE_AWAIT = a("future_await", Long::compareTo); // Paper +@@ -25,6 +25,7 @@ public class TicketType { public static final TicketType ASYNC_LOAD = a("async_load", Long::compareTo); // Paper + public static final TicketType PRIORITY = a("priority", Comparator.comparingLong(ChunkCoordIntPair::pair), 300); // Paper + public static final TicketType URGENT = a("urgent", Comparator.comparingLong(ChunkCoordIntPair::pair), 300); // Paper + public static final TicketType DELAYED_UNLOAD = a("delayed_unload", Long::compareTo); // Purpur public static TicketType a(String s, Comparator comparator) { @@ -209,10 +209,10 @@ index ab88636ca..becb13e0e 100644 + } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index bfd500587..643080f6f 100644 +index 066b07f5a..067272cf3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -489,6 +489,7 @@ public class CraftWorld implements World { +@@ -488,6 +488,7 @@ public class CraftWorld implements World { net.minecraft.server.IChunkAccess chunk = world.getChunkProvider().getChunkAtIfLoadedImmediately(x, z); // Paper if (chunk != null) { world.getChunkProvider().removeTicket(TicketType.PLUGIN, chunk.getPos(), 1, Unit.INSTANCE);