9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-19 15:09:25 +00:00

[ci skip] update comments

This commit is contained in:
hayanesuru
2025-08-20 16:44:05 +09:00
parent 00a5e41bdc
commit b42ef7da8b
10 changed files with 84 additions and 83 deletions

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] optimize PalettedContainer#get
diff --git a/net/minecraft/world/level/chunk/PalettedContainer.java b/net/minecraft/world/level/chunk/PalettedContainer.java
index 49220967392331dd9928a539da6e6052b007e318..9319ccc4ee8e44ea8c1f32e623f2d3c7ceed1f4f 100644
index 49220967392331dd9928a539da6e6052b007e318..dd26ee1c377709d77709d449e98694d047afaa09 100644
--- a/net/minecraft/world/level/chunk/PalettedContainer.java
+++ b/net/minecraft/world/level/chunk/PalettedContainer.java
@@ -48,6 +48,18 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer
@@ -41,7 +41,7 @@ index 49220967392331dd9928a539da6e6052b007e318..9319ccc4ee8e44ea8c1f32e623f2d3c7
public T get(int index) { // Paper - public
// Paper start - optimise palette reads
- final PalettedContainer.Data<T> data = this.data;
+ final PalettedContainer.Data<T> data = (PalettedContainer.Data<T>) DATA_HANDLE.getAcquire(this); // Leaf - optimize get chunk
+ final PalettedContainer.Data<T> data = (PalettedContainer.Data<T>) DATA_HANDLE.getAcquire(this); // Leaf - optimize PalettedContainer#get
return this.readPalette(data, data.storage.get(index));
// Paper end - optimise palette reads
}

View File

