diff options
Diffstat (limited to 'patches/server/0637-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch')
-rw-r--r-- | patches/server/0637-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/patches/server/0637-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch b/patches/server/0637-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch new file mode 100644 index 0000000000..0ab3e48f48 --- /dev/null +++ b/patches/server/0637-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch @@ -0,0 +1,26 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf <[email protected]> +Date: Fri, 28 Aug 2020 12:33:47 -0700 +Subject: [PATCH] Don't lookup fluid state when raytracing, skip air blocks + +Just use the iblockdata already retrieved, removes a getType call. + +Also save approx. 5% for the raytrace call, as most (expensive) +raytracing tends to go through air and returning early is an +easy win. The remaining problems with this function +are mostly with the block getting itself. + +diff --git a/src/main/java/net/minecraft/world/level/BlockGetter.java b/src/main/java/net/minecraft/world/level/BlockGetter.java +index c3760e0c8ac0b3ea200f4e1c237e250137a78caf..c978f3b2d42f512e982f289e76c2422e41b7eec6 100644 +--- a/src/main/java/net/minecraft/world/level/BlockGetter.java ++++ b/src/main/java/net/minecraft/world/level/BlockGetter.java +@@ -79,7 +79,8 @@ public interface BlockGetter extends LevelHeightAccessor { + return BlockHitResult.miss(raytrace1.getTo(), Direction.getNearest(vec3d.x, vec3d.y, vec3d.z), BlockPos.containing(raytrace1.getTo())); + } + // Paper end - Prevent raytrace from loading chunks +- FluidState fluid = this.getFluidState(blockposition); ++ if (iblockdata.isAir()) return null; // Paper - Perf: optimise air cases ++ FluidState fluid = iblockdata.getFluidState(); // Paper - Perf: don't need to go to world state again + Vec3 vec3d = raytrace1.getFrom(); + Vec3 vec3d1 = raytrace1.getTo(); + VoxelShape voxelshape = raytrace1.getBlockShape(iblockdata, this, blockposition); |