From 8abad348b67a8737ba9f5b7b9d263d64a1fba2f3 Mon Sep 17 00:00:00 2001 From: Aikar Date: Mon, 21 Mar 2016 23:38:19 -0400 Subject: [PATCH] Cache BlockState for Blocks Improve performance for many plugins that call .getState() multiple times for things like signs that have to "build" sign data. --- .../Cache-BlockState-for-Blocks.patch | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Spigot-Server-Patches/Cache-BlockState-for-Blocks.patch diff --git a/Spigot-Server-Patches/Cache-BlockState-for-Blocks.patch b/Spigot-Server-Patches/Cache-BlockState-for-Blocks.patch new file mode 100644 index 000000000..051612a23 --- /dev/null +++ b/Spigot-Server-Patches/Cache-BlockState-for-Blocks.patch @@ -0,0 +1,37 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Thu, 14 Jan 2016 01:16:30 -0500 +Subject: [PATCH] Cache BlockState for Blocks + +Improve performance for many plugins that call .getState() multiple +times for things like signs that have to "build" sign data. + +diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java ++++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +@@ -0,0 +0,0 @@ import org.bukkit.util.BlockVector; + + public class CraftBlock implements Block { + private final CraftChunk chunk; ++ private BlockState state; // Paper + private final int x; + private final int y; + private final int z; +@@ -0,0 +0,0 @@ public class CraftBlock implements Block { + } + } + ++ // Paper start + public BlockState getState() { ++ if (this.state == null) { ++ this.state = getState0(); ++ } ++ return this.state; ++ } ++ private BlockState getState0() { ++ // Paper end + Material material = getType(); + + switch (material) { +-- \ No newline at end of file