9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-28 19:39:17 +00:00
Files
Leaf/leaf-server/minecraft-patches/features/0218-Improve-BlockEntity-ticking-isRemoved-check.patch
Dreeam 3c25377465 Drop some unused patches
ClassInstanceMultiMap belongs to Minecraft vanilla entity storage.
And is unused, since replaced by spottedleaf's entity storage (rewrite chunk system).
However these patches might be useful for vanilla entity storage if is used.
2025-07-09 04:20:02 +08:00

58 lines
2.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: kidofcubes <kidofcubes@gmail.com>
Date: Sun, 16 Feb 2025 00:51:24 +0800
Subject: [PATCH] Improve BlockEntity ticking isRemoved check
Uses direct reference for isRemoved check in BlockEntity ticking,
reducing cost caused by nested wrapper calls
Leaf (Before): ~15104ms
Leaf (After): ~628ms (-96%)
This should help for massive hopper chains or hopper matrix.
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
index 7538f9c84e8463502f4fa1b4a84a4ac84a11e87d..514a918fff9bf60293fbfa6def4a2f9fead30825 100644
--- a/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
@@ -1023,15 +1023,29 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
static class RebindableTickingBlockEntityWrapper implements TickingBlockEntity {
private TickingBlockEntity ticker;
private BlockPos cachedPos; // Leaf - Cache tile entity position
+ private @Nullable BlockEntity blockEntityReference = null; // Leaf - Improve BlockEntity ticking isRemoved check
RebindableTickingBlockEntityWrapper(TickingBlockEntity ticker) {
this.ticker = ticker;
this.cachedPos = this.ticker.getPos(); // Leaf - Cache tile entity position
+ // Leaf start - Improve BlockEntity ticking isRemoved check
+ if (ticker instanceof BoundTickingBlockEntity<?> boundTicker) {
+ blockEntityReference = boundTicker.blockEntity;
+ }
+ // Leaf end - Improve BlockEntity ticking isRemoved check
+
}
void rebind(TickingBlockEntity ticker) {
this.ticker = ticker;
this.cachedPos = this.ticker.getPos(); // Leaf - Cache tile entity position
+ // Leaf start - Improve BlockEntity ticking isRemoved check
+ if (ticker instanceof BoundTickingBlockEntity<?> boundTicker) {
+ blockEntityReference = boundTicker.blockEntity;
+ } else {
+ blockEntityReference = null;
+ }
+ // Leaf end - Improve BlockEntity ticking isRemoved check
}
@Override
@@ -1041,6 +1055,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@Override
public boolean isRemoved() {
+ // Leaf start - Improve BlockEntity ticking isRemoved check
+ if (blockEntityReference != null) {
+ return blockEntityReference.isRemoved();
+ }
+ // Leaf end - Improve BlockEntity ticking isRemoved check
return this.ticker.isRemoved();
}