4af62f6d1d
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 2d009e64 Update SnakeYAML javadoc link b4fd213c Switch Player#updateInventory deprecation for internal API annotation CraftBukkit Changes: f3b2b2210 SPIGOT-7376: Exception with getBlockData when hasBlockData is false 725545630 SPIGOT-7375: Fix crash breeding certain entities b9873b0d4 Update Brigadier version with fix 68b320562 SPIGOT-7266: Found typo in CraftBukkit package 98b4d2ff8 SPIGOT-7372, SPIGOT-7373: Signs can't be edited, issues with SignChangeEvent 5f7bd4d78 SPIGOT-7371: Sign does not open edit text on placement b4cf99d24 SPIGOT-7371: Fix editing signs with API a2b6c2744 PR-1200: Implement open sign by side a345bb940 SPIGOT-7368: Downgrade SpecialSource version Spigot Changes: 723951c3 Rebuild patches b655c57d Drop old collision API deprecated since 1.9.4 55b0fed4 Rebuild patches
51 Zeilen
3.3 KiB
Diff
51 Zeilen
3.3 KiB
Diff
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 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
|
|
list is only used in the tick and tickPassenger methods, so we can safely not add the
|
|
markers to it. When the config option is set to true, markers are ticked as normal.
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java b/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java
|
|
index ff99336e0b8131ae161cfa5c4fc83c6905e3dbc8..5f43aedc6596e2b1ac7af9711515714752c262e3 100644
|
|
--- a/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java
|
|
+++ b/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java
|
|
@@ -109,7 +109,7 @@ public final class EntityCommand implements PaperSubcommand {
|
|
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 && !world.paperConfig().entities.markers.tick)) { // Configurable marker ticking
|
|
nonEntityTicking.merge(key, 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 b89544fdfceee67fb452c37294131efca007e2fe..2737bd5f1915466a73dd4e093e35301c4353ddea 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
@@ -2566,6 +2566,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
|
}
|
|
|
|
public void onTickingStart(Entity entity) {
|
|
+ if (entity instanceof net.minecraft.world.entity.Marker && !paperConfig().entities.markers.tick) return; // Paper - Configurable marker ticking
|
|
ServerLevel.this.entityTickList.add(entity);
|
|
}
|
|
|
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
|
index d0092fa0595bcf3876dec4ef58516089ac99bb26..d4da9ec6e00bb92b70598ee9a0d0ca5816562378 100644
|
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
|
@@ -212,7 +212,8 @@ public class ActivationRange
|
|
// Paper end
|
|
|
|
// Paper start
|
|
- java.util.List<Entity> entities = world.getEntities((Entity)null, maxBB, null);
|
|
+ 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);
|
|
for (int i = 0; i < entities.size(); i++) {
|
|
Entity entity = entities.get(i);
|
|
ActivationRange.activateEntity(entity);
|