Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-11-15 12:30:06 +01:00
27 Zeilen
1.6 KiB
Diff
27 Zeilen
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
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 f39ccc0d2a4eea4e1e0b15608780c7c4a749e672..7e1a332168357b9af14dbe3299549c2c93903fa6 100644
|
|
--- a/src/main/java/net/minecraft/world/level/BlockGetter.java
|
|
+++ b/src/main/java/net/minecraft/world/level/BlockGetter.java
|
|
@@ -80,7 +80,8 @@ public interface BlockGetter extends LevelHeightAccessor {
|
|
return BlockHitResult.miss(raytrace1.getTo(), Direction.getApproximateNearest(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);
|