mirror of
https://github.com/PaperMC/Paper.git
synced 2025-03-13 19:28:03 +01:00
Optimize isValidLocation for inlining - Resolves #123
This commit is contained in:
parent
97e083b9b0
commit
7ab893447a
1 changed files with 120 additions and 0 deletions
|
@ -0,0 +1,120 @@
|
|||
From 0000000000000000000000000000000000000000 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/BaseBlockPosition.java
|
||||
+++ b/src/main/java/net/minecraft/server/BaseBlockPosition.java
|
||||
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/World.java
|
||||
+++ b/src/main/java/net/minecraft/server/World.java
|
||||
@@ -0,0 +0,0 @@ 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) {
|
||||
@@ -0,0 +0,0 @@ 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) {
|
||||
@@ -0,0 +0,0 @@ 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;
|
||||
@@ -0,0 +0,0 @@ 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;
|
||||
@@ -0,0 +0,0 @@ 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;
|
||||
@@ -0,0 +0,0 @@ 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);
|
||||
|
||||
@@ -0,0 +0,0 @@ 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;
|
||||
}
|
||||
@@ -0,0 +0,0 @@ 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);
|
||||
@@ -0,0 +0,0 @@ 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
|
||||
@@ -0,0 +0,0 @@ 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);
|
||||
--
|
Loading…
Add table
Reference in a new issue