2022-05-06 15:33:07 +00:00
|
|
|
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] 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
|
2022-06-10 01:20:47 +00:00
|
|
|
index a96b3f62a7a6aa5c87976dcda93f4b47bc2cd252..8ec20f17a3f8c39ae3ebf3fb630f98b35283ba88 100644
|
2022-05-06 15:33:07 +00:00
|
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperCommand.java
|
|
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java
|
2022-06-09 21:43:27 +00:00
|
|
|
@@ -626,7 +626,7 @@ public class PaperCommand extends Command {
|
2022-05-06 15:33:07 +00:00
|
|
|
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
|
2022-06-10 01:20:47 +00:00
|
|
|
index de0fe1743dbddc6ff548dc4c658955266600180f..09e7c07973f4ce868a418f9ac4ff7e838f6b99be 100644
|
2022-05-06 15:33:07 +00:00
|
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
2022-06-10 01:20:47 +00:00
|
|
|
@@ -2498,6 +2498,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
2022-05-06 15:33:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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 5bffc9a0f6ef9d54abb359565d07509b177c2b82..1a1a1f4d0ac025daccc2d3f84faf6592819f4d5c 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);
|