2021-06-11 14:02:28 +02:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Aikar <aikar@aikar.co>
|
|
|
|
Date: Mon, 26 Nov 2018 19:21:58 -0500
|
|
|
|
Subject: [PATCH] Prevent rayTrace from loading chunks
|
|
|
|
|
|
|
|
ray tracing into an unloaded chunk should be treated as a miss
|
|
|
|
this saves a ton of lag for when AI tries to raytrace near unloaded chunks.
|
|
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/BlockGetter.java b/src/main/java/net/minecraft/world/level/BlockGetter.java
|
2023-03-14 23:13:41 +01:00
|
|
|
index 42e05380a875c52cd6e1cb337958b431a751698b..5ed0dbed49db210e54cf2ece3e8605feb956bc69 100644
|
2021-06-11 14:02:28 +02:00
|
|
|
--- a/src/main/java/net/minecraft/world/level/BlockGetter.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/BlockGetter.java
|
2021-06-13 10:26:58 +02:00
|
|
|
@@ -75,7 +75,15 @@ public interface BlockGetter extends LevelHeightAccessor {
|
2021-06-11 14:02:28 +02:00
|
|
|
|
|
|
|
// CraftBukkit start - moved block handling into separate method for use by Block#rayTrace
|
2021-11-24 01:20:31 +01:00
|
|
|
default BlockHitResult clip(ClipContext raytrace1, BlockPos blockposition) {
|
2021-06-11 14:02:28 +02:00
|
|
|
- BlockState iblockdata = this.getBlockState(blockposition);
|
|
|
|
+ // Paper start - Prevent raytrace from loading chunks
|
2021-12-06 00:32:02 +01:00
|
|
|
+ BlockState iblockdata = this.getBlockStateIfLoaded(blockposition);
|
2021-06-11 14:02:28 +02:00
|
|
|
+ if (iblockdata == null) {
|
|
|
|
+ // copied the last function parameter (listed below)
|
|
|
|
+ Vec3 vec3d = raytrace1.getFrom().subtract(raytrace1.getTo());
|
|
|
|
+
|
2023-03-14 23:13:41 +01:00
|
|
|
+ return BlockHitResult.miss(raytrace1.getTo(), Direction.getNearest(vec3d.x, vec3d.y, vec3d.z), BlockPos.containing(raytrace1.getTo()));
|
2021-06-11 14:02:28 +02:00
|
|
|
+ }
|
|
|
|
+ // Paper end
|
|
|
|
FluidState fluid = this.getFluidState(blockposition);
|
|
|
|
Vec3 vec3d = raytrace1.getFrom();
|
|
|
|
Vec3 vec3d1 = raytrace1.getTo();
|