From bd2a5095d3bfce1308b3935d07f90cc8f31a00b0 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 10 May 2020 02:26:21 -0400 Subject: [PATCH] Don't use our modified chunk checks for collision in world gen Fixes issues with errors in logs on generating chunks --- ...ptimize-Collision-to-not-load-chunks.patch | 19 ++++++++++++------- ...me-Streams-usage-in-Entity-Collision.patch | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Spigot-Server-Patches/Optimize-Collision-to-not-load-chunks.patch b/Spigot-Server-Patches/Optimize-Collision-to-not-load-chunks.patch index f7f280ed33..6a2d838268 100644 --- a/Spigot-Server-Patches/Optimize-Collision-to-not-load-chunks.patch +++ b/Spigot-Server-Patches/Optimize-Collision-to-not-load-chunks.patch @@ -30,20 +30,25 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 int j2 = cursorposition.e(); if (j2 != 3) { -- int k2 = k1 >> 4; -- int l2 = i2 >> 4; ++ // Paper start - ensure we don't load chunks + int k2 = k1 >> 4; + int l2 = i2 >> 4; - IBlockAccess iblockaccess = ICollisionAccess.this.c(k2, l2); - - if (iblockaccess != null) { - blockposition_mutableblockposition.d(k1, l1, i2); - IBlockData iblockdata = iblockaccess.getType(blockposition_mutableblockposition); -+ // Paper start - ensure we don't load chunks -+ //int k2 = k1 >> 4; -+ //int l2 = i2 >> 4; + boolean far = entity != null && MCUtil.distance(entity.locX(), entity.locY(), entity.locZ(), x, y, z) > 8; -+ blockposition_mutableblockposition.setValues(x, y, z); // Paper - moved up ++ blockposition_mutableblockposition.setValues(x, y, z); + -+ IBlockData iblockdata = !far ? ICollisionAccess.this.getType(blockposition_mutableblockposition) : ICollisionAccess.this.getTypeIfLoaded(blockposition_mutableblockposition); ++ boolean isRegionLimited = ICollisionAccess.this instanceof RegionLimitedWorldAccess; ++ IBlockData iblockdata = !isRegionLimited ? ICollisionAccess.this.getTypeIfLoaded(blockposition_mutableblockposition) : null; ++ if ((isRegionLimited || !far) && iblockdata == null) { ++ IBlockAccess c = ICollisionAccess.this.c(k2, l2); ++ if (c != null) { ++ iblockdata = c.getType(blockposition_mutableblockposition); ++ } ++ } + if (iblockdata == null) { + if (!(entity instanceof EntityPlayer) || entity.world.paperConfig.preventMovingIntoUnloadedChunks) { + VoxelShape voxelshape3 = VoxelShapes.of(far ? entity.getBoundingBox() : new AxisAlignedBB(new BlockPosition(x, y, z))); diff --git a/Spigot-Server-Patches/Remove-some-Streams-usage-in-Entity-Collision.patch b/Spigot-Server-Patches/Remove-some-Streams-usage-in-Entity-Collision.patch index 193f547464..990346a998 100644 --- a/Spigot-Server-Patches/Remove-some-Streams-usage-in-Entity-Collision.patch +++ b/Spigot-Server-Patches/Remove-some-Streams-usage-in-Entity-Collision.patch @@ -95,7 +95,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @@ -0,0 +0,0 @@ public interface ICollisionAccess extends IBlockAccess { - IBlockData iblockdata = !far ? ICollisionAccess.this.getType(blockposition_mutableblockposition) : ICollisionAccess.this.getTypeIfLoaded(blockposition_mutableblockposition); + } if (iblockdata == null) { if (!(entity instanceof EntityPlayer) || entity.world.paperConfig.preventMovingIntoUnloadedChunks) { - VoxelShape voxelshape3 = VoxelShapes.of(far ? entity.getBoundingBox() : new AxisAlignedBB(new BlockPosition(x, y, z)));