From 8eb1640efd765ee190b892daaf1be6c45ba1488f Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 22 Mar 2016 23:41:34 -0400 Subject: [PATCH] Optimize isValidLocation for inlining Move test to the blockPosition class so that it can access local variables. Replace all calls to the new place to the unnecessary forward. diff --git a/src/main/java/net/minecraft/server/BaseBlockPosition.java b/src/main/java/net/minecraft/server/BaseBlockPosition.java index f0908a2..d1688e1 100644 --- a/src/main/java/net/minecraft/server/BaseBlockPosition.java +++ b/src/main/java/net/minecraft/server/BaseBlockPosition.java @@ -9,6 +9,9 @@ public class BaseBlockPosition implements Comparable { protected int a; protected int c; protected int d; + public boolean isValidLocation() { + return a >= -30000000 && d >= -30000000 && a < 30000000 && d < 30000000 && c >= 0 && c < 256; + } // Paper end public BaseBlockPosition(int i, int j, int k) { diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 0419eb4..90b4367 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -284,8 +284,8 @@ public abstract class World implements IBlockAccess { return this.getType(blockposition1); } - private boolean isValidLocation(BlockPosition blockposition) { - return blockposition.getX() >= -30000000 && blockposition.getZ() >= -30000000 && blockposition.getX() < 30000000 && blockposition.getZ() < 30000000 && blockposition.getY() >= 0 && blockposition.getY() < 256; + private static boolean isValidLocation(BlockPosition blockposition) { // Paper + return blockposition.isValidLocation(); // Paper } public boolean isEmpty(BlockPosition blockposition) { @@ -297,7 +297,7 @@ public abstract class World implements IBlockAccess { } public boolean a(BlockPosition blockposition, boolean flag) { - return !this.isValidLocation(blockposition) ? false : this.isChunkLoaded(blockposition.getX() >> 4, blockposition.getZ() >> 4, flag); + return !blockposition.isValidLocation() ? false : this.isChunkLoaded(blockposition.getX() >> 4, blockposition.getZ() >> 4, flag); // Paper } public boolean areChunksLoaded(BlockPosition blockposition, int i) { @@ -377,7 +377,7 @@ public abstract class World implements IBlockAccess { return true; } // CraftBukkit end - if (!this.isValidLocation(blockposition)) { + if (!blockposition.isValidLocation()) { // Paper return false; } else if (!this.isClientSide && this.worldData.getType() == WorldType.DEBUG_ALL_BLOCK_STATES) { return false; @@ -655,7 +655,7 @@ public abstract class World implements IBlockAccess { // Paper start - test if meets light level, return faster // logic copied from below public boolean isLightLevel(BlockPosition blockposition, int level) { - if (isValidLocation(blockposition)) { + if (blockposition.isValidLocation()) { if (this.getType(blockposition).f()) { if (this.c(blockposition.up(), false) >= level) { return true; @@ -768,7 +768,7 @@ public abstract class World implements IBlockAccess { blockposition = new BlockPosition(blockposition.getX(), 0, blockposition.getZ()); } - if (!this.isValidLocation(blockposition)) { + if (!blockposition.isValidLocation()) { // Paper return enumskyblock.c; } else if (!this.isLoaded(blockposition)) { return enumskyblock.c; @@ -780,7 +780,7 @@ public abstract class World implements IBlockAccess { } public void a(EnumSkyBlock enumskyblock, BlockPosition blockposition, int i) { - if (this.isValidLocation(blockposition)) { + if (blockposition.isValidLocation()) { // Paper if (this.isLoaded(blockposition)) { Chunk chunk = this.getChunkAtWorldCoords(blockposition); @@ -816,7 +816,7 @@ public abstract class World implements IBlockAccess { // CraftBukkit end Chunk chunk = this.getChunkIfLoaded(blockposition); if (chunk != null) { - return this.isValidLocation(blockposition) ? chunk.getBlockData(blockposition) : Blocks.AIR.getBlockData(); + return blockposition.isValidLocation() ? chunk.getBlockData(blockposition) : Blocks.AIR.getBlockData(); } return null; } @@ -834,7 +834,7 @@ public abstract class World implements IBlockAccess { } } // CraftBukkit end - if (!this.isValidLocation(blockposition)) { + if (!blockposition.isValidLocation()) { // Paper return Blocks.AIR.getBlockData(); } else { Chunk chunk = this.getChunkAtWorldCoords(blockposition); @@ -2050,7 +2050,7 @@ public abstract class World implements IBlockAccess { public Map capturedTileEntities = Maps.newHashMap(); public TileEntity getTileEntity(BlockPosition blockposition) { - if (!this.isValidLocation(blockposition)) { + if (!blockposition.isValidLocation()) { // Paper return null; } else { // CraftBukkit start @@ -2153,7 +2153,7 @@ public abstract class World implements IBlockAccess { } public boolean d(BlockPosition blockposition, boolean flag) { - if (!this.isValidLocation(blockposition)) { + if (!blockposition.isValidLocation()) { // Paper return flag; } else { Chunk chunk = this.chunkProvider.getLoadedChunkAt(blockposition.getX() >> 4, blockposition.getZ() >> 4); -- 2.7.1.windows.2