Paper/Spigot-Server-Patches/0408-Prevent-rayTrace-from-loading-chunks.patch

36 lines
2 KiB
Diff

From 52c7cca32fd1cec519b9b300049ac347f4ab27b2 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/server/World.java b/src/main/java/net/minecraft/server/World.java
index c5960cf4c..e11e22836 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -853,7 +853,8 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
int i1 = MathHelper.floor(d1);
int j1 = MathHelper.floor(d2);
BlockPosition blockposition = new BlockPosition(l, i1, j1);
- IBlockData iblockdata = this.getType(blockposition);
+ IBlockData iblockdata = this.getTypeIfLoaded(blockposition); // Paper
+ if (iblockdata == null) return null; // Paper
Fluid fluid = this.getFluid(blockposition);
boolean flag2;
boolean flag3;
@@ -975,7 +976,8 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
i1 = MathHelper.floor(d1) - (enumdirection == EnumDirection.UP ? 1 : 0);
j1 = MathHelper.floor(d2) - (enumdirection == EnumDirection.SOUTH ? 1 : 0);
blockposition = new BlockPosition(l, i1, j1);
- IBlockData iblockdata1 = this.getType(blockposition);
+ IBlockData iblockdata1 = this.getTypeIfLoaded(blockposition); // Paper
+ if (iblockdata1 == null) return null; // Paper
Fluid fluid1 = this.getFluid(blockposition);
if (!flag || iblockdata1.getMaterial() == Material.PORTAL || !iblockdata1.getCollisionShape(this, blockposition).isEmpty()) {
--
2.16.1.windows.1