Drop 0018
This commit is contained in:
@@ -1,274 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: MrHua269 <wangxyper@163.com>
|
|
||||||
Date: Wed, 18 Sep 2024 23:10:47 +0800
|
|
||||||
Subject: [PATCH] Add experimental config for folia scheduling issue fixing
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java b/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java
|
|
||||||
index a1e1782d87403ca8934d37361be7ba66ddba133f..e668bfca306385fab7344bea8e9655a1f02814e1 100644
|
|
||||||
--- a/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java
|
|
||||||
+++ b/src/main/java/io/papermc/paper/threadedregions/RegionizedTaskQueue.java
|
|
||||||
@@ -48,8 +48,29 @@ public final class RegionizedTaskQueue {
|
|
||||||
|
|
||||||
public PrioritisedExecutor.PrioritisedTask queueChunkTask(final ServerLevel world, final int chunkX, final int chunkZ,
|
|
||||||
final Runnable run, final PrioritisedExecutor.Priority priority) {
|
|
||||||
- final PrioritisedExecutor.PrioritisedTask ret = this.createChunkTask(world, chunkX, chunkZ, run, priority);
|
|
||||||
- ret.queue();
|
|
||||||
+ PrioritisedExecutor.PrioritisedTask ret = new PrioritisedQueue.ChunkBasedPriorityTask(world.taskQueueRegionData, chunkX, chunkZ, true, run, priority, me.earthme.luminol.config.modules.experiment.FoliaTaskQueueFixConfig.enabled); // Luminol
|
|
||||||
+ // Luminol start
|
|
||||||
+ if (!me.earthme.luminol.config.modules.experiment.FoliaTaskQueueFixConfig.enabled){
|
|
||||||
+ ret.queue();
|
|
||||||
+ return ret;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ for (;;) {
|
|
||||||
+ boolean result;
|
|
||||||
+
|
|
||||||
+ try {
|
|
||||||
+ result = ret.queue();
|
|
||||||
+ }catch (me.earthme.luminol.utils.TaskCancelledException ignored) {
|
|
||||||
+ result = true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (result) {
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ret = new PrioritisedQueue.ChunkBasedPriorityTask(world.taskQueueRegionData, chunkX, chunkZ, true, run, priority, me.earthme.luminol.config.modules.experiment.FoliaTaskQueueFixConfig.enabled);
|
|
||||||
+ }
|
|
||||||
+ // Luminol end
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -60,8 +81,29 @@ public final class RegionizedTaskQueue {
|
|
||||||
|
|
||||||
public PrioritisedExecutor.PrioritisedTask queueTickTaskQueue(final ServerLevel world, final int chunkX, final int chunkZ,
|
|
||||||
final Runnable run, final PrioritisedExecutor.Priority priority) {
|
|
||||||
- final PrioritisedExecutor.PrioritisedTask ret = this.createTickTaskQueue(world, chunkX, chunkZ, run, priority);
|
|
||||||
- ret.queue();
|
|
||||||
+ PrioritisedExecutor.PrioritisedTask ret = new PrioritisedQueue.ChunkBasedPriorityTask(world.taskQueueRegionData, chunkX, chunkZ, false, run, priority, me.earthme.luminol.config.modules.experiment.FoliaTaskQueueFixConfig.enabled); // Luminol
|
|
||||||
+ // Luminol start
|
|
||||||
+ if (!me.earthme.luminol.config.modules.experiment.FoliaTaskQueueFixConfig.enabled){
|
|
||||||
+ ret.queue();
|
|
||||||
+ return ret;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ for (;;) {
|
|
||||||
+ boolean result;
|
|
||||||
+
|
|
||||||
+ try {
|
|
||||||
+ result = ret.queue();
|
|
||||||
+ }catch (me.earthme.luminol.utils.TaskCancelledException ignored) {
|
|
||||||
+ result = true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (result) {
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ret = new PrioritisedQueue.ChunkBasedPriorityTask(world.taskQueueRegionData, chunkX, chunkZ, false, run, priority, me.earthme.luminol.config.modules.experiment.FoliaTaskQueueFixConfig.enabled);
|
|
||||||
+ }
|
|
||||||
+ // Luminol end
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -136,6 +178,78 @@ public final class RegionizedTaskQueue {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Luminol start - Try fixing scheduling
|
|
||||||
+ private final java.util.concurrent.locks.Lock referenceCountersLock = new java.util.concurrent.locks.ReentrantLock(true);
|
|
||||||
+
|
|
||||||
+ private void luminolReplaced$decrementReference(final AtomicLong reference, final long coord) {
|
|
||||||
+ final int chunkX = CoordinateUtils.getChunkX(coord);
|
|
||||||
+ final int chunkZ = CoordinateUtils.getChunkZ(coord);
|
|
||||||
+
|
|
||||||
+ this.referenceCountersLock.lock();
|
|
||||||
+ boolean shouldRemove = false;
|
|
||||||
+ try {
|
|
||||||
+ final long val = reference.decrementAndGet();
|
|
||||||
+ if (val == 0L) {
|
|
||||||
+ shouldRemove = this.referenceCounters.remove(coord, reference) == reference;
|
|
||||||
+ } else if (val < 0L) {
|
|
||||||
+ throw new IllegalStateException("Reference count < 0: " + val);
|
|
||||||
+ }
|
|
||||||
+ }finally {
|
|
||||||
+ this.referenceCountersLock.unlock();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (shouldRemove) {
|
|
||||||
+ final ca.spottedleaf.concurrentutil.lock.ReentrantAreaLock.Node ticketLock = this.world.moonrise$getChunkTaskScheduler().chunkHolderManager.ticketLockArea.lock(chunkX, chunkZ);
|
|
||||||
+ try {
|
|
||||||
+ WorldRegionTaskData.this.removeTicket(coord);
|
|
||||||
+ } finally {
|
|
||||||
+ this.world.moonrise$getChunkTaskScheduler().chunkHolderManager.ticketLockArea.unlock(ticketLock);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ private AtomicLong luminolReplaced$incrementReference(final long coord){
|
|
||||||
+ final AtomicLong result;
|
|
||||||
+
|
|
||||||
+ final int chunkX = CoordinateUtils.getChunkX(coord);
|
|
||||||
+ final int chunkZ = CoordinateUtils.getChunkZ(coord);
|
|
||||||
+
|
|
||||||
+ final boolean processTicketUpdates;
|
|
||||||
+
|
|
||||||
+ final AtomicLong replace = new AtomicLong(1L);
|
|
||||||
+
|
|
||||||
+ this.referenceCountersLock.lock();
|
|
||||||
+ try {
|
|
||||||
+ final AtomicLong valueInMap = this.referenceCounters.putIfAbsent(coord, replace);
|
|
||||||
+
|
|
||||||
+ if (valueInMap == null) {
|
|
||||||
+ result = replace;
|
|
||||||
+ processTicketUpdates = true;
|
|
||||||
+ }else {
|
|
||||||
+ processTicketUpdates = false;
|
|
||||||
+ valueInMap.getAndIncrement();
|
|
||||||
+ result = valueInMap;
|
|
||||||
+ }
|
|
||||||
+ }finally {
|
|
||||||
+ this.referenceCountersLock.unlock();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (processTicketUpdates) {
|
|
||||||
+ // Add the ticket so that we could create the tickregion
|
|
||||||
+ final ca.spottedleaf.concurrentutil.lock.ReentrantAreaLock.Node ticketLock = this.world.moonrise$getChunkTaskScheduler().chunkHolderManager.ticketLockArea.lock(chunkX, chunkZ);
|
|
||||||
+ try {
|
|
||||||
+ this.addTicket(coord);
|
|
||||||
+ } finally {
|
|
||||||
+ this.world.moonrise$getChunkTaskScheduler().chunkHolderManager.ticketLockArea.unlock(ticketLock);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ this.processTicketUpdates(coord); // Notify an update
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return result;
|
|
||||||
+ }
|
|
||||||
+ // Luminol end
|
|
||||||
+
|
|
||||||
private AtomicLong incrementReference(final long coord) {
|
|
||||||
final AtomicLong ret = this.referenceCounters.get(coord);
|
|
||||||
if (ret != null) {
|
|
||||||
@@ -428,7 +542,13 @@ public final class RegionizedTaskQueue {
|
|
||||||
try {
|
|
||||||
task.executeInternal();
|
|
||||||
} finally {
|
|
||||||
- task.world.decrementReference(referenceCounter, task.sectionLowerLeftCoord);
|
|
||||||
+ // Luminol start - Try fixing schedule
|
|
||||||
+ if (me.earthme.luminol.config.modules.experiment.FoliaTaskQueueFixConfig.enabled) {
|
|
||||||
+ task.world.luminolReplaced$decrementReference(referenceCounter, task.sectionLowerLeftCoord);
|
|
||||||
+ }else {
|
|
||||||
+ task.world.decrementReference(referenceCounter, task.sectionLowerLeftCoord);
|
|
||||||
+ }
|
|
||||||
+ // Luminol end
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
@@ -449,6 +569,13 @@ public final class RegionizedTaskQueue {
|
|
||||||
private Runnable run;
|
|
||||||
private volatile PrioritisedExecutor.Priority priority;
|
|
||||||
private static final VarHandle PRIORITY_HANDLE = ConcurrentUtil.getVarHandle(ChunkBasedPriorityTask.class, "priority", PrioritisedExecutor.Priority.class);
|
|
||||||
+ private boolean softThrowWhenCancelled = false; // Luminol
|
|
||||||
+
|
|
||||||
+ ChunkBasedPriorityTask(final WorldRegionTaskData world, final int chunkX, final int chunkZ, final boolean isChunkTask,
|
|
||||||
+ final Runnable run, final PrioritisedExecutor.Priority priority, boolean sft) { // Luminol
|
|
||||||
+ this(world, chunkX, chunkZ, isChunkTask, run, priority);
|
|
||||||
+ this.softThrowWhenCancelled = sft;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
ChunkBasedPriorityTask(final WorldRegionTaskData world, final int chunkX, final int chunkZ, final boolean isChunkTask,
|
|
||||||
final Runnable run, final PrioritisedExecutor.Priority priority) {
|
|
||||||
@@ -533,7 +660,13 @@ public final class RegionizedTaskQueue {
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
if (curr != REFERENCE_COUNTER_NOT_SET) {
|
|
||||||
- this.world.decrementReference(curr, this.sectionLowerLeftCoord);
|
|
||||||
+ // Luminol start - Try fixing scheduling
|
|
||||||
+ if (me.earthme.luminol.config.modules.experiment.FoliaTaskQueueFixConfig.enabled) {
|
|
||||||
+ this.world.luminolReplaced$decrementReference(curr, this.sectionLowerLeftCoord);
|
|
||||||
+ }else {
|
|
||||||
+ this.world.decrementReference(curr, this.sectionLowerLeftCoord);
|
|
||||||
+ }
|
|
||||||
+ // Luminol end
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -547,10 +680,16 @@ public final class RegionizedTaskQueue {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
- final AtomicLong referenceCounter = this.world.incrementReference(this.sectionLowerLeftCoord);
|
|
||||||
+ final AtomicLong referenceCounter = me.earthme.luminol.config.modules.experiment.FoliaTaskQueueFixConfig.enabled ? this.world.luminolReplaced$incrementReference(this.sectionLowerLeftCoord) : this.world.incrementReference(this.sectionLowerLeftCoord);
|
|
||||||
if (this.compareAndExchangeReferenceCounter(REFERENCE_COUNTER_NOT_SET, referenceCounter) != REFERENCE_COUNTER_NOT_SET) {
|
|
||||||
// we don't expect race conditions here, so it is OK if we have to needlessly reference count
|
|
||||||
- this.world.decrementReference(referenceCounter, this.sectionLowerLeftCoord);
|
|
||||||
+ // Luminol start - Try fixing scheduling
|
|
||||||
+ if (me.earthme.luminol.config.modules.experiment.FoliaTaskQueueFixConfig.enabled) {
|
|
||||||
+ this.world.luminolReplaced$decrementReference(referenceCounter, this.sectionLowerLeftCoord);
|
|
||||||
+ }else {
|
|
||||||
+ this.world.decrementReference(referenceCounter, this.sectionLowerLeftCoord);
|
|
||||||
+ }
|
|
||||||
+ // Luminol end
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -574,6 +713,11 @@ public final class RegionizedTaskQueue {
|
|
||||||
// the task never could be polled from the queue, so we return false
|
|
||||||
// don't decrement reference count, as we were certainly cancelled by another thread, which
|
|
||||||
// will decrement the reference count
|
|
||||||
+ // Luminol start
|
|
||||||
+ if (this.softThrowWhenCancelled) {
|
|
||||||
+ throw new me.earthme.luminol.utils.TaskCancelledException();
|
|
||||||
+ }
|
|
||||||
+ // Luminol end
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -584,6 +728,9 @@ public final class RegionizedTaskQueue {
|
|
||||||
// we were cancelled
|
|
||||||
// don't decrement reference count, as we were certainly cancelled by another thread, which
|
|
||||||
// will decrement the reference count
|
|
||||||
+ if (this.softThrowWhenCancelled) {
|
|
||||||
+ throw new me.earthme.luminol.utils.TaskCancelledException();
|
|
||||||
+ }
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/main/java/me/earthme/luminol/config/modules/experiment/FoliaTaskQueueFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/experiment/FoliaTaskQueueFixConfig.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..47e0339ecb0d96010c41e739c66f3d024aad95eb
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/me/earthme/luminol/config/modules/experiment/FoliaTaskQueueFixConfig.java
|
|
||||||
@@ -0,0 +1,20 @@
|
|
||||||
+package me.earthme.luminol.config.modules.experiment;
|
|
||||||
+
|
|
||||||
+import me.earthme.luminol.config.ConfigInfo;
|
|
||||||
+import me.earthme.luminol.config.EnumConfigCategory;
|
|
||||||
+import me.earthme.luminol.config.IConfigModule;
|
|
||||||
+
|
|
||||||
+public class FoliaTaskQueueFixConfig implements IConfigModule {
|
|
||||||
+ @ConfigInfo(baseName = "enabled")
|
|
||||||
+ public static boolean enabled = false;
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public EnumConfigCategory getCategory() {
|
|
||||||
+ return EnumConfigCategory.EXPERIMENT;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public String getBaseName() {
|
|
||||||
+ return "queue_until_task_queued";
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/me/earthme/luminol/utils/TaskCancelledException.java b/src/main/java/me/earthme/luminol/utils/TaskCancelledException.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..c7b55489f4d3a57320b0963e45cd1c87e6c0ec88
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/me/earthme/luminol/utils/TaskCancelledException.java
|
|
||||||
@@ -0,0 +1,4 @@
|
|
||||||
+package me.earthme.luminol.utils;
|
|
||||||
+
|
|
||||||
+public class TaskCancelledException extends RuntimeException{
|
|
||||||
+}
|
|
||||||
@@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..01f8c6ff3662569be5a4ff998bcd4fbb
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index a737fb8dac485303d2ee7399d4dae8dbbff2f7fe..a810ffe411897a3155ae175418b8bbb0504cf923 100644
|
index 023ffc81f9363eb2fc7c3b3382c843b064c889e3..d57fd6e4aacb611526a741fbd98165f124b7b8ef 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -929,9 +929,24 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
@@ -929,9 +929,24 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
||||||
@@ -18,7 +18,7 @@ index 48604e7f96adc9e226e034054c5e2bad0b024eb5..99f0c1e4d3437154a1062b0a8f94b7a0
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 5bd02c4f65327b9b848b08e61820c262e0a71731..05871b8addafaf11ce10f16a0fc8d0ad9619e3d0 100644
|
index b6489f9da0bf08e5801be1ce668a422610d2b393..db48812e886bc0110a1e098a98a67a5291e8eed3 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -777,8 +777,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -777,8 +777,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -120,7 +120,7 @@ index 0000000000000000000000000000000000000000..fda9177bc2c5cc0176f816b9774a2b7d
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 05871b8addafaf11ce10f16a0fc8d0ad9619e3d0..abe3dbe11066469f030e4f7381f98d38537443d4 100644
|
index db48812e886bc0110a1e098a98a67a5291e8eed3..29103346dd3e5e69de260c95051c9447fda0da41 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1003,10 +1003,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1003,10 +1003,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Pufferfish Cache climbing check for activation
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
index bd544eee8d7439a466f0f82e7d7a51a63b7294c0..a279d742c5743027219482d9aebe345751e68a72 100644
|
index 9b8fd458c851d72901568845d973330ed58260a9..33ecd65a2787741cc0611ad3100a1bf9d2ce0338 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -157,7 +157,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
|
@@ -157,7 +157,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
|
||||||
@@ -38,7 +38,7 @@ index bd544eee8d7439a466f0f82e7d7a51a63b7294c0..a279d742c5743027219482d9aebe3457
|
|||||||
if (this.isSpectator()) {
|
if (this.isSpectator()) {
|
||||||
return false;
|
return false;
|
||||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
index 91c63c3dceddf09018d3651f4c11bf521eb53ecf..96103d7c380e095c06876da00bd4132ae9598671 100644
|
index d12f9586602769bd0c692f1cf5820b008cb4bc51..2d26c8109cb942d1856455fd0239290ee1142eb3 100644
|
||||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
@@ -307,7 +307,7 @@ public class ActivationRange
|
@@ -307,7 +307,7 @@ public class ActivationRange
|
||||||
@@ -33,7 +33,7 @@ index 0000000000000000000000000000000000000000..12683ec5a5102e45b6171fea0b833ba5
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
index 420531643a486da9d99f011a93461e54d0d9032b..5110ca77adcf6daa7ce2247d4fc8af0835b7bd7e 100644
|
index 0e831070fe7a9ac58de4b25b74a53b38334c695a..2f0a40134ef2fcccf407a5381994c3454040097e 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
@@ -52,6 +52,40 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
@@ -52,6 +52,40 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
||||||
@@ -49,7 +49,7 @@ index 0000000000000000000000000000000000000000..15697d69659b6e1e776acf5094684b5f
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index a2f550d2632459e271a3e9ff796dde4891e12e7a..d68328d4c429d4fc95c19e9477d0795beba2f53f 100644
|
index 87c2bb5794cf87a5f048779633de0d0bf2f16d5d..261bcb9cbb8bda07037f40883ddc5381948c66e1 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -858,6 +858,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -858,6 +858,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
@@ -71,7 +71,7 @@ index 0000000000000000000000000000000000000000..af5893ba1f738ec9827d7b714682c314
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
index b5cb700e2cd1de2f78ad582245208c056fa6fa79..80123dd30328336b02a5e2e3414ece44ba040ad2 100644
|
index 94d855f14c91ca164f1728be1df4e83dfed8b005..3ebea71bbc6ced0d0a325c519436a0199666fafb 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -805,6 +805,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
|
@@ -805,6 +805,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
|
||||||
@@ -83,7 +83,7 @@ index b5cb700e2cd1de2f78ad582245208c056fa6fa79..80123dd30328336b02a5e2e3414ece44
|
|||||||
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
|
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
|
||||||
entity.discard();
|
entity.discard();
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index d68328d4c429d4fc95c19e9477d0795beba2f53f..ff729667384bc07746f4bfa3fe18d09547cc86a2 100644
|
index 261bcb9cbb8bda07037f40883ddc5381948c66e1..6497ecce4a826776c487e0e2fcb077f21e02ecda 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -430,6 +430,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
@@ -430,6 +430,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
@@ -346,7 +346,7 @@ index 91728a992a29bc22e46a260750d5dd88e629bfd1..3f4e4b612e127e51b240bca8776f6fc3
|
|||||||
if (this.assignProfessionWhenSpawned) {
|
if (this.assignProfessionWhenSpawned) {
|
||||||
this.assignProfessionWhenSpawned = false;
|
this.assignProfessionWhenSpawned = false;
|
||||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
index 96103d7c380e095c06876da00bd4132ae9598671..4e8892326bfadfb0f1baf672908bc282f11103b1 100644
|
index 2d26c8109cb942d1856455fd0239290ee1142eb3..c17e9782850fd88b9a46d31bf9075624ffc11709 100644
|
||||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
@@ -38,6 +38,10 @@ import co.aikar.timings.MinecraftTimings;
|
@@ -38,6 +38,10 @@ import co.aikar.timings.MinecraftTimings;
|
||||||
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..3e48cd297b4869e5c89b6abc43c726d3
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
index a279d742c5743027219482d9aebe345751e68a72..c2398397567d03274ab3214723c35c5a950e9a32 100644
|
index 33ecd65a2787741cc0611ad3100a1bf9d2ce0338..8c155060f5a347e784b9d4ece506e983fdc4057b 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
@@ -463,7 +463,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
@@ -463,7 +463,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||||
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..fa30e8dc39a2d4bd1399e41230b307b1
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
index 4e8892326bfadfb0f1baf672908bc282f11103b1..8b71a68944c80043d979b8eb107c0cc094843fcf 100644
|
index c17e9782850fd88b9a46d31bf9075624ffc11709..e1f0aedbc42c6e969ba155c358f4ee30efd8ffe8 100644
|
||||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
@@ -75,28 +75,41 @@ public class ActivationRange
|
@@ -75,28 +75,41 @@ public class ActivationRange
|
||||||
@@ -179,7 +179,7 @@ index 026807e0851d67c6d57e81f573ac1bf8fedc6109..c45f6bd60d1cf7a915aa6ceea07c0929
|
|||||||
if (mspt == -1){
|
if (mspt == -1){
|
||||||
return BossBar.Color.valueOf(TpsBarConfig.tpsColors.get(3));
|
return BossBar.Color.valueOf(TpsBarConfig.tpsColors.get(3));
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index abe3dbe11066469f030e4f7381f98d38537443d4..870036b5f0d2eea249591b45a8f1071382652440 100644
|
index 29103346dd3e5e69de260c95051c9447fda0da41..93cc0a7562dce407b486007a9dd33652d2b75b90 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1715,6 +1715,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1715,6 +1715,29 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
Reference in New Issue
Block a user