diff --git a/NMS/v117/src/main/java/com/bgsoftware/superiorskyblock/nms/v117/NMSAlgorithmsImpl.java b/NMS/v117/src/main/java/com/bgsoftware/superiorskyblock/nms/v117/NMSAlgorithmsImpl.java index 8cd7fcf16..d7c6fbfa5 100644 --- a/NMS/v117/src/main/java/com/bgsoftware/superiorskyblock/nms/v117/NMSAlgorithmsImpl.java +++ b/NMS/v117/src/main/java/com/bgsoftware/superiorskyblock/nms/v117/NMSAlgorithmsImpl.java @@ -2,7 +2,6 @@ import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; import com.bgsoftware.superiorskyblock.api.key.Key; -import com.bgsoftware.superiorskyblock.core.key.KeyImpl; import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; import com.bgsoftware.superiorskyblock.nms.algorithms.PaperGlowEnchantment; import com.bgsoftware.superiorskyblock.nms.algorithms.SpigotGlowEnchantment; @@ -10,12 +9,14 @@ import com.bgsoftware.superiorskyblock.nms.v117.menu.MenuDispenserBlockEntity; import com.bgsoftware.superiorskyblock.nms.v117.menu.MenuFurnaceBlockEntity; import com.bgsoftware.superiorskyblock.nms.v117.menu.MenuHopperBlockEntity; +import com.bgsoftware.superiorskyblock.nms.v117.world.KeyBlocksCache; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.network.chat.Component; -import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.vehicle.AbstractMinecart; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.bukkit.Bukkit; @@ -24,12 +25,13 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_17_R1.CraftServer; import org.bukkit.craftbukkit.v1_17_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_17_R1.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_17_R1.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_17_R1.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_17_R1.util.CraftMagicNumbers; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Minecart; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; @@ -108,18 +110,22 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - Material material = CraftMagicNumbers.getMaterial(Block.stateById(combinedId).getBlock()); - return KeyImpl.of(material, (byte) 0); + Block block = Block.stateById(combinedId).getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getMinecartBlock(Minecart minecart) { - return KeyImpl.of(minecart.getDisplayBlockData().getMaterial(), (byte) 0); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + AbstractMinecart minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + Block block = minecart.getDisplayBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - return KeyImpl.of(fallingBlock.getBlockData().getMaterial(), (byte) 0); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + FallingBlockEntity fallingBlock = ((CraftFallingBlock) bukkitFallingBlock).getHandle(); + Block block = fallingBlock.getBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override diff --git a/NMS/v117/src/main/java/com/bgsoftware/superiorskyblock/nms/v117/NMSWorldImpl.java b/NMS/v117/src/main/java/com/bgsoftware/superiorskyblock/nms/v117/NMSWorldImpl.java index 57ee6a156..e26e2df51 100644 --- a/NMS/v117/src/main/java/com/bgsoftware/superiorskyblock/nms/v117/NMSWorldImpl.java +++ b/NMS/v117/src/main/java/com/bgsoftware/superiorskyblock/nms/v117/NMSWorldImpl.java @@ -16,6 +16,7 @@ import com.bgsoftware.superiorskyblock.nms.algorithms.NMSCachedBlock; import com.bgsoftware.superiorskyblock.nms.v117.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v117.spawners.TickingSpawnerBlockEntityNotifier; +import com.bgsoftware.superiorskyblock.nms.v117.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v117.world.PropertiesMapper; import com.bgsoftware.superiorskyblock.nms.v117.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; @@ -44,7 +45,6 @@ import org.bukkit.Bukkit; import org.bukkit.ChunkSnapshot; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.data.Waterlogged; import org.bukkit.craftbukkit.v1_17_R1.CraftWorld; @@ -81,10 +81,7 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - BlockState blockState = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState(); - Material type = chunkSnapshot.getBlockType(x, y, z); - short data = (short) (Block.getId(blockState) >> 12 & 15); - + Block block = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState().getBlock(); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), (chunkSnapshot.getX() << 4) + x, @@ -92,7 +89,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(block); + + return KeyImpl.of(rawBlockKey, location); } @Override diff --git a/NMS/v1182/src/main/java/com/bgsoftware/superiorskyblock/nms/v1182/NMSAlgorithmsImpl.java b/NMS/v1182/src/main/java/com/bgsoftware/superiorskyblock/nms/v1182/NMSAlgorithmsImpl.java index 3455f6ae7..a2568454d 100644 --- a/NMS/v1182/src/main/java/com/bgsoftware/superiorskyblock/nms/v1182/NMSAlgorithmsImpl.java +++ b/NMS/v1182/src/main/java/com/bgsoftware/superiorskyblock/nms/v1182/NMSAlgorithmsImpl.java @@ -2,7 +2,6 @@ import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; import com.bgsoftware.superiorskyblock.api.key.Key; -import com.bgsoftware.superiorskyblock.core.key.KeyImpl; import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; import com.bgsoftware.superiorskyblock.nms.algorithms.PaperGlowEnchantment; import com.bgsoftware.superiorskyblock.nms.algorithms.SpigotGlowEnchantment; @@ -10,12 +9,14 @@ import com.bgsoftware.superiorskyblock.nms.v1182.menu.MenuDispenserBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1182.menu.MenuFurnaceBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1182.menu.MenuHopperBlockEntity; +import com.bgsoftware.superiorskyblock.nms.v1182.world.KeyBlocksCache; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.network.chat.Component; -import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.vehicle.AbstractMinecart; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.bukkit.Bukkit; @@ -24,12 +25,13 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_18_R2.CraftServer; import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; +import org.bukkit.craftbukkit.v1_18_R2.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_18_R2.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_18_R2.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_18_R2.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_18_R2.util.CraftMagicNumbers; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Minecart; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; @@ -109,18 +111,22 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - Material material = CraftMagicNumbers.getMaterial(Block.stateById(combinedId).getBlock()); - return KeyImpl.of(material, (byte) 0); + Block block = Block.stateById(combinedId).getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getMinecartBlock(Minecart minecart) { - return KeyImpl.of(minecart.getDisplayBlockData().getMaterial(), (byte) 0); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + AbstractMinecart minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + Block block = minecart.getDisplayBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - return KeyImpl.of(fallingBlock.getBlockData().getMaterial(), (byte) 0); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + FallingBlockEntity fallingBlock = ((CraftFallingBlock) bukkitFallingBlock).getHandle(); + Block block = fallingBlock.getBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override diff --git a/NMS/v1182/src/main/java/com/bgsoftware/superiorskyblock/nms/v1182/NMSWorldImpl.java b/NMS/v1182/src/main/java/com/bgsoftware/superiorskyblock/nms/v1182/NMSWorldImpl.java index c50c0da81..d3f0d3e16 100644 --- a/NMS/v1182/src/main/java/com/bgsoftware/superiorskyblock/nms/v1182/NMSWorldImpl.java +++ b/NMS/v1182/src/main/java/com/bgsoftware/superiorskyblock/nms/v1182/NMSWorldImpl.java @@ -16,6 +16,7 @@ import com.bgsoftware.superiorskyblock.nms.algorithms.NMSCachedBlock; import com.bgsoftware.superiorskyblock.nms.v1182.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v1182.spawners.TickingSpawnerBlockEntityNotifier; +import com.bgsoftware.superiorskyblock.nms.v1182.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v1182.world.PropertiesMapper; import com.bgsoftware.superiorskyblock.nms.v1182.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; @@ -44,7 +45,6 @@ import org.bukkit.Bukkit; import org.bukkit.ChunkSnapshot; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Waterlogged; @@ -82,10 +82,7 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - BlockState blockState = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState(); - Material type = chunkSnapshot.getBlockType(x, y, z); - short data = (short) (Block.getId(blockState) >> 12 & 15); - + Block block = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState().getBlock(); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), (chunkSnapshot.getX() << 4) + x, @@ -93,7 +90,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(block); + + return KeyImpl.of(rawBlockKey, location); } @Override diff --git a/NMS/v119/src/main/java/com/bgsoftware/superiorskyblock/nms/v119/NMSAlgorithmsImpl.java b/NMS/v119/src/main/java/com/bgsoftware/superiorskyblock/nms/v119/NMSAlgorithmsImpl.java index c1f637358..dafd6221c 100644 --- a/NMS/v119/src/main/java/com/bgsoftware/superiorskyblock/nms/v119/NMSAlgorithmsImpl.java +++ b/NMS/v119/src/main/java/com/bgsoftware/superiorskyblock/nms/v119/NMSAlgorithmsImpl.java @@ -2,7 +2,6 @@ import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; import com.bgsoftware.superiorskyblock.api.key.Key; -import com.bgsoftware.superiorskyblock.core.key.KeyImpl; import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; import com.bgsoftware.superiorskyblock.nms.algorithms.PaperGlowEnchantment; import com.bgsoftware.superiorskyblock.nms.algorithms.SpigotGlowEnchantment; @@ -10,12 +9,14 @@ import com.bgsoftware.superiorskyblock.nms.v119.menu.MenuDispenserBlockEntity; import com.bgsoftware.superiorskyblock.nms.v119.menu.MenuFurnaceBlockEntity; import com.bgsoftware.superiorskyblock.nms.v119.menu.MenuHopperBlockEntity; +import com.bgsoftware.superiorskyblock.nms.v119.world.KeyBlocksCache; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.network.chat.Component; -import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.vehicle.AbstractMinecart; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.bukkit.Bukkit; @@ -24,12 +25,13 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_19_R1.CraftServer; import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_19_R1.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_19_R1.util.CraftMagicNumbers; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Minecart; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; @@ -109,18 +111,22 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - Material material = CraftMagicNumbers.getMaterial(Block.stateById(combinedId).getBlock()); - return KeyImpl.of(material, (byte) 0); + Block block = Block.stateById(combinedId).getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getMinecartBlock(Minecart minecart) { - return KeyImpl.of(minecart.getDisplayBlockData().getMaterial(), (byte) 0); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + AbstractMinecart minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + Block block = minecart.getDisplayBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - return KeyImpl.of(fallingBlock.getBlockData().getMaterial(), (byte) 0); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + FallingBlockEntity fallingBlock = ((CraftFallingBlock) bukkitFallingBlock).getHandle(); + Block block = fallingBlock.getBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override diff --git a/NMS/v119/src/main/java/com/bgsoftware/superiorskyblock/nms/v119/NMSWorldImpl.java b/NMS/v119/src/main/java/com/bgsoftware/superiorskyblock/nms/v119/NMSWorldImpl.java index 902428dac..3d9167c65 100644 --- a/NMS/v119/src/main/java/com/bgsoftware/superiorskyblock/nms/v119/NMSWorldImpl.java +++ b/NMS/v119/src/main/java/com/bgsoftware/superiorskyblock/nms/v119/NMSWorldImpl.java @@ -16,6 +16,7 @@ import com.bgsoftware.superiorskyblock.nms.algorithms.NMSCachedBlock; import com.bgsoftware.superiorskyblock.nms.v119.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v119.spawners.TickingSpawnerBlockEntityNotifier; +import com.bgsoftware.superiorskyblock.nms.v119.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v119.world.PropertiesMapper; import com.bgsoftware.superiorskyblock.nms.v119.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; @@ -44,7 +45,6 @@ import org.bukkit.Bukkit; import org.bukkit.ChunkSnapshot; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Waterlogged; @@ -82,10 +82,7 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - BlockState blockState = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState(); - Material type = chunkSnapshot.getBlockType(x, y, z); - short data = (short) (Block.getId(blockState) >> 12 & 15); - + Block block = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState().getBlock(); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), (chunkSnapshot.getX() << 4) + x, @@ -93,7 +90,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(block); + + return KeyImpl.of(rawBlockKey, location); } @Override diff --git a/NMS/v1191/src/main/java/com/bgsoftware/superiorskyblock/nms/v1191/NMSAlgorithmsImpl.java b/NMS/v1191/src/main/java/com/bgsoftware/superiorskyblock/nms/v1191/NMSAlgorithmsImpl.java index 1744da960..551581a12 100644 --- a/NMS/v1191/src/main/java/com/bgsoftware/superiorskyblock/nms/v1191/NMSAlgorithmsImpl.java +++ b/NMS/v1191/src/main/java/com/bgsoftware/superiorskyblock/nms/v1191/NMSAlgorithmsImpl.java @@ -2,7 +2,6 @@ import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; import com.bgsoftware.superiorskyblock.api.key.Key; -import com.bgsoftware.superiorskyblock.core.key.KeyImpl; import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; import com.bgsoftware.superiorskyblock.nms.algorithms.PaperGlowEnchantment; import com.bgsoftware.superiorskyblock.nms.algorithms.SpigotGlowEnchantment; @@ -10,12 +9,14 @@ import com.bgsoftware.superiorskyblock.nms.v1191.menu.MenuDispenserBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1191.menu.MenuFurnaceBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1191.menu.MenuHopperBlockEntity; +import com.bgsoftware.superiorskyblock.nms.v1191.world.KeyBlocksCache; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.network.chat.Component; -import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.vehicle.AbstractMinecart; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.bukkit.Bukkit; @@ -24,12 +25,13 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_19_R1.CraftServer; import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_19_R1.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_19_R1.util.CraftMagicNumbers; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Minecart; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; @@ -109,18 +111,22 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - Material material = CraftMagicNumbers.getMaterial(Block.stateById(combinedId).getBlock()); - return KeyImpl.of(material, (byte) 0); + Block block = Block.stateById(combinedId).getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getMinecartBlock(Minecart minecart) { - return KeyImpl.of(minecart.getDisplayBlockData().getMaterial(), (byte) 0); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + AbstractMinecart minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + Block block = minecart.getDisplayBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - return KeyImpl.of(fallingBlock.getBlockData().getMaterial(), (byte) 0); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + FallingBlockEntity fallingBlock = ((CraftFallingBlock) bukkitFallingBlock).getHandle(); + Block block = fallingBlock.getBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override diff --git a/NMS/v1191/src/main/java/com/bgsoftware/superiorskyblock/nms/v1191/NMSWorldImpl.java b/NMS/v1191/src/main/java/com/bgsoftware/superiorskyblock/nms/v1191/NMSWorldImpl.java index 656ac7606..7a2e35da8 100644 --- a/NMS/v1191/src/main/java/com/bgsoftware/superiorskyblock/nms/v1191/NMSWorldImpl.java +++ b/NMS/v1191/src/main/java/com/bgsoftware/superiorskyblock/nms/v1191/NMSWorldImpl.java @@ -16,6 +16,7 @@ import com.bgsoftware.superiorskyblock.nms.algorithms.NMSCachedBlock; import com.bgsoftware.superiorskyblock.nms.v1191.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v1191.spawners.TickingSpawnerBlockEntityNotifier; +import com.bgsoftware.superiorskyblock.nms.v1191.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v1191.world.PropertiesMapper; import com.bgsoftware.superiorskyblock.nms.v1191.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; @@ -44,7 +45,6 @@ import org.bukkit.Bukkit; import org.bukkit.ChunkSnapshot; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Waterlogged; @@ -82,10 +82,7 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - BlockState blockState = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState(); - Material type = chunkSnapshot.getBlockType(x, y, z); - short data = (short) (Block.getId(blockState) >> 12 & 15); - + Block block = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState().getBlock(); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), (chunkSnapshot.getX() << 4) + x, @@ -93,7 +90,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(block); + + return KeyImpl.of(rawBlockKey, location); } @Override diff --git a/NMS/v1192/src/main/java/com/bgsoftware/superiorskyblock/nms/v1192/NMSAlgorithmsImpl.java b/NMS/v1192/src/main/java/com/bgsoftware/superiorskyblock/nms/v1192/NMSAlgorithmsImpl.java index 5c0b48a57..2c8293638 100644 --- a/NMS/v1192/src/main/java/com/bgsoftware/superiorskyblock/nms/v1192/NMSAlgorithmsImpl.java +++ b/NMS/v1192/src/main/java/com/bgsoftware/superiorskyblock/nms/v1192/NMSAlgorithmsImpl.java @@ -2,7 +2,6 @@ import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; import com.bgsoftware.superiorskyblock.api.key.Key; -import com.bgsoftware.superiorskyblock.core.key.KeyImpl; import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; import com.bgsoftware.superiorskyblock.nms.algorithms.PaperGlowEnchantment; import com.bgsoftware.superiorskyblock.nms.algorithms.SpigotGlowEnchantment; @@ -10,11 +9,14 @@ import com.bgsoftware.superiorskyblock.nms.v1192.menu.MenuDispenserBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1192.menu.MenuFurnaceBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1192.menu.MenuHopperBlockEntity; +import com.bgsoftware.superiorskyblock.nms.v1192.world.KeyBlocksCache; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.vehicle.AbstractMinecart; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.bukkit.Bukkit; @@ -23,12 +25,13 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_19_R1.CraftServer; import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_19_R1.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_19_R1.util.CraftMagicNumbers; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Minecart; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; @@ -108,18 +111,22 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - Material material = CraftMagicNumbers.getMaterial(Block.stateById(combinedId).getBlock()); - return KeyImpl.of(material, (byte) 0); + Block block = Block.stateById(combinedId).getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getMinecartBlock(Minecart minecart) { - return KeyImpl.of(minecart.getDisplayBlockData().getMaterial(), (byte) 0); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + AbstractMinecart minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + Block block = minecart.getDisplayBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - return KeyImpl.of(fallingBlock.getBlockData().getMaterial(), (byte) 0); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + FallingBlockEntity fallingBlock = ((CraftFallingBlock) bukkitFallingBlock).getHandle(); + Block block = fallingBlock.getBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override diff --git a/NMS/v1192/src/main/java/com/bgsoftware/superiorskyblock/nms/v1192/NMSWorldImpl.java b/NMS/v1192/src/main/java/com/bgsoftware/superiorskyblock/nms/v1192/NMSWorldImpl.java index 874e0800f..11e1397b6 100644 --- a/NMS/v1192/src/main/java/com/bgsoftware/superiorskyblock/nms/v1192/NMSWorldImpl.java +++ b/NMS/v1192/src/main/java/com/bgsoftware/superiorskyblock/nms/v1192/NMSWorldImpl.java @@ -16,6 +16,7 @@ import com.bgsoftware.superiorskyblock.nms.algorithms.NMSCachedBlock; import com.bgsoftware.superiorskyblock.nms.v1192.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v1192.spawners.TickingSpawnerBlockEntityNotifier; +import com.bgsoftware.superiorskyblock.nms.v1192.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v1192.world.PropertiesMapper; import com.bgsoftware.superiorskyblock.nms.v1192.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; @@ -82,10 +83,7 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - BlockState blockState = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState(); - Material type = chunkSnapshot.getBlockType(x, y, z); - short data = (short) (Block.getId(blockState) >> 12 & 15); - + Block block = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState().getBlock(); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), (chunkSnapshot.getX() << 4) + x, @@ -93,7 +91,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(block); + + return KeyImpl.of(rawBlockKey, location); } @Override diff --git a/NMS/v1193/src/main/java/com/bgsoftware/superiorskyblock/nms/v1193/NMSAlgorithmsImpl.java b/NMS/v1193/src/main/java/com/bgsoftware/superiorskyblock/nms/v1193/NMSAlgorithmsImpl.java index 14eb9abc1..d108ba86d 100644 --- a/NMS/v1193/src/main/java/com/bgsoftware/superiorskyblock/nms/v1193/NMSAlgorithmsImpl.java +++ b/NMS/v1193/src/main/java/com/bgsoftware/superiorskyblock/nms/v1193/NMSAlgorithmsImpl.java @@ -10,11 +10,14 @@ import com.bgsoftware.superiorskyblock.nms.v1193.menu.MenuDispenserBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1193.menu.MenuFurnaceBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1193.menu.MenuHopperBlockEntity; +import com.bgsoftware.superiorskyblock.nms.v1193.world.KeyBlocksCache; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.vehicle.AbstractMinecart; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.bukkit.Bukkit; @@ -23,6 +26,8 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_19_R2.CraftServer; import org.bukkit.craftbukkit.v1_19_R2.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R2.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_19_R2.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_19_R2.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_19_R2.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_19_R2.util.CraftMagicNumbers; @@ -108,18 +113,22 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - Material material = CraftMagicNumbers.getMaterial(Block.stateById(combinedId).getBlock()); - return KeyImpl.of(material, (byte) 0); + Block block = Block.stateById(combinedId).getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getMinecartBlock(Minecart minecart) { - return KeyImpl.of(minecart.getDisplayBlockData().getMaterial(), (byte) 0); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + AbstractMinecart minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + Block block = minecart.getDisplayBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - return KeyImpl.of(fallingBlock.getBlockData().getMaterial(), (byte) 0); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + FallingBlockEntity fallingBlock = ((CraftFallingBlock) bukkitFallingBlock).getHandle(); + Block block = fallingBlock.getBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override diff --git a/NMS/v1193/src/main/java/com/bgsoftware/superiorskyblock/nms/v1193/NMSWorldImpl.java b/NMS/v1193/src/main/java/com/bgsoftware/superiorskyblock/nms/v1193/NMSWorldImpl.java index d5ae6b8f4..3af546954 100644 --- a/NMS/v1193/src/main/java/com/bgsoftware/superiorskyblock/nms/v1193/NMSWorldImpl.java +++ b/NMS/v1193/src/main/java/com/bgsoftware/superiorskyblock/nms/v1193/NMSWorldImpl.java @@ -16,6 +16,7 @@ import com.bgsoftware.superiorskyblock.nms.algorithms.NMSCachedBlock; import com.bgsoftware.superiorskyblock.nms.v1193.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v1193.spawners.TickingSpawnerBlockEntityNotifier; +import com.bgsoftware.superiorskyblock.nms.v1193.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v1193.world.PropertiesMapper; import com.bgsoftware.superiorskyblock.nms.v1193.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; @@ -44,7 +45,6 @@ import org.bukkit.Bukkit; import org.bukkit.ChunkSnapshot; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Waterlogged; @@ -82,10 +82,7 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - BlockState blockState = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState(); - Material type = chunkSnapshot.getBlockType(x, y, z); - short data = (short) (Block.getId(blockState) >> 12 & 15); - + Block block = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState().getBlock(); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), (chunkSnapshot.getX() << 4) + x, @@ -93,7 +90,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(block); + + return KeyImpl.of(rawBlockKey, location); } @Override diff --git a/NMS/v1194/src/main/java/com/bgsoftware/superiorskyblock/nms/v1194/NMSAlgorithmsImpl.java b/NMS/v1194/src/main/java/com/bgsoftware/superiorskyblock/nms/v1194/NMSAlgorithmsImpl.java index aa3b3edfd..33c02df32 100644 --- a/NMS/v1194/src/main/java/com/bgsoftware/superiorskyblock/nms/v1194/NMSAlgorithmsImpl.java +++ b/NMS/v1194/src/main/java/com/bgsoftware/superiorskyblock/nms/v1194/NMSAlgorithmsImpl.java @@ -2,7 +2,6 @@ import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; import com.bgsoftware.superiorskyblock.api.key.Key; -import com.bgsoftware.superiorskyblock.core.key.KeyImpl; import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; import com.bgsoftware.superiorskyblock.nms.algorithms.PaperGlowEnchantment; import com.bgsoftware.superiorskyblock.nms.algorithms.SpigotGlowEnchantment; @@ -10,13 +9,15 @@ import com.bgsoftware.superiorskyblock.nms.v1194.menu.MenuDispenserBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1194.menu.MenuFurnaceBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1194.menu.MenuHopperBlockEntity; +import com.bgsoftware.superiorskyblock.nms.v1194.world.KeyBlocksCache; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.commands.SummonCommand; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.vehicle.AbstractMinecart; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.bukkit.Bukkit; @@ -25,12 +26,13 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_19_R3.CraftServer; import org.bukkit.craftbukkit.v1_19_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R3.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_19_R3.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_19_R3.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_19_R3.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_19_R3.util.CraftMagicNumbers; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Minecart; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; @@ -110,18 +112,22 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - Material material = CraftMagicNumbers.getMaterial(Block.stateById(combinedId).getBlock()); - return KeyImpl.of(material, (byte) 0); + Block block = Block.stateById(combinedId).getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getMinecartBlock(Minecart minecart) { - return KeyImpl.of(minecart.getDisplayBlockData().getMaterial(), (byte) 0); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + AbstractMinecart minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + Block block = minecart.getDisplayBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - return KeyImpl.of(fallingBlock.getBlockData().getMaterial(), (byte) 0); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + FallingBlockEntity fallingBlock = ((CraftFallingBlock) bukkitFallingBlock).getHandle(); + Block block = fallingBlock.getBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override diff --git a/NMS/v1194/src/main/java/com/bgsoftware/superiorskyblock/nms/v1194/NMSWorldImpl.java b/NMS/v1194/src/main/java/com/bgsoftware/superiorskyblock/nms/v1194/NMSWorldImpl.java index 3c2ff93be..d85c7db32 100644 --- a/NMS/v1194/src/main/java/com/bgsoftware/superiorskyblock/nms/v1194/NMSWorldImpl.java +++ b/NMS/v1194/src/main/java/com/bgsoftware/superiorskyblock/nms/v1194/NMSWorldImpl.java @@ -16,6 +16,7 @@ import com.bgsoftware.superiorskyblock.nms.algorithms.NMSCachedBlock; import com.bgsoftware.superiorskyblock.nms.v1194.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v1194.spawners.TickingSpawnerBlockEntityNotifier; +import com.bgsoftware.superiorskyblock.nms.v1194.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v1194.world.PropertiesMapper; import com.bgsoftware.superiorskyblock.nms.v1194.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; @@ -44,7 +45,6 @@ import org.bukkit.Bukkit; import org.bukkit.ChunkSnapshot; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Waterlogged; @@ -82,10 +82,7 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - BlockState blockState = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState(); - Material type = chunkSnapshot.getBlockType(x, y, z); - short data = (short) (Block.getId(blockState) >> 12 & 15); - + Block block = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState().getBlock(); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), (chunkSnapshot.getX() << 4) + x, @@ -93,7 +90,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(block); + + return KeyImpl.of(rawBlockKey, location); } @Override diff --git a/NMS/v1201/src/main/java/com/bgsoftware/superiorskyblock/nms/v1201/NMSAlgorithmsImpl.java b/NMS/v1201/src/main/java/com/bgsoftware/superiorskyblock/nms/v1201/NMSAlgorithmsImpl.java index e68f22745..f242122ab 100644 --- a/NMS/v1201/src/main/java/com/bgsoftware/superiorskyblock/nms/v1201/NMSAlgorithmsImpl.java +++ b/NMS/v1201/src/main/java/com/bgsoftware/superiorskyblock/nms/v1201/NMSAlgorithmsImpl.java @@ -2,7 +2,6 @@ import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; import com.bgsoftware.superiorskyblock.api.key.Key; -import com.bgsoftware.superiorskyblock.core.key.KeyImpl; import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; import com.bgsoftware.superiorskyblock.nms.algorithms.PaperGlowEnchantment; import com.bgsoftware.superiorskyblock.nms.algorithms.SpigotGlowEnchantment; @@ -10,12 +9,15 @@ import com.bgsoftware.superiorskyblock.nms.v1201.menu.MenuDispenserBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1201.menu.MenuFurnaceBlockEntity; import com.bgsoftware.superiorskyblock.nms.v1201.menu.MenuHopperBlockEntity; +import com.bgsoftware.superiorskyblock.nms.v1201.world.KeyBlocksCache; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.vehicle.AbstractMinecart; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import org.bukkit.Bukkit; @@ -24,12 +26,13 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_20_R1.CraftServer; import org.bukkit.craftbukkit.v1_20_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R1.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_20_R1.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_20_R1.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_20_R1.util.CraftMagicNumbers; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Minecart; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; @@ -109,18 +112,22 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - Material material = CraftMagicNumbers.getMaterial(Block.stateById(combinedId).getBlock()); - return KeyImpl.of(material, (byte) 0); + Block block = Block.stateById(combinedId).getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getMinecartBlock(Minecart minecart) { - return KeyImpl.of(minecart.getDisplayBlockData().getMaterial(), (byte) 0); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + AbstractMinecart minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + Block block = minecart.getDisplayBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - return KeyImpl.of(fallingBlock.getBlockData().getMaterial(), (byte) 0); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + FallingBlockEntity fallingBlock = ((CraftFallingBlock) bukkitFallingBlock).getHandle(); + Block block = fallingBlock.getBlockState().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override diff --git a/NMS/v1201/src/main/java/com/bgsoftware/superiorskyblock/nms/v1201/NMSWorldImpl.java b/NMS/v1201/src/main/java/com/bgsoftware/superiorskyblock/nms/v1201/NMSWorldImpl.java index 7ce5697a4..431b3b15a 100644 --- a/NMS/v1201/src/main/java/com/bgsoftware/superiorskyblock/nms/v1201/NMSWorldImpl.java +++ b/NMS/v1201/src/main/java/com/bgsoftware/superiorskyblock/nms/v1201/NMSWorldImpl.java @@ -16,6 +16,7 @@ import com.bgsoftware.superiorskyblock.nms.algorithms.NMSCachedBlock; import com.bgsoftware.superiorskyblock.nms.v1201.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v1201.spawners.TickingSpawnerBlockEntityNotifier; +import com.bgsoftware.superiorskyblock.nms.v1201.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v1201.world.PropertiesMapper; import com.bgsoftware.superiorskyblock.nms.v1201.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; @@ -44,7 +45,6 @@ import org.bukkit.Bukkit; import org.bukkit.ChunkSnapshot; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Waterlogged; @@ -82,10 +82,7 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - BlockState blockState = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState(); - Material type = chunkSnapshot.getBlockType(x, y, z); - short data = (short) (Block.getId(blockState) >> 12 & 15); - + Block block = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState().getBlock(); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), (chunkSnapshot.getX() << 4) + x, @@ -93,7 +90,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(block); + + return KeyImpl.of(rawBlockKey, location); } @Override diff --git a/NMS/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSAlgorithmsImpl.java b/NMS/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSAlgorithmsImpl.java index 00f5a2596..838e55785 100644 --- a/NMS/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSAlgorithmsImpl.java +++ b/NMS/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSAlgorithmsImpl.java @@ -2,11 +2,14 @@ import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; import com.bgsoftware.superiorskyblock.api.key.Key; -import com.bgsoftware.superiorskyblock.core.key.KeyImpl; +import com.bgsoftware.superiorskyblock.core.key.ConstantKeys; import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; import com.bgsoftware.superiorskyblock.nms.v1_12_R1.algorithms.GlowEnchantment; +import com.bgsoftware.superiorskyblock.nms.v1_12_R1.world.KeyBlocksCache; import net.minecraft.server.v1_12_R1.Block; import net.minecraft.server.v1_12_R1.BlockPosition; +import net.minecraft.server.v1_12_R1.EntityFallingBlock; +import net.minecraft.server.v1_12_R1.EntityMinecartAbstract; import net.minecraft.server.v1_12_R1.IBlockData; import net.minecraft.server.v1_12_R1.IChatBaseComponent; import net.minecraft.server.v1_12_R1.Item; @@ -19,18 +22,20 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_12_R1.CraftServer; import org.bukkit.craftbukkit.v1_12_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_12_R1.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_12_R1.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_12_R1.util.CraftChatMessage; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Minecart; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.PotionMeta; -import org.bukkit.material.MaterialData; import org.bukkit.potion.PotionEffect; +import java.util.Optional; + public class NMSAlgorithmsImpl implements NMSAlgorithms { private final SuperiorSkyblockPlugin plugin; @@ -69,24 +74,20 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - //noinspection deprecation - Material material = Material.getMaterial(combinedId & 4095); - byte data = (byte) (combinedId >> 12 & 15); - return KeyImpl.of(material, data); + IBlockData blockData = Block.getByCombinedId(combinedId); + return KeyBlocksCache.getBlockKey(blockData); } @Override - public Key getMinecartBlock(Minecart minecart) { - MaterialData materialData = minecart.getDisplayBlock(); - //noinspection deprecation - return KeyImpl.of(materialData.getItemType(), materialData.getData()); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + EntityMinecartAbstract minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + return KeyBlocksCache.getBlockKey(minecart.getDisplayBlock()); } - @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - //noinspection deprecation - return KeyImpl.of(fallingBlock.getMaterial(), fallingBlock.getBlockData()); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + EntityFallingBlock fallingBlock = ((CraftFallingBlock) bukkitFallingBlock).getHandle(); + return Optional.ofNullable(fallingBlock.getBlock()).map(KeyBlocksCache::getBlockKey).orElse(ConstantKeys.AIR); } @Override diff --git a/NMS/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSWorldImpl.java b/NMS/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSWorldImpl.java index c42d2fb5a..df3d9d622 100644 --- a/NMS/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSWorldImpl.java +++ b/NMS/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSWorldImpl.java @@ -13,9 +13,11 @@ import com.bgsoftware.superiorskyblock.nms.NMSWorld; import com.bgsoftware.superiorskyblock.nms.v1_12_R1.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v1_12_R1.spawners.MobSpawnerAbstractNotifier; +import com.bgsoftware.superiorskyblock.nms.v1_12_R1.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v1_12_R1.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; import com.bgsoftware.superiorskyblock.tag.CompoundTag; +import net.minecraft.server.v1_12_R1.Block; import net.minecraft.server.v1_12_R1.BlockDoubleStep; import net.minecraft.server.v1_12_R1.BlockPosition; import net.minecraft.server.v1_12_R1.EnumParticle; @@ -39,7 +41,6 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; -import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_12_R1.CraftWorld; import org.bukkit.craftbukkit.v1_12_R1.block.CraftSign; import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer; @@ -66,8 +67,9 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override @SuppressWarnings("deprecation") public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - Material type = Material.getMaterial(chunkSnapshot.getBlockTypeId(x, y, z)); - short data = (short) chunkSnapshot.getBlockData(x, y, z); + int blockId = chunkSnapshot.getBlockTypeId(x, y, z); + int blockData = chunkSnapshot.getBlockData(x, y, z); + int combinedId = blockId + (blockData << 12); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), @@ -76,7 +78,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(Block.getByCombinedId(combinedId)); + + return KeyImpl.of(rawBlockKey, location); } @Override @@ -151,7 +155,7 @@ public void setWorldBorder(SuperiorPlayer superiorPlayer, Island island) { } @Override - public Object getBlockData(Block block) { + public Object getBlockData(org.bukkit.block.Block block) { // Doesn't exist return null; } @@ -206,7 +210,7 @@ public CompoundTag readTileEntity(Location location) { } @Override - public boolean isWaterLogged(Block block) { + public boolean isWaterLogged(org.bukkit.block.Block block) { Material blockType = block.getType(); return blockType == Material.WATER || blockType == Material.STATIONARY_WATER; } diff --git a/NMS/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSAlgorithmsImpl.java b/NMS/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSAlgorithmsImpl.java index d8dff6866..79ac3182c 100644 --- a/NMS/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSAlgorithmsImpl.java +++ b/NMS/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSAlgorithmsImpl.java @@ -2,7 +2,6 @@ import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; import com.bgsoftware.superiorskyblock.api.key.Key; -import com.bgsoftware.superiorskyblock.core.key.KeyImpl; import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; import com.bgsoftware.superiorskyblock.nms.algorithms.PaperGlowEnchantment; import com.bgsoftware.superiorskyblock.nms.algorithms.SpigotGlowEnchantment; @@ -10,13 +9,15 @@ import com.bgsoftware.superiorskyblock.nms.v1_16_R3.menu.MenuTileEntityDispenser; import com.bgsoftware.superiorskyblock.nms.v1_16_R3.menu.MenuTileEntityFurnace; import com.bgsoftware.superiorskyblock.nms.v1_16_R3.menu.MenuTileEntityHopper; +import com.bgsoftware.superiorskyblock.nms.v1_16_R3.world.KeyBlocksCache; import net.minecraft.server.v1_16_R3.Block; import net.minecraft.server.v1_16_R3.BlockPosition; +import net.minecraft.server.v1_16_R3.EntityFallingBlock; +import net.minecraft.server.v1_16_R3.EntityMinecartAbstract; import net.minecraft.server.v1_16_R3.IBlockData; import net.minecraft.server.v1_16_R3.IChatBaseComponent; import net.minecraft.server.v1_16_R3.IInventory; import net.minecraft.server.v1_16_R3.IRegistry; -import net.minecraft.server.v1_16_R3.MinecraftServer; import net.minecraft.server.v1_16_R3.World; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -24,12 +25,13 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_16_R3.CraftServer; import org.bukkit.craftbukkit.v1_16_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_16_R3.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_16_R3.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_16_R3.util.CraftMagicNumbers; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Minecart; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; @@ -102,18 +104,22 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - Material material = CraftMagicNumbers.getMaterial(Block.getByCombinedId(combinedId).getBlock()); - return KeyImpl.of(material, (byte) 0); + Block block = Block.getByCombinedId(combinedId).getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getMinecartBlock(Minecart minecart) { - return KeyImpl.of(minecart.getDisplayBlockData().getMaterial(), (byte) 0); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + EntityMinecartAbstract minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + Block block = minecart.getDisplayBlock().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - return KeyImpl.of(fallingBlock.getBlockData().getMaterial(), (byte) 0); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + EntityFallingBlock fallingBlock = ((CraftFallingBlock) bukkitFallingBlock).getHandle(); + Block block = fallingBlock.getBlock().getBlock(); + return KeyBlocksCache.getBlockKey(block); } @Override diff --git a/NMS/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSWorldImpl.java b/NMS/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSWorldImpl.java index b449d7a2d..fe771f855 100644 --- a/NMS/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSWorldImpl.java +++ b/NMS/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSWorldImpl.java @@ -17,6 +17,7 @@ import com.bgsoftware.superiorskyblock.nms.v1_16_R3.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v1_16_R3.spawners.TileEntityMobSpawnerNotifier; import com.bgsoftware.superiorskyblock.nms.v1_16_R3.world.BlockStatesMapper; +import com.bgsoftware.superiorskyblock.nms.v1_16_R3.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v1_16_R3.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; import com.bgsoftware.superiorskyblock.tag.ByteTag; @@ -52,7 +53,6 @@ import org.bukkit.Bukkit; import org.bukkit.ChunkSnapshot; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.block.data.Waterlogged; import org.bukkit.craftbukkit.v1_16_R3.CraftWorld; import org.bukkit.craftbukkit.v1_16_R3.block.CraftBlock; @@ -84,10 +84,7 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - IBlockData blockData = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState(); - Material type = chunkSnapshot.getBlockType(x, y, z); - short data = (short) (Block.getCombinedId(blockData) >> 12 & 15); - + Block block = ((CraftBlockData) chunkSnapshot.getBlockData(x, y, z)).getState().getBlock(); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), (chunkSnapshot.getX() << 4) + x, @@ -95,7 +92,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(block); + + return KeyImpl.of(rawBlockKey, location); } @Override diff --git a/NMS/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSAlgorithmsImpl.java b/NMS/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSAlgorithmsImpl.java index 75733fabc..7619f00d8 100644 --- a/NMS/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSAlgorithmsImpl.java +++ b/NMS/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSAlgorithmsImpl.java @@ -2,11 +2,14 @@ import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; import com.bgsoftware.superiorskyblock.api.key.Key; -import com.bgsoftware.superiorskyblock.core.key.KeyImpl; +import com.bgsoftware.superiorskyblock.core.key.ConstantKeys; import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; import com.bgsoftware.superiorskyblock.nms.v1_8_R3.algorithms.GlowEnchantment; +import com.bgsoftware.superiorskyblock.nms.v1_8_R3.world.KeyBlocksCache; import net.minecraft.server.v1_8_R3.Block; import net.minecraft.server.v1_8_R3.BlockPosition; +import net.minecraft.server.v1_8_R3.EntityFallingBlock; +import net.minecraft.server.v1_8_R3.EntityMinecartAbstract; import net.minecraft.server.v1_8_R3.IBlockData; import net.minecraft.server.v1_8_R3.IChatBaseComponent; import net.minecraft.server.v1_8_R3.Item; @@ -19,18 +22,20 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.craftbukkit.v1_8_R3.CraftServer; import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftFallingSand; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftMinecart; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_8_R3.util.CraftChatMessage; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Minecart; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.PotionMeta; -import org.bukkit.material.MaterialData; import org.bukkit.potion.PotionEffect; +import java.util.Optional; + public class NMSAlgorithmsImpl implements NMSAlgorithms { private final SuperiorSkyblockPlugin plugin; @@ -69,23 +74,20 @@ public int compareMaterials(Material o1, Material o2) { @Override public Key getBlockKey(int combinedId) { - // noinspection deprecation - Material material = Material.getMaterial(combinedId & 4095); - byte data = (byte) (combinedId >> 12 & 15); - return KeyImpl.of(material, data); + IBlockData blockData = Block.getByCombinedId(combinedId); + return KeyBlocksCache.getBlockKey(blockData); } @Override - public Key getMinecartBlock(Minecart minecart) { - MaterialData materialData = minecart.getDisplayBlock(); - //noinspection deprecation - return KeyImpl.of(materialData.getItemType(), materialData.getData()); + public Key getMinecartBlock(org.bukkit.entity.Minecart bukkitMinecart) { + EntityMinecartAbstract minecart = ((CraftMinecart) bukkitMinecart).getHandle(); + return KeyBlocksCache.getBlockKey(minecart.getDisplayBlock()); } @Override - public Key getFallingBlockType(FallingBlock fallingBlock) { - //noinspection deprecation - return KeyImpl.of(fallingBlock.getMaterial(), fallingBlock.getBlockData()); + public Key getFallingBlockType(FallingBlock bukkitFallingBlock) { + EntityFallingBlock fallingBlock = ((CraftFallingSand) bukkitFallingBlock).getHandle(); + return Optional.ofNullable(fallingBlock.getBlock()).map(KeyBlocksCache::getBlockKey).orElse(ConstantKeys.AIR); } @Override diff --git a/NMS/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSWorldImpl.java b/NMS/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSWorldImpl.java index 1b1852026..b33c325ba 100644 --- a/NMS/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSWorldImpl.java +++ b/NMS/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSWorldImpl.java @@ -13,9 +13,11 @@ import com.bgsoftware.superiorskyblock.nms.NMSWorld; import com.bgsoftware.superiorskyblock.nms.v1_8_R3.generator.IslandsGeneratorImpl; import com.bgsoftware.superiorskyblock.nms.v1_8_R3.spawners.MobSpawnerAbstractNotifier; +import com.bgsoftware.superiorskyblock.nms.v1_8_R3.world.KeyBlocksCache; import com.bgsoftware.superiorskyblock.nms.v1_8_R3.world.WorldEditSessionImpl; import com.bgsoftware.superiorskyblock.nms.world.WorldEditSession; import com.bgsoftware.superiorskyblock.tag.CompoundTag; +import net.minecraft.server.v1_8_R3.Block; import net.minecraft.server.v1_8_R3.BlockDoubleStep; import net.minecraft.server.v1_8_R3.BlockPosition; import net.minecraft.server.v1_8_R3.Chunk; @@ -37,7 +39,6 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; -import org.bukkit.block.Block; import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; import org.bukkit.craftbukkit.v1_8_R3.block.CraftSign; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; @@ -65,8 +66,9 @@ public NMSWorldImpl(SuperiorSkyblockPlugin plugin) { @Override @SuppressWarnings("deprecation") public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { - Material type = Material.getMaterial(chunkSnapshot.getBlockTypeId(x, y, z)); - short data = (short) chunkSnapshot.getBlockData(x, y, z); + int blockId = chunkSnapshot.getBlockTypeId(x, y, z); + int blockData = chunkSnapshot.getBlockData(x, y, z); + int combinedId = blockId + (blockData << 12); Location location = new Location( Bukkit.getWorld(chunkSnapshot.getWorldName()), @@ -75,7 +77,9 @@ public Key getBlockKey(ChunkSnapshot chunkSnapshot, int x, int y, int z) { (chunkSnapshot.getZ() << 4) + z ); - return KeyImpl.of(KeyImpl.of(type, data), location); + Key rawBlockKey = KeyBlocksCache.getBlockKey(Block.getByCombinedId(combinedId)); + + return KeyImpl.of(rawBlockKey, location); } @Override @@ -156,7 +160,7 @@ public void setWorldBorder(SuperiorPlayer superiorPlayer, Island island) { } @Override - public Object getBlockData(Block block) { + public Object getBlockData(org.bukkit.block.Block block) { // Doesn't exist return null; } @@ -211,7 +215,7 @@ public CompoundTag readTileEntity(Location location) { } @Override - public boolean isWaterLogged(Block block) { + public boolean isWaterLogged(org.bukkit.block.Block block) { Material blockType = block.getType(); return blockType == Material.WATER || blockType == Material.STATIONARY_WATER; }