Paper/Spigot-Server-Patches/0064-Optimize-getBlockData.patch
Byteflux 3fd3544a36 Add Lighting Queue
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.
2016-03-24 23:38:38 -07:00

32 lines
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