Don't tick markers
This commit is contained in:
48
patches/server/0093-PaperPR-Don-t-tick-markers.patch
Normal file
48
patches/server/0093-PaperPR-Don-t-tick-markers.patch
Normal file
@@ -0,0 +1,48 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Noah van der Aa <ndvdaa@gmail.com>
|
||||
Date: Fri, 7 Jan 2022 11:58:26 +0100
|
||||
Subject: [PATCH] PaperPR Don't tick markers
|
||||
|
||||
Fixes https://github.com/PaperMC/Paper/issues/7276 by not adding markers to the entity
|
||||
tick list at all and ignoring them in Spigot's activation range checks. The entity tick
|
||||
list is only used in the tick and tickPassenger methods, so we can safely not add the
|
||||
markers to it.
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java
|
||||
index 2e141e7b85ef54a084698b5a920b85212271fce8..6b843f9fba6c26b1581be114d6f255a655cde411 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperCommand.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java
|
||||
@@ -614,7 +614,7 @@ public class PaperCommand extends Command {
|
||||
ChunkPos chunk = e.chunkPosition();
|
||||
info.left++;
|
||||
info.right.put(chunk, info.right.getOrDefault(chunk, 0) + 1);
|
||||
- if (!chunkProviderServer.isPositionTicking(e)) {
|
||||
+ if (!chunkProviderServer.isPositionTicking(e) || e instanceof net.minecraft.world.entity.Marker) { // Markers aren't ticked.
|
||||
nonEntityTicking.merge(key, Integer.valueOf(1), Integer::sum);
|
||||
}
|
||||
});
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 35c1604ff678a5344bc9de824eb2788561d2dcaf..b0163875561b590793eb2b08b2fcc8f317204749 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -2418,6 +2418,7 @@ public class ServerLevel extends Level implements WorldGenLevel, IServerWorld {
|
||||
}
|
||||
|
||||
public void onTickingStart(Entity entity) {
|
||||
+ if (entity instanceof net.minecraft.world.entity.Marker) return; // Paper - Don't tick markers
|
||||
ServerLevel.this.entityTickList.add(entity);
|
||||
ServerLevel.this.entityManager.addNavigatorsIfPathingToRegion(entity); // Paper - optimise notify
|
||||
}
|
||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
index 2eb9bc34afdc26bed21bc9d3e97f636cfc97f166..e36721c1fe272dabeacbd7d2362a91e81a478415 100644
|
||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
@@ -211,7 +211,7 @@ public class ActivationRange
|
||||
// Paper end
|
||||
|
||||
// Paper start
|
||||
- java.util.List<Entity> entities = world.getEntities((Entity)null, maxBB, null);
|
||||
+ java.util.List<Entity> entities = world.getEntities((Entity)null, maxBB, (e) -> !(e instanceof net.minecraft.world.entity.Marker)); // Don't tick markers
|
||||
for (int i = 0; i < entities.size(); i++) {
|
||||
Entity entity = entities.get(i);
|
||||
ActivationRange.activateEntity(entity);
|
||||
Reference in New Issue
Block a user