From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: DoctaEnkoda Date: Tue, 11 May 2021 00:28:13 +0200 Subject: [PATCH] Optimize collisions diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java index 7e943d9ba04abd964850d9b0109c5c6c9a1e5611..0ec132efc49880d9b230e176bce79732b7231765 100644 --- a/src/main/java/net/minecraft/server/level/WorldServer.java +++ b/src/main/java/net/minecraft/server/level/WorldServer.java @@ -678,16 +678,10 @@ public class WorldServer extends World implements GeneratorAccessSeed { } } - int minBlockX = MathHelper.floor(axisalignedbb.minX - MCUtil.COLLISION_EPSILON) - 1; - int maxBlockX = MathHelper.floor(axisalignedbb.maxX + MCUtil.COLLISION_EPSILON) + 1; - + // Purpur Start Rebase - Calculate when needed only int minBlockY = MathHelper.floor(axisalignedbb.minY - MCUtil.COLLISION_EPSILON) - 1; int maxBlockY = MathHelper.floor(axisalignedbb.maxY + MCUtil.COLLISION_EPSILON) + 1; - int minBlockZ = MathHelper.floor(axisalignedbb.minZ - MCUtil.COLLISION_EPSILON) - 1; - int maxBlockZ = MathHelper.floor(axisalignedbb.maxZ + MCUtil.COLLISION_EPSILON) + 1; - - BlockPosition.MutableBlockPosition mutablePos = new BlockPosition.MutableBlockPosition(); net.minecraft.world.phys.shapes.VoxelShapeCollision collisionShape = null; @@ -697,6 +691,13 @@ public class WorldServer extends World implements GeneratorAccessSeed { return ret; } + int minBlockX = MathHelper.floor(axisalignedbb.minX - MCUtil.COLLISION_EPSILON) - 1; + int maxBlockX = MathHelper.floor(axisalignedbb.maxX + MCUtil.COLLISION_EPSILON) + 1; + + int minBlockZ = MathHelper.floor(axisalignedbb.minZ - MCUtil.COLLISION_EPSILON) - 1; + int maxBlockZ = MathHelper.floor(axisalignedbb.maxZ + MCUtil.COLLISION_EPSILON) + 1; + // Purpur End + int minYIterate = Math.max(0, minBlockY); int maxYIterate = Math.min(255, maxBlockY); diff --git a/src/main/java/net/minecraft/world/level/ChunkCache.java b/src/main/java/net/minecraft/world/level/ChunkCache.java index b547eb352f90f68cf36ffb82e43ad7acb1892f6a..456ef170f8885ad42c3c2bd2a54c5bc46bfe30cd 100644 --- a/src/main/java/net/minecraft/world/level/ChunkCache.java +++ b/src/main/java/net/minecraft/world/level/ChunkCache.java @@ -60,16 +60,10 @@ public class ChunkCache implements IBlockAccess, ICollisionAccess { } } - int minBlockX = net.minecraft.util.MathHelper.floor(axisalignedbb.minX - net.minecraft.server.MCUtil.COLLISION_EPSILON) - 1; - int maxBlockX = net.minecraft.util.MathHelper.floor(axisalignedbb.maxX + net.minecraft.server.MCUtil.COLLISION_EPSILON) + 1; - + // Purpur Rebase - Calculate when needed only int minBlockY = net.minecraft.util.MathHelper.floor(axisalignedbb.minY - net.minecraft.server.MCUtil.COLLISION_EPSILON) - 1; int maxBlockY = net.minecraft.util.MathHelper.floor(axisalignedbb.maxY + net.minecraft.server.MCUtil.COLLISION_EPSILON) + 1; - - int minBlockZ = net.minecraft.util.MathHelper.floor(axisalignedbb.minZ - net.minecraft.server.MCUtil.COLLISION_EPSILON) - 1; - int maxBlockZ = net.minecraft.util.MathHelper.floor(axisalignedbb.maxZ + net.minecraft.server.MCUtil.COLLISION_EPSILON) + 1; - - + BlockPosition.MutableBlockPosition mutablePos = new BlockPosition.MutableBlockPosition(); net.minecraft.world.phys.shapes.VoxelShapeCollision collisionShape = null; @@ -79,6 +73,13 @@ public class ChunkCache implements IBlockAccess, ICollisionAccess { return ret; } + int minBlockX = net.minecraft.util.MathHelper.floor(axisalignedbb.minX - net.minecraft.server.MCUtil.COLLISION_EPSILON) - 1; + int maxBlockX = net.minecraft.util.MathHelper.floor(axisalignedbb.maxX + net.minecraft.server.MCUtil.COLLISION_EPSILON) + 1; + + int minBlockZ = net.minecraft.util.MathHelper.floor(axisalignedbb.minZ - net.minecraft.server.MCUtil.COLLISION_EPSILON) - 1; + int maxBlockZ = net.minecraft.util.MathHelper.floor(axisalignedbb.maxZ + net.minecraft.server.MCUtil.COLLISION_EPSILON) + 1; + // Purpur End + int minYIterate = Math.max(0, minBlockY); int maxYIterate = Math.min(255, maxBlockY);