diff --git a/Spigot-Server-Patches/0440-fix-blockstate-capture-undoing.patch b/Spigot-Server-Patches/0440-fix-blockstate-capture-undoing.patch new file mode 100644 index 000000000..378b503c9 --- /dev/null +++ b/Spigot-Server-Patches/0440-fix-blockstate-capture-undoing.patch @@ -0,0 +1,32 @@ +From a9c21212ccc71c68ef17076e300d53a23a7ed836 Mon Sep 17 00:00:00 2001 +From: Trigary +Date: Mon, 17 Feb 2020 22:53:33 +0100 +Subject: [PATCH] fix blockstate capture undoing + + +diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java +index 3c966b4ab..baad98517 100644 +--- a/src/main/java/net/minecraft/server/World.java ++++ b/src/main/java/net/minecraft/server/World.java +@@ -349,7 +349,9 @@ public abstract class World implements GeneratorAccess, AutoCloseable { + Block block = iblockdata.getBlock(); + + // CraftBukkit start - capture blockstates ++ boolean capturedBlockState = false; //Paper - fix blockstate capture undoing + if (this.captureBlockStates && !this.capturedBlockStates.containsKey(blockposition)) { ++ capturedBlockState = true; //Paper - fix blockstate capture undoing + CraftBlockState blockstate = (CraftBlockState) world.getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()).getState(); // Paper - use CB getState to get a suitable snapshot + this.capturedBlockStates.put(blockposition.immutableCopy(), blockstate); + } +@@ -360,7 +362,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable { + + if (iblockdata1 == null) { + // CraftBukkit start - remove blockstate if failed +- if (this.captureBlockStates) { ++ if (/*this.captureBlockStates*/ capturedBlockState) { //Paper - fix blockstate capture undoing + this.capturedBlockStates.remove(blockposition); + } + // CraftBukkit end +-- +2.16.1.windows.4 +