2022-05-06 17:33:07 +02: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
|
|
|
|
|
2023-04-02 20:21:13 +02:00
|
|
|
Fixes https://github.com/PaperMC/Paper/issues/7276 and https://github.com/PaperMC/Paper/issues/8118
|
|
|
|
by using a config option that, when set to false, does not add markers to the entity
|
|
|
|
tick list at all and ignores them in Spigot's activation range checks. The entity tick
|
2022-05-06 17:33:07 +02:00
|
|
|
list is only used in the tick and tickPassenger methods, so we can safely not add the
|
2023-04-02 20:21:13 +02:00
|
|
|
markers to it. When the config option is set to true, markers are ticked as normal.
|
2022-05-06 17:33:07 +02:00
|
|
|
|
2022-07-09 01:01:42 +02:00
|
|
|
diff --git a/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java b/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java
|
2023-04-02 20:21:13 +02:00
|
|
|
index ff99336e0b8131ae161cfa5c4fc83c6905e3dbc8..5f43aedc6596e2b1ac7af9711515714752c262e3 100644
|
2022-07-09 01:01:42 +02:00
|
|
|
--- a/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java
|
|
|
|
+++ b/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java
|
2023-03-04 22:35:07 +01:00
|
|
|
@@ -109,7 +109,7 @@ public final class EntityCommand implements PaperSubcommand {
|
2022-07-09 01:01:42 +02:00
|
|
|
ChunkPos chunk = e.chunkPosition();
|
|
|
|
info.left++;
|
|
|
|
info.right.put(chunk, info.right.getOrDefault(chunk, 0) + 1);
|
|
|
|
- if (!chunkProviderServer.isPositionTicking(e)) {
|
2023-04-02 20:21:13 +02:00
|
|
|
+ if (!chunkProviderServer.isPositionTicking(e) || (e instanceof net.minecraft.world.entity.Marker && !world.paperConfig().entities.markers.tick)) { // Configurable marker ticking
|
2022-07-09 01:01:42 +02:00
|
|
|
nonEntityTicking.merge(key, 1, Integer::sum);
|
|
|
|
}
|
|
|
|
});
|
2022-05-06 17:33:07 +02:00
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
2023-06-08 10:47:19 +02:00
|
|
|
index b89544fdfceee67fb452c37294131efca007e2fe..2737bd5f1915466a73dd4e093e35301c4353ddea 100644
|
2022-05-06 17:33:07 +02:00
|
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
2023-06-08 10:47:19 +02:00
|
|
|
@@ -2566,6 +2566,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
2022-05-06 17:33:07 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public void onTickingStart(Entity entity) {
|
2023-04-02 20:21:13 +02:00
|
|
|
+ if (entity instanceof net.minecraft.world.entity.Marker && !paperConfig().entities.markers.tick) return; // Paper - Configurable marker ticking
|
2022-05-06 17:33:07 +02:00
|
|
|
ServerLevel.this.entityTickList.add(entity);
|
|
|
|
}
|
2022-09-26 10:02:51 +02:00
|
|
|
|
2022-05-06 17:33:07 +02:00
|
|
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
2023-06-08 10:47:19 +02:00
|
|
|
index d0092fa0595bcf3876dec4ef58516089ac99bb26..d4da9ec6e00bb92b70598ee9a0d0ca5816562378 100644
|
2022-05-06 17:33:07 +02:00
|
|
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
|
|
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
2023-04-02 20:21:13 +02:00
|
|
|
@@ -212,7 +212,8 @@ public class ActivationRange
|
2022-05-06 17:33:07 +02:00
|
|
|
// Paper end
|
|
|
|
|
|
|
|
// Paper start
|
|
|
|
- java.util.List<Entity> entities = world.getEntities((Entity)null, maxBB, null);
|
2023-04-02 20:21:13 +02:00
|
|
|
+ java.util.function.Predicate<Entity> entityPredicate = world.paperConfig().entities.markers.tick ? null : (e) -> !(e instanceof net.minecraft.world.entity.Marker); // Configurable marker ticking
|
|
|
|
+ java.util.List<Entity> entities = world.getEntities((Entity)null, maxBB, entityPredicate);
|
2022-05-06 17:33:07 +02:00
|
|
|
for (int i = 0; i < entities.size(); i++) {
|
|
|
|
Entity entity = entities.get(i);
|
|
|
|
ActivationRange.activateEntity(entity);
|