Fix fast block placing not existing on older versions

This commit is contained in:
BuildTools 2019-09-30 12:47:21 -06:00
parent 1c0af0765e
commit 164c7ae911

View File

@ -527,10 +527,11 @@ public final class BlockUtil {
return nearbyBlocks;
}
private static Class<?> IBlockDataClass = NMSUtil.getNMSClass("IBlockData");
private static Class<?> blocksClass = NMSUtil.getNMSClass("Blocks");
private static void setBlockFast(World world, int x, int y, int z, Material material, byte data) {
try {
Class<?> IBlockDataClass = NMSUtil.getNMSClass("IBlockData");
Object worldHandle = world.getClass().getMethod("getHandle").invoke(world);
Object chunk = worldHandle.getClass().getMethod("getChunkAt", int.class, int.class).invoke(worldHandle,
x >> 4, z >> 4);
@ -538,7 +539,7 @@ public final class BlockUtil {
.newInstance(x & 0xF, y, z & 0xF);
if (NMSUtil.getVersionNumber() > 12) {
Object block = NMSUtil.getNMSClass("Blocks").getField(material.name()).get(null);
Object block = blocksClass.getField(material.name()).get(null);
Object IBlockData = block.getClass().getMethod("getBlockData").invoke(block);
worldHandle.getClass().getMethod("setTypeAndData", blockPosition.getClass(), IBlockDataClass, int.class)
.invoke(worldHandle, blockPosition, IBlockData, 2);
@ -559,7 +560,9 @@ public final class BlockUtil {
IBlockData);
}
} catch (Exception e) {
e.printStackTrace();
Block block = world.getBlockAt(x, y, z);
block.getState().setRawData(data);
block.setType(material);
}
}
}