aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches-Unmapped/0314-Prevent-rayTrace-from-loading-chunks.patch
blob: 0295326280f2586fb8ba1b8eb833681042a1f7a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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/IBlockAccess.java b/src/main/java/net/minecraft/world/level/IBlockAccess.java
index e799765ecfada1eec78beb71651e52ad355a30aa..21ce19b9caf3150535a3f84027242a93bdd0d263 100644
--- a/src/main/java/net/minecraft/world/level/IBlockAccess.java
+++ b/src/main/java/net/minecraft/world/level/IBlockAccess.java
@@ -58,7 +58,15 @@ public interface IBlockAccess {
 
     // CraftBukkit start - moved block handling into separate method for use by Block#rayTrace
     default MovingObjectPositionBlock rayTraceBlock(RayTrace raytrace1, BlockPosition blockposition) {
-            IBlockData iblockdata = this.getType(blockposition);
+            // Paper start - Prevent raytrace from loading chunks
+            IBlockData iblockdata = this.getTypeIfLoaded(blockposition);
+            if (iblockdata == null) {
+                // copied the last function parameter (listed below)
+                Vec3D vec3d = raytrace1.b().d(raytrace1.a());
+
+                return MovingObjectPositionBlock.a(raytrace1.a(), EnumDirection.a(vec3d.x, vec3d.y, vec3d.z), new BlockPosition(raytrace1.a()));
+            }
+            // Paper end
             Fluid fluid = this.getFluid(blockposition);
             Vec3D vec3d = raytrace1.b();
             Vec3D vec3d1 = raytrace1.a();