From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Sun, 7 Mar 2021 13:15:04 -0800 Subject: [PATCH] Do not run raytrace logic for AIR Saves 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 bd3eb39981c1d6028804f05c21eec6127389ca40..799837c172a5f7856c78e6fe2595c575f3058a5e 100644 --- a/src/main/java/net/minecraft/world/level/BlockGetter.java +++ b/src/main/java/net/minecraft/world/level/BlockGetter.java @@ -92,6 +92,7 @@ public interface BlockGetter extends LevelHeightAccessor { return BlockHitResult.miss(raytrace1.getTo(), Direction.getNearest(vec3d.x, vec3d.y, vec3d.z), BlockPos.containing(raytrace1.getTo())); } // Paper end + if (iblockdata.isAir()) return null; // Paper - optimise air cases FluidState fluid = iblockdata.getFluidState(); // Paper - don't need to go to world state again Vec3 vec3d = raytrace1.getFrom(); Vec3 vec3d1 = raytrace1.getTo();