Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-15 02:50:09 +01:00
9ff01b16ab
This will be used by my next commit. But trying to get the build going since CI blew up
123 Zeilen
5.7 KiB
Diff
123 Zeilen
5.7 KiB
Diff
From 582d4af0eb99687080da0728560e2202ed04a87c 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 825e931..b5406e9 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);
|
|
@@ -2063,7 +2063,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
|
|
@@ -2166,7 +2166,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.4
|
|
|