@@ -5,16 +5,15 @@ Subject: [PATCH] optimize isStateClimbable
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 0bd4bc2d3d3edf6f7ea5e41d4049b2e0a3b3151e..3aec52d72cd5ffd2ef61b1f6c37c6b7f1203d06f 100644
index 0bd4bc2d3d3edf6f7ea5e41d4049b2e0a3b3151e..bc02ce9093adb0ec09252ce00f60dd84335cca70 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -1376,7 +1376,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1376,7 +1376,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
private boolean isStateClimbable(BlockState state) {
- return state.is(BlockTags.CLIMBABLE) || state.is(Blocks.POWDER_SNOW);
+ final int flags = state.tagFlag;
+ return (flags & (org.dreeam.leaf.util.BlockMasks.CLIMBABLE_TAG | org.dreeam.leaf.util.BlockMasks.POWDER_SNOW_CL)) != 0;
+ return (state.tagFlag & org.dreeam.leaf.util.BlockMasks.IS_STATE_CLIMBABLE) != 0; // Leaf - optimize isStateClimbable
}
private boolean vibrationAndSoundEffectsFromBlock(BlockPos pos, BlockState state, boolean playStepSound, boolean broadcastGameEvent, Vec3 entityPos) {

View File

@@ -5,15 +5,15 @@ Subject: [PATCH] optimize getOnPos
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 3aec52d72cd5ffd2ef61b1f6c37c6b7f1203d06f..8c01317e1aa5cc588eb2d9e4d47de1da93d5146a 100644
index bc02ce9093adb0ec09252ce00f60dd84335cca70..bb16f3ebffcafcb11d3112e03f5767ac71b359f6 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -895,6 +895,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// CraftBukkit end
public void baseTick() {
+ this.leaf$onBlockState = null; // Leaf
+ this.leaf$cacheOnBlock = true; // Leaf
+ this.leaf$onBlockState = null; // Leaf - optimize getOnPos
+ this.leaf$cacheOnBlock = true; // Leaf - optimize getOnPos
if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Prevent entity loading causing async lookups
this.inBlockState = null;
if (this.isPassenger() && this.getVehicle().isRemoved()) {
@@ -21,7 +21,7 @@ index 3aec52d72cd5ffd2ef61b1f6c37c6b7f1203d06f..8c01317e1aa5cc588eb2d9e4d47de1da
if (this.level() instanceof ServerLevel serverLevelx && this instanceof Leashable) {
Leashable.tickLeash(serverLevelx, (Entity & Leashable)this);
}
+ this.leaf$cacheOnBlock = false; // Leaf
+ this.leaf$cacheOnBlock = false; // Leaf - optimize getOnPos
}
public void setSharedFlagOnFire(boolean isOnFire) {
@@ -30,20 +30,20 @@ index 3aec52d72cd5ffd2ef61b1f6c37c6b7f1203d06f..8c01317e1aa5cc588eb2d9e4d47de1da
Optional<BlockPos> optional = this.level.findSupportingBlock(this, aabb);
if (optional.isPresent() || this.onGroundNoBlocks) {
- this.mainSupportingBlockPos = optional;
+ // Leaf start
+ // Leaf start - optimize getOnPos
+ if (mainSupportingBlockPos.isEmpty() || optional.isEmpty() || !mainSupportingBlockPos.get().equals(optional.get())) {
+ this.mainSupportingBlockPos = optional;
+ }
+ // Leaf end
+ // Leaf end - optimize getOnPos
} else if (movement != null) {
AABB aabb1 = aabb.move(-movement.x, 0.0, -movement.z);
optional = this.level.findSupportingBlock(this, aabb1);
- this.mainSupportingBlockPos = optional;
+ // Leaf start
+ // Leaf start - optimize getOnPos
+ if (mainSupportingBlockPos.isEmpty() || optional.isEmpty() || !mainSupportingBlockPos.get().equals(optional.get())) {
+ this.mainSupportingBlockPos = optional;
+ }
+ // Leaf end
+ // Leaf end - optimize getOnPos
}
this.onGroundNoBlocks = optional.isEmpty();
@@ -53,8 +53,8 @@ index 3aec52d72cd5ffd2ef61b1f6c37c6b7f1203d06f..8c01317e1aa5cc588eb2d9e4d47de1da
- BlockPos onPosLegacy = this.getOnPosLegacy();
- BlockState blockState = this.level().getBlockState(onPosLegacy);
+ BlockState blockState = this.leaf$getOnBlockLegacy(); // Leaf
+ BlockPos onPosLegacy = this.leaf$getOnBlockPos(); // Leaf
+ BlockState blockState = this.leaf$getOnBlockLegacy(); // Leaf - optimize getOnPos
+ BlockPos onPosLegacy = this.leaf$getOnBlockPos(); // Leaf - optimize getOnPos
if (this.isLocalInstanceAuthoritative()) {
this.checkFallDamage(vec3.y, this.onGround(), blockState, onPosLegacy);
}
@@ -65,8 +65,8 @@ index 3aec52d72cd5ffd2ef61b1f6c37c6b7f1203d06f..8c01317e1aa5cc588eb2d9e4d47de1da
- BlockPos onPos = this.getOnPos();
- BlockState blockState = this.level.getBlockStateIfLoadedUnchecked(onPos.getX(), onPos.getY(), onPos.getZ());
- if (blockState == null) { blockState = this.level.getBlockState(onPos); }
+ BlockState blockState = this.leaf$getOnBlock0(); // Leaf
+ BlockPos onPos = this.leaf$getOnBlockPos(); // Leaf
+ BlockState blockState = this.leaf$getOnBlock0(); // Leaf - optimize getOnPos
+ BlockPos onPos = this.leaf$getOnBlockPos(); // Leaf - optimize getOnPos
boolean isStateClimbable = this.isStateClimbable(blockState);
this.moveDist += isStateClimbable ? f1 : f2;
this.flyDist += f1;
@@ -76,45 +76,45 @@ index 3aec52d72cd5ffd2ef61b1f6c37c6b7f1203d06f..8c01317e1aa5cc588eb2d9e4d47de1da
if (this.onGround()) {
- BlockPos onPosLegacy = this.getOnPosLegacy();
- BlockState blockState = this.level().getBlockState(onPosLegacy);
+ BlockState blockState = this.leaf$getOnBlockLegacy(); // Leaf
+ BlockPos onPosLegacy = this.leaf$getOnBlockPos(); // Leaf
+ BlockState blockState = this.leaf$getOnBlockLegacy(); // Leaf - optimize getOnPos
+ BlockPos onPosLegacy = this.leaf$getOnBlockPos(); // Leaf - optimize getOnPos
blockState.getBlock().stepOn(this.level(), onPosLegacy, blockState, this);
}
@@ -1443,34 +1453,124 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1442,34 +1452,124 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return this.getOnPos(0.2F);
}
+ // Leaf start
+ // Leaf start - optimize getOnPos
+ @Deprecated
+ public BlockState leaf$getOnBlockLegacy() {
+ return this.leaf$getOnBlock(0.2F);
+ }
+ // Leaf end
+ // Leaf end - optimize getOnPos
+
public BlockPos getBlockPosBelowThatAffectsMyMovement() {
return this.getOnPos(0.500001F);
}
+ // Leaf start
+ // Leaf start - optimize getOnPos
+ public net.minecraft.world.level.block.state.BlockState leaf$getBlockBelow() {
+ return this.leaf$getOnBlock(0.500001F);
+ }
+ // Leaf end
+ // Leaf end - optimize getOnPos
+
public BlockPos getOnPos() {
return this.getOnPos(1.0E-5F);
}
+ // Leaf start
+ // Leaf start - optimize getOnPos
+ public BlockState leaf$getOnBlock0() {
+ return this.leaf$getOnBlock(1.0E-5F);
+ }
+ // Leaf end
+ // Leaf end - optimize getOnPos
+
protected BlockPos getOnPos(float yOffset) {
- if (this.mainSupportingBlockPos.isPresent() && this.level().getChunkIfLoadedImmediately(this.mainSupportingBlockPos.get()) != null) { // Paper - ensure no loads
+ // Leaf start - optimize get chunk
+ // Leaf start - optimize getOnPos
+ if (this.mainSupportingBlockPos.isPresent()) {
BlockPos blockPos = this.mainSupportingBlockPos.get();
+ int x = blockPos.getX();
@@ -145,10 +145,10 @@ index 3aec52d72cd5ffd2ef61b1f6c37c6b7f1203d06f..8c01317e1aa5cc588eb2d9e4d47de1da
int floor2 = Mth.floor(this.position.z);
return new BlockPos(floor, floor1, floor2);
}
+ // Leaf end - optimize get chunk
+ // Leaf end - optimize getOnPos
+ }
+
+ // Leaf start
+ // Leaf start - optimize getOnPos
+ @Nullable private BlockState leaf$onBlockState = null;
+ private BlockPos leaf$onBlockPos = BlockPos.ZERO;
+ public boolean leaf$cacheOnBlock = false;
@@ -210,59 +210,59 @@ index 3aec52d72cd5ffd2ef61b1f6c37c6b7f1203d06f..8c01317e1aa5cc588eb2d9e4d47de1da
+ return leaf$onBlockState;
+ }
}
+ // Leaf end
+ // Leaf end - optimize getOnPos
protected float getBlockJumpFactor() {
float jumpFactor = this.level().getBlockState(this.blockPosition()).getBlock().getJumpFactor();
@@ -1482,7 +1582,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1481,7 +1581,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
BlockState blockState = this.level().getBlockState(this.blockPosition());
float speedFactor = blockState.getBlock().getSpeedFactor();
if (!blockState.is(Blocks.WATER) && !blockState.is(Blocks.BUBBLE_COLUMN)) {
- return speedFactor == 1.0 ? this.level().getBlockState(this.getBlockPosBelowThatAffectsMyMovement()).getBlock().getSpeedFactor() : speedFactor;
+ return speedFactor == 1.0 ? this.leaf$getBlockBelow().getBlock().getSpeedFactor() : speedFactor; // Leaf
+ return speedFactor == 1.0 ? this.leaf$getBlockBelow().getBlock().getSpeedFactor() : speedFactor; // Leaf - optimize getOnPos
} else {
return speedFactor;
}
@@ -2104,7 +2204,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2103,7 +2203,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@Deprecated
protected BlockState getBlockStateOnLegacy() {
- return this.level().getBlockState(this.getOnPosLegacy());
+ return this.leaf$getOnBlockLegacy(); // Leaf
+ return this.leaf$getOnBlockLegacy(); // Leaf - optimize getOnPos
}
public BlockState getBlockStateOn() {
@@ -2116,8 +2216,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2115,8 +2215,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
protected void spawnSprintParticle() {
- BlockPos onPosLegacy = this.getOnPosLegacy();
- BlockState blockState = this.level().getBlockState(onPosLegacy);
+ BlockState blockState = this.leaf$getOnBlockLegacy(); // Leaf
+ BlockPos onPosLegacy = this.leaf$getOnBlockPos(); // Leaf
+ BlockState blockState = this.leaf$getOnBlockLegacy(); // Leaf - optimize getOnPos
+ BlockPos onPosLegacy = this.leaf$getOnBlockPos(); // Leaf - optimize getOnPos
if (blockState.getRenderShape() != RenderShape.INVISIBLE) {
Vec3 deltaMovement = this.getDeltaMovement();
BlockPos blockPos = this.blockPosition();
diff --git a/net/minecraft/world/entity/ExperienceOrb.java b/net/minecraft/world/entity/ExperienceOrb.java
index 3ee788b172240ccf38cb31385dff13364ccc4142..f61ccef92c46b13bbe53df1fca8a3b4798b006e4 100644
index 3ee788b172240ccf38cb31385dff13364ccc4142..d88fc291f3c6ea7dd8293d39a435607937d877bc 100644
--- a/net/minecraft/world/entity/ExperienceOrb.java
+++ b/net/minecraft/world/entity/ExperienceOrb.java
@@ -243,6 +243,13 @@ public class ExperienceOrb extends Entity {
return this.getOnPos(0.999999F);
}
+ // Leaf start
+ // Leaf start - optimize getOnPos
+ @Override
+ public net.minecraft.world.level.block.state.BlockState leaf$getBlockBelow() {
+ return this.leaf$getOnBlock(0.999999F);
+ }
+ // Leaf end
+ // Leaf end - optimize getOnPos
+
private void scanForMerges() {
if (this.level() instanceof ServerLevel) {
for (ExperienceOrb experienceOrb : this.level()
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index f0a0a19e2adff03e73e75c3db831dbf74ebf3861..eb408f9318ce406b22c6dbb575f08329fb286ee0 100644
index f0a0a19e2adff03e73e75c3db831dbf74ebf3861..b8665f74bc5592b0022636e62482e21c84692d39 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -3087,7 +3087,11 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -270,11 +270,11 @@ index f0a0a19e2adff03e73e75c3db831dbf74ebf3861..eb408f9318ce406b22c6dbb575f08329
public void travel(Vec3 travelVector) {
- FluidState fluidState = this.level().getFluidState(this.blockPosition());
+ // Leaf start
+ // Leaf start - optimize getOnPos
+ BlockPos blockPos = this.blockPosition();
+ FluidState fluidState = this.level().getFluidStateIfLoadedUnchecked(blockPos.getX(), blockPos.getY(), blockPos.getZ());
+ if (fluidState == null) { this.level().getFluidState(blockPos); }
+ // Leaf end
+ // Leaf end - optimize getOnPos
if ((this.isInWater() || this.isInLava()) && this.isAffectedByFluids() && !this.canStandOnFluid(fluidState)) {
this.travelInFluid(travelVector);
} else if (this.isFallFlying()) {
@@ -322,7 +322,7 @@ index f0a0a19e2adff03e73e75c3db831dbf74ebf3861..eb408f9318ce406b22c6dbb575f08329
if (this.level().isClientSide()) {
this.calculateEntityAnimation(this instanceof FlyingAnimal);
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
index 52314a8fe4188689431f9a1261226859b967f5f1..e93cf31ddb1affcfcdaab380a6614c118a96eaa1 100644
index 52314a8fe4188689431f9a1261226859b967f5f1..b4f72a15b117e1e5438f509a2d7392aa14886316 100644
--- a/net/minecraft/world/entity/item/ItemEntity.java
+++ b/net/minecraft/world/entity/item/ItemEntity.java
@@ -204,7 +204,7 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -338,12 +338,12 @@ index 52314a8fe4188689431f9a1261226859b967f5f1..e93cf31ddb1affcfcdaab380a6614c11
return this.getOnPos(0.999999F);
}
+ // Leaf start
+ // Leaf start - optimize getOnPos
+ @Override
+ public net.minecraft.world.level.block.state.BlockState leaf$getBlockBelow() {
+ return this.leaf$getOnBlock(0.999999F);
+ }
+ // Leaf end
+ // Leaf end - optimize getOnPos
+
private void setUnderwaterMovement() {
this.setFluidMovement(0.99F);

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] optimize get eye block position
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 8c01317e1aa5cc588eb2d9e4d47de1da93d5146a..11a0fcf040053f9e84db21b3890cdfdc330755f0 100644
index bb16f3ebffcafcb11d3112e03f5767ac71b359f6..22b7b1bd62f730a760ce0cf0a2ddb701324e3c3e 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -553,20 +553,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -56,7 +56,7 @@ index 8c01317e1aa5cc588eb2d9e4d47de1da93d5146a..11a0fcf040053f9e84db21b3890cdfdc
// Purpur end - copied from Mob - API for any mob to burn daylight
// Leaf end - Fix Pufferfish and Purpur patches
@@ -2152,8 +2157,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2151,8 +2156,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
&& abstractBoat.getBoundingBox().maxY >= eyeY
&& abstractBoat.getBoundingBox().minY <= eyeY
)) {
@@ -68,7 +68,7 @@ index 8c01317e1aa5cc588eb2d9e4d47de1da93d5146a..11a0fcf040053f9e84db21b3890cdfdc
double d = blockPos.getY() + fluidState.getHeight(this.level(), blockPos);
if (d > eyeY) {
// Leaf start - Optimize isEyeInFluid
@@ -2281,20 +2287,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -2280,20 +2286,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@Deprecated
public float getLightLevelDependentMagicValue() {
@@ -91,7 +91,7 @@ index 8c01317e1aa5cc588eb2d9e4d47de1da93d5146a..11a0fcf040053f9e84db21b3890cdfdc
public void absSnapTo(double x, double y, double z, float yRot, float xRot) {
this.absSnapTo(x, y, z);
@@ -4532,6 +4528,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4531,6 +4527,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
EntityDimensions dimensions = this.getDimensions(pose);
this.dimensions = dimensions;
this.eyeHeight = dimensions.eyeHeight();
@@ -99,7 +99,7 @@ index 8c01317e1aa5cc588eb2d9e4d47de1da93d5146a..11a0fcf040053f9e84db21b3890cdfdc
}
public void refreshDimensions() {
@@ -4540,6 +4537,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4539,6 +4536,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
EntityDimensions dimensions = this.getDimensions(pose);
this.dimensions = dimensions;
this.eyeHeight = dimensions.eyeHeight();
@@ -108,7 +108,7 @@ index 8c01317e1aa5cc588eb2d9e4d47de1da93d5146a..11a0fcf040053f9e84db21b3890cdfdc
boolean flag = dimensions.width() <= 4.0F && dimensions.height() <= 4.0F;
if (!this.level.isClientSide
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index eb408f9318ce406b22c6dbb575f08329fb286ee0..04e7bcf4cc004b4323a23dadf5d9d347ba5aa881 100644
index b8665f74bc5592b0022636e62482e21c84692d39..dc66b2c59984ce62b1d3c4a97c769771229fb4f8 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -464,7 +464,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] optimize updateFluidHeightAndDoFluidPushing
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 11a0fcf040053f9e84db21b3890cdfdc330755f0..ae8154b4dea055c219797f00f357e56c74bcdace 100644
index 22b7b1bd62f730a760ce0cf0a2ddb701324e3c3e..2d3998b547a5593703788f7a532f960f6054b7c9 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -4933,12 +4933,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4932,12 +4932,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
final int minChunkZ = minBlockZ >> 4;
final int maxChunkZ = maxBlockZ >> 4;
@@ -23,7 +23,7 @@ index 11a0fcf040053f9e84db21b3890cdfdc330755f0..ae8154b4dea055c219797f00f357e56c
if (chunk == null) continue;
final net.minecraft.world.level.chunk.LevelChunkSection[] sections = chunk.getSections();
// Leaf end - Prevent double chunk retrieving in entity fluid pushing check and fluid height updating
@@ -4950,7 +4950,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4949,7 +4949,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
continue;
}
final net.minecraft.world.level.chunk.LevelChunkSection section = sections[sectionIdx];
@@ -32,7 +32,7 @@ index 11a0fcf040053f9e84db21b3890cdfdc330755f0..ae8154b4dea055c219797f00f357e56c
// empty
continue;
}
@@ -5007,7 +5007,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5006,7 +5006,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.fluidHeight.put(fluid, maxHeightDiff);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] optimize checkInsideBlocks
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index ae8154b4dea055c219797f00f357e56c74bcdace..8a43dfcb5b8c041a80bd01611bdc8865a754e8cd 100644
index 2d3998b547a5593703788f7a532f960f6054b7c9..0804d3dc5262350a194c5e6d86c313364b6fba76 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -1812,72 +1812,57 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1811,72 +1811,57 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
private void checkInsideBlocks(Vec3 vec3, Vec3 vec31, InsideBlockEffectApplier.StepBasedCollector stepBasedCollector, LongSet set) {
final Level level = this.level();
AABB aabb = this.getBoundingBox().move(vec31.subtract(this.position())).deflate(1.0E-5F);

View File

@@ -1,11 +1,11 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: hayanesuru <hayanesuru@outlook.jp>
Date: Sun, 10 Aug 2025 16:14:07 +0900
Subject: [PATCH] Replace fluid height map
Subject: [PATCH] replace entity fluid height map
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 8a43dfcb5b8c041a80bd01611bdc8865a754e8cd..7dda8c5db2bbbfe04db07b1a053489b4d19f3f09 100644
index 0804d3dc5262350a194c5e6d86c313364b6fba76..fc1175ae9bf5b59be2575a4e560bb558cbf007f4 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -286,7 +286,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess

View File

@@ -5,20 +5,20 @@ Subject: [PATCH] optimize collision shape
diff --git a/net/minecraft/world/level/block/state/BlockBehaviour.java b/net/minecraft/world/level/block/state/BlockBehaviour.java
index 9caac78f0dbadc838753e2db7b757b70cea2fae8..782b5e58bc7a528d896a5b182476ba6fa3f8abc4 100644
index 9caac78f0dbadc838753e2db7b757b70cea2fae8..ef0849eb69deee974a8dd5ada628b469822755e5 100644
--- a/net/minecraft/world/level/block/state/BlockBehaviour.java
+++ b/net/minecraft/world/level/block/state/BlockBehaviour.java
@@ -623,6 +623,13 @@ public abstract class BlockBehaviour implements FeatureElement {
this.emptyConstantCollisionShape = this.constantCollisionShape != null && this.constantCollisionShape.isEmpty();
// init caches
initCaches(collisionShape, true);
+ // Leaf start
+ // Leaf start - optimize collision shape
+ switch (getBlock()) {
+ case net.minecraft.world.level.block.FireBlock fireBlock -> {}
+ case net.minecraft.world.level.block.LiquidBlock liquidBlock -> {}
+ default -> this.constantCollisionShape = collisionShape;
+ }
+ // Leaf end
+ // Leaf end - optimize collision shape
if (this.constantCollisionShape != null) {
initCaches(this.constantCollisionShape, true);
}

View File

@@ -5,78 +5,78 @@ Subject: [PATCH] cache collision list
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index b94f2122da885fe94bd60c7914421968e6a2f3fa..57e123c65f48690a5d6375e4dfd1465c531d4480 100644
index b94f2122da885fe94bd60c7914421968e6a2f3fa..5178290d060dd8a72f0e6cb77f77d19683a866d0 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -1095,6 +1095,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
public final org.dreeam.leaf.world.DespawnMap despawnMap = new org.dreeam.leaf.world.DespawnMap(paperConfig()); // Leaf - optimize despawn
public final org.dreeam.leaf.world.NatureSpawnChunkMap natureSpawnChunkMap = new org.dreeam.leaf.world.NatureSpawnChunkMap(); // Leaf - optimize mob spawning
public final org.dreeam.leaf.world.RandomTickSystem randomTickSystem = new org.dreeam.leaf.world.RandomTickSystem(); // Leaf - optimize random tick
+ public final org.dreeam.leaf.world.EntityCollisionCache entityCollisionCache = new org.dreeam.leaf.world.EntityCollisionCache(); // Leaf
+ public final org.dreeam.leaf.world.EntityCollisionCache entityCollisionCache = new org.dreeam.leaf.world.EntityCollisionCache(); // Leaf - cache collision list
+
public void tickChunk(LevelChunk chunk, int randomTickSpeed) {
final net.minecraft.world.level.levelgen.BitRandomSource simpleRandom = this.simpleRandom; // Paper - optimise random ticking // Leaf - Faster random generator - upcasting
ChunkPos pos = chunk.getPos();
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 7dda8c5db2bbbfe04db07b1a053489b4d19f3f09..2b0c5d5920a3df8c4d6076c45d3191976f7abfec 100644
index fc1175ae9bf5b59be2575a4e560bb558cbf007f4..46724762116945d9eb8d1692657fe5ef4d7f912b 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -1641,8 +1641,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1640,8 +1640,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
final AABB currentBox = this.getBoundingBox();
- final List<VoxelShape> potentialCollisionsVoxel = new ArrayList<>();
- final List<AABB> potentialCollisionsBB = new ArrayList<>();
+ // final List<VoxelShape> potentialCollisionsVoxel = new ArrayList<>(); // Leaf
+ // final List<AABB> potentialCollisionsBB = new ArrayList<>(); // Leaf
+ // final List<VoxelShape> potentialCollisionsVoxel = new ArrayList<>(); // Leaf - cache collision list
+ // final List<AABB> potentialCollisionsBB = new ArrayList<>(); // Leaf - cache collision list
final AABB initialCollisionBox;
if (xZero & zZero) {
@@ -1654,17 +1654,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1653,17 +1653,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
initialCollisionBox = currentBox.expandTowards(movement);
}
- final List<AABB> entityAABBs = new ArrayList<>();
+ org.dreeam.leaf.world.EntityCollisionCache entityCollisionCache = ((ServerLevel) this.level).entityCollisionCache; // Leaf
+ org.dreeam.leaf.world.EntityCollisionCache entityCollisionCache = ((ServerLevel) this.level).entityCollisionCache; // Leaf - cache collision list
ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.getEntityHardCollisions(
- this.level, (Entity)(Object)this, initialCollisionBox, entityAABBs, 0, null
+ this.level, (Entity)(Object)this, initialCollisionBox, entityCollisionCache.entityAABBs(), 0, null // Leaf
+ this.level, (Entity)(Object)this, initialCollisionBox, entityCollisionCache.entityAABBs(), 0, null // Leaf - cache collision list
);
ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.getCollisionsForBlocksOrWorldBorder(
- this.level, (Entity)(Object)this, initialCollisionBox, potentialCollisionsVoxel, potentialCollisionsBB,
+ this.level, (Entity)(Object)this, initialCollisionBox, entityCollisionCache.potentialCollisionsVoxel(), entityCollisionCache.potentialCollisionsBB(),
+ this.level, (Entity)(Object)this, initialCollisionBox, entityCollisionCache.potentialCollisionsVoxel(), entityCollisionCache.potentialCollisionsBB(), // Leaf - cache collision list
ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.COLLISION_FLAG_CHECK_BORDER, null
);
- potentialCollisionsBB.addAll(entityAABBs);
- final Vec3 collided = ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.performCollisions(movement, currentBox, potentialCollisionsVoxel, potentialCollisionsBB);
+ entityCollisionCache.potentialCollisionsBB().addAll(entityCollisionCache.entityAABBs()); // Leaf
+ final Vec3 collided = ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.performCollisions(movement, currentBox, entityCollisionCache.potentialCollisionsVoxel(), entityCollisionCache.potentialCollisionsBB()); // Leaf
+ entityCollisionCache.potentialCollisionsBB().addAll(entityCollisionCache.entityAABBs()); // Leaf - cache collision list
+ final Vec3 collided = ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.performCollisions(movement, currentBox, entityCollisionCache.potentialCollisionsVoxel(), entityCollisionCache.potentialCollisionsBB()); // Leaf - cache collision list
final boolean collidedX = collided.x != movement.x;
final boolean collidedY = collided.y != movement.y;
@@ -1675,6 +1675,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1674,6 +1674,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
final double stepHeight;
if ((!collidedDownwards && !this.onGround) || (!collidedX && !collidedZ) || (stepHeight = (double)this.maxUpStep()) <= 0.0) {
+ entityCollisionCache.clear(); // Leaf
+ entityCollisionCache.clear(); // Leaf - cache collision list
return collided;
}
@@ -1685,7 +1686,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1684,7 +1685,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
final List<VoxelShape> stepVoxels = new ArrayList<>();
- final List<AABB> stepAABBs = entityAABBs;
+ final List<AABB> stepAABBs = entityCollisionCache.entityAABBs(); // Leaf
+ final List<AABB> stepAABBs = entityCollisionCache.entityAABBs(); // Leaf // Leaf - cache collision list
ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.getCollisionsForBlocksOrWorldBorder(
this.level, (Entity)(Object)this, stepRetrievalBox, stepVoxels, stepAABBs,
@@ -1699,6 +1700,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -1698,6 +1699,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
}
+ entityCollisionCache.clear(); // Leaf
+ entityCollisionCache.clear(); // Leaf - cache collision list
return collided;
// Paper end - optimise collisions
}

View File

@@ -16,7 +16,9 @@ public final class BlockMasks {
public static final int TRAP_DOOR_CL = 0x20;
public static final int WATER = 0x40;
public static final int LAVA = 0x80;
public static final int FLUID = (WATER | LAVA);
public static final int FLUID = WATER | LAVA;
public static final int IS_STATE_CLIMBABLE = org.dreeam.leaf.util.BlockMasks.CLIMBABLE_TAG | org.dreeam.leaf.util.BlockMasks.POWDER_SNOW_CL;
public static int init(final BlockState state) {
int i = 0;