mirror of
https://github.com/songoda/SongodaCore.git
synced 2025-03-11 06:00:19 +01:00
Corrections and optimizations for 1.12 and setBlockFast.
This commit is contained in:
parent
042d77408b
commit
4467917543
@ -351,7 +351,7 @@ public class BlockUtils {
|
|||||||
/**
|
/**
|
||||||
* Set a block to a certain type by updating the block directly in the
|
* Set a block to a certain type by updating the block directly in the
|
||||||
* NMS chunk.
|
* NMS chunk.
|
||||||
*
|
* <p>
|
||||||
* The chunk must be loaded and players must relog if they have the
|
* The chunk must be loaded and players must relog if they have the
|
||||||
* chunk loaded in order to use this method.
|
* chunk loaded in order to use this method.
|
||||||
*
|
*
|
||||||
@ -375,15 +375,16 @@ public class BlockUtils {
|
|||||||
Class<?> clazzWorld = Class.forName("net.minecraft.server." + ver + ".World");
|
Class<?> clazzWorld = Class.forName("net.minecraft.server." + ver + ".World");
|
||||||
Class<?> clazzChunk = Class.forName("net.minecraft.server." + ver + ".Chunk");
|
Class<?> clazzChunk = Class.forName("net.minecraft.server." + ver + ".Chunk");
|
||||||
|
|
||||||
getByCombinedId = clazzBlock.getMethod("getByCombinedId", int.class);
|
|
||||||
getHandle = clazzCraftWorld.getMethod("getHandle");
|
getHandle = clazzCraftWorld.getMethod("getHandle");
|
||||||
getChunkAt = clazzWorld.getMethod("getChunkAt", int.class, int.class);
|
getChunkAt = clazzWorld.getMethod("getChunkAt", int.class, int.class);
|
||||||
|
|
||||||
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_12)) {
|
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
|
||||||
getBlockData = clazzBlock.getMethod("getBlockData");
|
getBlockData = clazzBlock.getMethod("getBlockData");
|
||||||
setType = clazzChunk.getMethod("setType", clazzBlockPosition, clazzIBlockData, boolean.class);
|
setType = clazzChunk.getMethod("setType", clazzBlockPosition, clazzIBlockData, boolean.class);
|
||||||
} else
|
} else {
|
||||||
|
getByCombinedId = clazzBlock.getMethod("getByCombinedId", int.class);
|
||||||
setType = clazzChunk.getMethod("a", clazzBlockPosition, clazzIBlockData);
|
setType = clazzChunk.getMethod("a", clazzBlockPosition, clazzIBlockData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// invoke and cast objects.
|
// invoke and cast objects.
|
||||||
@ -393,7 +394,7 @@ public class BlockUtils {
|
|||||||
Object blockPosition = clazzBlockPosition.getConstructor(int.class, int.class, int.class).newInstance(x & 0xF, y, z & 0xF);
|
Object blockPosition = clazzBlockPosition.getConstructor(int.class, int.class, int.class).newInstance(x & 0xF, y, z & 0xF);
|
||||||
|
|
||||||
// Invoke final method.
|
// Invoke final method.
|
||||||
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_12)) {
|
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
|
||||||
Object block = clazzBlocks.getField(material.getMaterial().name()).get(null);
|
Object block = clazzBlocks.getField(material.getMaterial().name()).get(null);
|
||||||
Object IBlockData = getBlockData.invoke(block);
|
Object IBlockData = getBlockData.invoke(block);
|
||||||
setType.invoke(chunk, blockPosition, IBlockData, true);
|
setType.invoke(chunk, blockPosition, IBlockData, true);
|
||||||
|
Loading…
Reference in New Issue
Block a user