Updated Upstream (Paper)

Upstream has released updates that appears to apply and compile correctly

Paper Changes:
cf82dad3 Fix Non Full Status Chunk NBT Memory Leak
5a12515a Update Log4J Configuration file to stop truncating stack traces
7c001d64 More Improvements to Chunks
e1c45196 Fix high memory use of non ticking chunks
ee9f0d51 Fix another case of breaking blocks causing sync chunk loads
6009ba8f Drop AABB limit patch until it can be tested more
0e9c24e5 Fix log spam about Hanging entities bounding boxes
83fadad7 Fix conversion for deserializing raw nbt itemstacks - Fixes #3424
4d38ee11 Many fixes and improvements to chunk prioritization
281181c7 Use saner Entity bounding box limits
edd6b6a2 Protect the visible chunk map from plugins touching it, trim Timing Errors
18c68657 Optimize performance of object pool
7e1525ea Many improvements to chunk prioritization and bug fixes
c82b292a Fix pooled buffer leak resulting in dynmap black spots - Fixes #3386
63274472 Fix ./paper edit continue for Windows
eb5a3058 Fix path in CONTRIBUTING.md (#3406)
f6ed326d Fix a small error in CONTRIBUTING.md (#3403)
614a664b Implement Chunk Priority / Urgency System for Chunks
This commit is contained in:
William Blake Galbreath
2020-05-23 10:21:51 -05:00
parent 860c86191a
commit 3e808f90ec
15 changed files with 61 additions and 61 deletions

2
Paper

Submodule Paper updated: c8028d1c76...cf82dad399

View File

@@ -1 +1 @@
1.15.2--0c6830d7565eff99b423b84111c1159be356df13
1.15.2--4b2e1d61714587ba29125b8ceb75a8cbb6c65824

View File

@@ -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 <Blake.Galbreath@GMail.com>
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) {

View File

@@ -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 <Blake.Galbreath@GMail.com>
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);
}

View File

@@ -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 <blake.galbreath@gmail.com>
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);

View File

@@ -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 <blake.galbreath@gmail.com>
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();

View File

@@ -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 <blake.galbreath@gmail.com>
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) {

View File

@@ -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 <Blake.Galbreath@GMail.com>
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
}

View File

@@ -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 <Blake.Galbreath@GMail.com>
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);
}

View File

@@ -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 <blake.galbreath@gmail.com>
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 {

View File

@@ -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 <Blake.Galbreath@GMail.com>
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();

View File

@@ -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 <Blake.Galbreath@GMail.com>
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

View File

@@ -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 <Blake.Galbreath@GMail.com>
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

View File

@@ -1,4 +1,4 @@
From e20f17afdb64be8a7b94f2a8b4ff7de1bf76befc Mon Sep 17 00:00:00 2001
From 24c75bc95d5b36139730c743f4d32357295f90c6 Mon Sep 17 00:00:00 2001
From: chase <chasewhip20@gmail.com>
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;

View File

@@ -1,4 +1,4 @@
From fb5246adbd39b33de4c97f8ab9ece717ac69b1cb Mon Sep 17 00:00:00 2001
From d2c2b464f6e94a3c3904e410164da9c97e9dde84 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
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<ObjectSet<EntityPlayer>> c = new Long2ObjectOpenHashMap();
public final Long2ObjectOpenHashMap<ArraySetSorted<Ticket<?>>> 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<PlayerChunk> 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<Ticket<?>> arraysetsorted) { return a(arraysetsorted); } // Purpur - OBFHELPER
private static int a(ArraySetSorted<Ticket<?>> 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<T> tickettype, int i, T t0) {
this.a = tickettype;
@@ -60,6 +61,7 @@ public final class Ticket<T> implements Comparable<Ticket<?>> {
@@ -61,6 +62,7 @@ public final class Ticket<T> implements Comparable<Ticket<?>> {
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<T> {
public static final TicketType<org.bukkit.plugin.Plugin> PLUGIN_TICKET = a("plugin_ticket", (plugin1, plugin2) -> plugin1.getClass().getName().compareTo(plugin2.getClass().getName())); // CraftBukkit
public static final TicketType<Long> FUTURE_AWAIT = a("future_await", Long::compareTo); // Paper
@@ -25,6 +25,7 @@ public class TicketType<T> {
public static final TicketType<Long> ASYNC_LOAD = a("async_load", Long::compareTo); // Paper
public static final TicketType<ChunkCoordIntPair> PRIORITY = a("priority", Comparator.comparingLong(ChunkCoordIntPair::pair), 300); // Paper
public static final TicketType<ChunkCoordIntPair> URGENT = a("urgent", Comparator.comparingLong(ChunkCoordIntPair::pair), 300); // Paper
+ public static final TicketType<Long> DELAYED_UNLOAD = a("delayed_unload", Long::compareTo); // Purpur
public static <T> TicketType<T> a(String s, Comparator<T> 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);