Fix crash in RegionLimitedWorldAccess

This commit is contained in:
Zach Brown 2018-07-19 16:51:32 -05:00
parent 19bf52c4f4
commit 18ae09c90a
No known key found for this signature in database
GPG Key ID: CC9DA35FC5450B76

View File

@ -1,4 +1,4 @@
From bd9c2d042a9a05c79cda70d8b86cb7108a88fb69 Mon Sep 17 00:00:00 2001 From 717f1583e8a53256e87359d2956d13e9f0501ce0 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co> From: Aikar <aikar@aikar.co>
Date: Fri, 17 Jun 2016 20:50:11 -0400 Date: Fri, 17 Jun 2016 20:50:11 -0400
Subject: [PATCH] Fix Old Sign Conversion Subject: [PATCH] Fix Old Sign Conversion
@ -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
@@ -88,7 +88,7 @@ public class DefinedStructure { @@ -88,7 +88,7 @@ public class DefinedStructure {
@ -33,7 +33,7 @@ index 65910508f..002b74175 100644
} }
} }
@@ -285,21 +287,27 @@ public class DefinedStructure { @@ -285,21 +287,24 @@ public class DefinedStructure {
voxelshapebitset.a(blockposition3.getX() - i2, blockposition3.getY() - j2, blockposition3.getZ() - l1, true, true); voxelshapebitset.a(blockposition3.getX() - i2, blockposition3.getY() - j2, blockposition3.getZ() - l1, true, true);
} }
@ -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,12 +61,12 @@ 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
} }
}); });
@@ -734,7 +742,7 @@ public class DefinedStructure { @@ -734,7 +739,7 @@ public class DefinedStructure {
public IBlockData a(int i) { public IBlockData a(int i) {
IBlockData iblockdata = (IBlockData) this.b.fromId(i); IBlockData iblockdata = (IBlockData) this.b.fromId(i);
@ -112,5 +109,5 @@ index 939d8790f..335a4d27f 100644
if (this.world instanceof WorldServer) { if (this.world instanceof WorldServer) {
try { try {
-- --
2.18.0 2.17.1