geforkt von Mirrors/Paper
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.
32 Zeilen
1.2 KiB
Diff
32 Zeilen
1.2 KiB
Diff
From 913ffd56eaf018ef08a5581bdb34cf4e98d9327e Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Thu, 3 Mar 2016 02:07:55 -0600
|
|
Subject: [PATCH] Optimize getBlockData
|
|
|
|
Hot method, so reduce # of instructions for the method.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
|
index 9020b1b..f233c13 100644
|
|
--- a/src/main/java/net/minecraft/server/Chunk.java
|
|
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
|
@@ -403,8 +403,15 @@ public class Chunk {
|
|
return this.a(i, j, k).c();
|
|
}
|
|
|
|
+ // Paper - Optimize getBlockData
|
|
public IBlockData getBlockData(BlockPosition blockposition) {
|
|
- return this.a(blockposition.getX(), blockposition.getY(), blockposition.getZ());
|
|
+ if (blockposition.getY() >= 0 && blockposition.getY() >> 4 < this.sections.length) {
|
|
+ ChunkSection chunksection = this.sections[blockposition.getY() >> 4];
|
|
+ if (chunksection != null) {
|
|
+ return chunksection.getType(blockposition.getX() & 15, blockposition.getY() & 15, blockposition.getZ() & 15);
|
|
+ }
|
|
+ }
|
|
+ return Blocks.AIR.getBlockData();
|
|
}
|
|
|
|
public IBlockData a(final int i, final int j, final int k) {
|
|
--
|
|
2.7.1.windows.2
|
|
|