remove extraneous checks in bsi

This commit is contained in:
Leijurv 2018-11-23 09:03:51 -08:00
parent 70f8d1d4ae
commit b228f4c6fb
No known key found for this signature in database
GPG Key ID: 44A3EA646EADAC6A
2 changed files with 7 additions and 14 deletions

View File

@ -86,7 +86,7 @@ public interface MovementHelper extends ActionCosts, Helper {
// so the only remaining dynamic isPassables are snow and trapdoor
// if they're cached as a top block, we don't know their metadata
// default to true (mostly because it would otherwise make long distance pathing through snowy biomes impossible)
if (bsi.getWorld().getChunk(x >> 4, z >> 4) instanceof EmptyChunk) {
if (!bsi.worldContainsLoadedChunk(x, z)) {
return true;
}
if (snow) {

View File

@ -31,7 +31,6 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.EmptyChunk;
/**
* Wraps get for chuck caching capability
@ -40,7 +39,6 @@ import net.minecraft.world.chunk.EmptyChunk;
*/
public class BlockStateInterface {
private final World world;
private final Long2ObjectMap<Chunk> loadedChunks;
private final WorldData worldData;
@ -55,15 +53,14 @@ public class BlockStateInterface {
public BlockStateInterface(World world, WorldData worldData) {
this.worldData = worldData;
this.world = world;
this.loadedChunks = ((IChunkProviderClient) world.getChunkProvider()).loadedChunks();
if (!Minecraft.getMinecraft().isCallingFromMinecraftThread()) {
throw new IllegalStateException();
}
}
public World getWorld() {
return world;
public boolean worldContainsLoadedChunk(int blockX, int blockZ) {
return loadedChunks.containsKey(ChunkPos.asLong(blockX >> 4, blockZ >> 4));
}
public static Block getBlock(IPlayerContext ctx, BlockPos pos) { // won't be called from the pathing thread because the pathing thread doesn't make a single blockpos pog
@ -98,13 +95,9 @@ public class BlockStateInterface {
if (cached != null && cached.x == x >> 4 && cached.z == z >> 4) {
return cached.getBlockState(x, y, z);
}
Chunk c2 = loadedChunks.get(ChunkPos.asLong(x >> 4, z >> 4));
Chunk chunk = world.getChunk(x >> 4, z >> 4);
Chunk chunk = loadedChunks.get(ChunkPos.asLong(x >> 4, z >> 4));
if ((c2 != null && c2 != chunk) || (c2 == null && !(chunk instanceof EmptyChunk))) {
throw new IllegalStateException((((IChunkProviderClient) world.getChunkProvider()).loadedChunks() == loadedChunks) + " " + x + " " + y + " " + c2 + " " + chunk);
}
if (chunk.isLoaded()) {
if (chunk != null && chunk.isLoaded()) {
prev = chunk;
return chunk.getBlockState(x, y, z);
}
@ -135,8 +128,8 @@ public class BlockStateInterface {
if (prevChunk != null && prevChunk.x == x >> 4 && prevChunk.z == z >> 4) {
return true;
}
prevChunk = world.getChunk(x >> 4, z >> 4);
if (prevChunk.isLoaded()) {
prevChunk = loadedChunks.get(ChunkPos.asLong(x >> 4, z >> 4));
if (prevChunk != null && prevChunk.isLoaded()) {
prev = prevChunk;
return true;
}