From 5b212525c7d15435ec3eb9c7a1881168f37f796e Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 28 Sep 2018 22:40:04 -0400 Subject: [PATCH] Don't recheck type after setting a block The server does a "Did my update succeed" check after setting a blocks data to a chunk. However, writes can not fail outside of a hard error or a a race condition from multiple threads writing, which is not something that should ever occur on the server. So this check is pointless, as if it did occur, the server would be having data corruption issues anyways. This provides a small boost to all setType calls. --- ...t-recheck-type-after-setting-a-block.patch | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Spigot-Server-Patches/Don-t-recheck-type-after-setting-a-block.patch diff --git a/Spigot-Server-Patches/Don-t-recheck-type-after-setting-a-block.patch b/Spigot-Server-Patches/Don-t-recheck-type-after-setting-a-block.patch new file mode 100644 index 0000000000..93b5c250b1 --- /dev/null +++ b/Spigot-Server-Patches/Don-t-recheck-type-after-setting-a-block.patch @@ -0,0 +1,31 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Fri, 28 Sep 2018 22:27:33 -0400 +Subject: [PATCH] Don't recheck type after setting a block + +The server does a "Did my update succeed" check after setting +a blocks data to a chunk. + +However, writes can not fail outside of a hard error or a +a race condition from multiple threads writing, which is +not something that should ever occur on the server. + +So this check is pointless, as if it did occur, the server would +be having data corruption issues anyways. + +This provides a small boost to all setType calls. + +diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java +index e4bda70bb9..895eb60854 100644 +--- a/src/main/java/net/minecraft/server/Chunk.java ++++ b/src/main/java/net/minecraft/server/Chunk.java +@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess { + this.world.n(blockposition); + } + +- if (chunksection.getType(i, j & 15, k).getBlock() != block) { ++ if (false && chunksection.getType(i, j & 15, k).getBlock() != block) { // Paper - don't need to recheck this - this would only fail due to non main thread writes which are not supported + return null; + } else { + if (flag1) { +-- \ No newline at end of file