3fd3544a36
The lighting queue spreads out the processing of light updates across multiple ticks based on how much free time the server has left at the end of the tick.
122 lines
5.7 KiB
Diff
122 lines
5.7 KiB
Diff
From 8eb1640efd765ee190b892daaf1be6c45ba1488f Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
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<BaseBlockPosition> {
|
|
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<BlockPosition, TileEntity> 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
|
|
|