Fix crash in RegionLimitedWorldAccess

This commit is contained in:
Zach Brown
2018-07-19 16:51:32 -05:00
parent 55aca74394
commit c17484979e

View File

@@ -9,7 +9,7 @@ Subject: [PATCH] Fix Old Sign Conversion
This causes Igloos and such to render broken signs. We fix this by ignoring sign conversion for Defined Structures This causes Igloos and such to render broken signs. We fix this by ignoring sign conversion for Defined Structures
diff --git a/src/main/java/net/minecraft/server/DefinedStructure.java b/src/main/java/net/minecraft/server/DefinedStructure.java diff --git a/src/main/java/net/minecraft/server/DefinedStructure.java b/src/main/java/net/minecraft/server/DefinedStructure.java
index 65910508f..002b74175 100644 index 65910508f..2109f316d 100644
--- a/src/main/java/net/minecraft/server/DefinedStructure.java --- a/src/main/java/net/minecraft/server/DefinedStructure.java
+++ b/src/main/java/net/minecraft/server/DefinedStructure.java +++ b/src/main/java/net/minecraft/server/DefinedStructure.java
@@ -0,0 +0,0 @@ public class DefinedStructure { @@ -0,0 +0,0 @@ public class DefinedStructure {
@@ -42,12 +42,9 @@ index 65910508f..002b74175 100644
- BlockPosition blockposition1 = blockposition.shift(enumdirection); - BlockPosition blockposition1 = blockposition.shift(enumdirection);
- IBlockData iblockdata = generatoraccess.getType(blockposition); - IBlockData iblockdata = generatoraccess.getType(blockposition);
+ // Paper start - decompile fixes + // Paper start - decompile fixes
+ int finalL = l; + int finalL = l1;
+ int finalI = i1;
+ int finalJ = j1;
+ int finalK = k1;
+ voxelshapebitset.a((enumdirection, i_, j_, k_) -> { + voxelshapebitset.a((enumdirection, i_, j_, k_) -> {
+ BlockPosition innerBlockposition = new BlockPosition(finalL + i_, finalI + j_, finalJ + k_); + BlockPosition innerBlockposition = new BlockPosition(i2 + i_, j2 + j_, finalL + k_);
+ BlockPosition blockposition1 = innerBlockposition.shift(enumdirection); + BlockPosition blockposition1 = innerBlockposition.shift(enumdirection);
+ IBlockData iblockdata = generatoraccess.getType(innerBlockposition); + IBlockData iblockdata = generatoraccess.getType(innerBlockposition);
IBlockData iblockdata1 = generatoraccess.getType(blockposition1); IBlockData iblockdata1 = generatoraccess.getType(blockposition1);
@@ -56,7 +53,7 @@ index 65910508f..002b74175 100644
if (iblockdata != iblockdata2) { if (iblockdata != iblockdata2) {
- generatoraccess.setTypeAndData(blockposition, iblockdata2, k1 & -2 | 16); - generatoraccess.setTypeAndData(blockposition, iblockdata2, k1 & -2 | 16);
+ generatoraccess.setTypeAndData(innerBlockposition, iblockdata2, finalK & -2 | 16); + generatoraccess.setTypeAndData(innerBlockposition, iblockdata2, i & -2 | 16);
} }
- IBlockData iblockdata3 = iblockdata1.updateState(enumdirection.opposite(), iblockdata2, generatoraccess, blockposition1, blockposition); - IBlockData iblockdata3 = iblockdata1.updateState(enumdirection.opposite(), iblockdata2, generatoraccess, blockposition1, blockposition);
@@ -64,7 +61,7 @@ index 65910508f..002b74175 100644
if (iblockdata1 != iblockdata3) { if (iblockdata1 != iblockdata3) {
- generatoraccess.setTypeAndData(blockposition1, iblockdata3, k1 & -2 | 16); - generatoraccess.setTypeAndData(blockposition1, iblockdata3, k1 & -2 | 16);
+ generatoraccess.setTypeAndData(blockposition1, iblockdata3, finalK & -2 | 16); + generatoraccess.setTypeAndData(blockposition1, iblockdata3, i & -2 | 16);
+ // Paper end - decompile fixes + // Paper end - decompile fixes
} }