Created
September 20, 2018 23:01
-
-
Save aikar/5da731bc0fb3dbd322fac5d15689ffef to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java | |
index 33f5aa721f..ca5cd62866 100644 | |
--- a/src/main/java/net/minecraft/server/Chunk.java | |
+++ b/src/main/java/net/minecraft/server/Chunk.java | |
@@ -521,6 +521,26 @@ public class Chunk implements IChunkAccess { | |
return this.a(blockposition, iblockdata, flag, true); | |
} | |
+ // Paper start | |
+ public void setTypeDirect(BlockPosition blockposition, IBlockData iblockdata) { | |
+ int i = blockposition.getX() & 15; | |
+ int j = blockposition.getY(); | |
+ int k = blockposition.getZ() & 15; | |
+ ChunkSection section = this.sections[j >> 4]; | |
+ | |
+ if (section == Chunk.EMPTY_CHUNK_SECTION) { | |
+ if (iblockdata.isAir()) { | |
+ return; | |
+ } | |
+ | |
+ section = new ChunkSection(j >> 4 << 4, this.world.worldProvider.g(), this, this.world, true); // Paper - Anti-Xray | |
+ this.sections[j >> 4] = section; | |
+ } | |
+ | |
+ section.setType(i, j & 15, k, iblockdata); | |
+ } | |
+ // Paper end | |
+ | |
@Nullable | |
public IBlockData a(BlockPosition blockposition, IBlockData iblockdata, boolean flag, boolean doPlace) { | |
// CraftBukkit end | |
diff --git a/src/main/java/net/minecraft/server/ChunkConverter.java b/src/main/java/net/minecraft/server/ChunkConverter.java | |
index 65b2654de8..70c60d54e7 100644 | |
--- a/src/main/java/net/minecraft/server/ChunkConverter.java | |
+++ b/src/main/java/net/minecraft/server/ChunkConverter.java | |
@@ -198,10 +198,15 @@ public class ChunkConverter { | |
EnumDirection enumdirection1 = (EnumDirection)iblockdata.get(BlockChest.FACING); | |
if (enumdirection.k() != enumdirection1.k() && enumdirection1 == iblockdata1.get(BlockChest.FACING)) { | |
BlockPropertyChestType blockpropertychesttype = enumdirection == enumdirection1.e() ? BlockPropertyChestType.LEFT : BlockPropertyChestType.RIGHT; | |
- generatoraccess.setTypeAndData(blockposition1, (IBlockData)iblockdata1.set(BlockChest.b, blockpropertychesttype.a()), 18); | |
+ // Paper start | |
+ Chunk chunk = ((World) generatoraccess.getMinecraftWorld()).getChunkAtWorldCoords(blockposition); | |
+ Chunk chunk1 = ((World) generatoraccess.getMinecraftWorld()).getChunkAtWorldCoords(blockposition1); | |
+ chunk1.setTypeDirect(blockposition1, (IBlockData)iblockdata1.set(BlockChest.b, blockpropertychesttype.a())); | |
+ | |
if (enumdirection1 == EnumDirection.NORTH || enumdirection1 == EnumDirection.EAST) { | |
- TileEntity tileentity = generatoraccess.getTileEntity(blockposition); | |
- TileEntity tileentity1 = generatoraccess.getTileEntity(blockposition1); | |
+ TileEntity tileentity = chunk.getTileEntity(blockposition); | |
+ TileEntity tileentity1 = chunk1.getTileEntity(blockposition1); | |
+ // Paper end | |
if (tileentity instanceof TileEntityChest && tileentity1 instanceof TileEntityChest) { | |
TileEntityChest.a((TileEntityChest)tileentity, (TileEntityChest)tileentity1); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment