aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0971-Don-t-tick-signs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0971-Don-t-tick-signs.patch')
-rw-r--r--patches/server/0971-Don-t-tick-signs.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/patches/server/0971-Don-t-tick-signs.patch b/patches/server/0971-Don-t-tick-signs.patch
new file mode 100644
index 0000000000..759f4ef4d2
--- /dev/null
+++ b/patches/server/0971-Don-t-tick-signs.patch
@@ -0,0 +1,63 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Owen1212055 <[email protected]>
+Date: Wed, 12 Jul 2023 17:38:26 -0400
+Subject: [PATCH] Don't tick signs
+
+Minecraft now ticks signs in order to validate the playerWhoMayEdit field. This is a horrible idea, as this means that even waxed signs are ticked for essentially no reason. This moves the logic lazily onto the getter.
+
+== AT ==
+private net.minecraft.world.level.block.entity.SignBlockEntity playerWhoMayEdit
+
+diff --git a/src/main/java/net/minecraft/world/level/block/CeilingHangingSignBlock.java b/src/main/java/net/minecraft/world/level/block/CeilingHangingSignBlock.java
+index 6c9d163b9f857806461dc72e54713f1a4f3a5c31..0bd8ea3143b2e9755d492af4596622d1dca1afaf 100644
+--- a/src/main/java/net/minecraft/world/level/block/CeilingHangingSignBlock.java
++++ b/src/main/java/net/minecraft/world/level/block/CeilingHangingSignBlock.java
+@@ -144,6 +144,6 @@ public class CeilingHangingSignBlock extends SignBlock {
+ @Nullable
+ @Override
+ public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level world, BlockState state, BlockEntityType<T> type) {
+- return createTickerHelper(type, BlockEntityType.HANGING_SIGN, SignBlockEntity::tick);
++ return null; // Paper
+ }
+ }
+diff --git a/src/main/java/net/minecraft/world/level/block/SignBlock.java b/src/main/java/net/minecraft/world/level/block/SignBlock.java
+index 0c1c6fbcf625da4a28514e0d040deb6c98ba9507..614777d15bcf4141a89d0a0f7bd880526c668ffd 100644
+--- a/src/main/java/net/minecraft/world/level/block/SignBlock.java
++++ b/src/main/java/net/minecraft/world/level/block/SignBlock.java
+@@ -207,6 +207,6 @@ public abstract class SignBlock extends BaseEntityBlock implements SimpleWaterlo
+ @Nullable
+ @Override
+ public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level world, BlockState state, BlockEntityType<T> type) {
+- return createTickerHelper(type, BlockEntityType.SIGN, SignBlockEntity::tick);
++ return null; // Paper
+ }
+ }
+diff --git a/src/main/java/net/minecraft/world/level/block/WallHangingSignBlock.java b/src/main/java/net/minecraft/world/level/block/WallHangingSignBlock.java
+index d818d3ea6d28aa6ffb62127d4efd585d6f2935d1..ae232311f12c72ff62d3d18f25e3ebf46ce1ace2 100644
+--- a/src/main/java/net/minecraft/world/level/block/WallHangingSignBlock.java
++++ b/src/main/java/net/minecraft/world/level/block/WallHangingSignBlock.java
+@@ -167,6 +167,6 @@ public class WallHangingSignBlock extends SignBlock {
+ @Nullable
+ @Override
+ public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level world, BlockState state, BlockEntityType<T> type) {
+- return createTickerHelper(type, BlockEntityType.HANGING_SIGN, SignBlockEntity::tick);
++ return null; // Paper
+ }
+ }
+diff --git a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
+index 9eea2982e92e9bc7a53962dc6b21de60f9e5a4c7..38cde466714e5663cd416b6afd5d2558e139ec09 100644
+--- a/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
++++ b/src/main/java/net/minecraft/world/level/block/entity/SignBlockEntity.java
+@@ -367,6 +367,12 @@ public class SignBlockEntity extends BlockEntity implements CommandSource { // C
+
+ @Nullable
+ public UUID getPlayerWhoMayEdit() {
++ // Paper start
++ if (this.hasLevel() && this.playerWhoMayEdit != null) {
++ // Manually invalidate the value lazily.
++ this.clearInvalidPlayerWhoMayEdit(this, this.getLevel(), this.playerWhoMayEdit);
++ }
++ // Paper end
+ return this.playerWhoMayEdit;
+ }
+