From e21db58a6738fbccec2d153dca01a7f416dcbfb8 Mon Sep 17 00:00:00 2001 From: Christian Koop Date: Wed, 19 Apr 2023 21:50:30 +0200 Subject: [PATCH] Reimplement BlockUtils#updateAdjacentComparators in WorldCore The implementation broke in 1.19.4 mid-version. Fixes `java.lang.NoSuchMethodException: org.bukkit.craftbukkit.v1_19_R3.CraftChunk.getHandle()` Related commit: a3e73be1aad453f932a14950ae499e5161504c4b --- .../main/java/com/songoda/core/utils/BlockUtils.java | 4 ++++ .../java/com/songoda/core/nms/world/WorldCore.java | 5 +++-- .../core/nms/v1_10_R1/world/WorldCoreImpl.java | 12 ++++++++++++ .../core/nms/v1_11_R1/world/WorldCoreImpl.java | 12 ++++++++++++ .../core/nms/v1_12_R1/world/WorldCoreImpl.java | 12 ++++++++++++ .../core/nms/v1_13_R1/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_13_R2/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_14_R1/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_15_R1/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_16_R1/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_16_R2/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_16_R3/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_17_R1/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_18_R1/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_18_R2/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_19_R1/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_19_R1v2/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_19_R2/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_19_R3/world/WorldCoreImpl.java | 11 +++++++++++ .../core/nms/v1_8_R1/world/WorldCoreImpl.java | 12 ++++++++++++ .../core/nms/v1_8_R2/world/WorldCoreImpl.java | 12 ++++++++++++ .../core/nms/v1_8_R3/world/WorldCoreImpl.java | 12 ++++++++++++ .../core/nms/v1_9_R1/world/WorldCoreImpl.java | 12 ++++++++++++ .../core/nms/v1_9_R2/world/WorldCoreImpl.java | 12 ++++++++++++ 24 files changed, 257 insertions(+), 2 deletions(-) diff --git a/Core/src/main/java/com/songoda/core/utils/BlockUtils.java b/Core/src/main/java/com/songoda/core/utils/BlockUtils.java index 3329cff4..314feee9 100644 --- a/Core/src/main/java/com/songoda/core/utils/BlockUtils.java +++ b/Core/src/main/java/com/songoda/core/utils/BlockUtils.java @@ -4,6 +4,7 @@ import com.songoda.core.compatibility.ClassMapping; import com.songoda.core.compatibility.CompatibleMaterial; import com.songoda.core.compatibility.MethodMapping; import com.songoda.core.compatibility.ServerVersion; +import com.songoda.core.nms.NmsManager; import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; @@ -337,7 +338,10 @@ public class BlockUtils { * Manually trigger the updateAdjacentComparators method for containers * * @param loc The Location of the container + * + * @deprecated Broken in/since Spigot 1.19.4! Use {@link com.songoda.core.nms.world.WorldCore#updateAdjacentComparators(Block)} on {@link NmsManager#getWorld()} instead */ + @Deprecated public static void updateAdjacentComparators(Location loc) { if (loc == null || loc.getWorld() == null) { return; diff --git a/NMS/NMS-API/src/main/java/com/songoda/core/nms/world/WorldCore.java b/NMS/NMS-API/src/main/java/com/songoda/core/nms/world/WorldCore.java index bf5256ff..302569c9 100644 --- a/NMS/NMS-API/src/main/java/com/songoda/core/nms/world/WorldCore.java +++ b/NMS/NMS-API/src/main/java/com/songoda/core/nms/world/WorldCore.java @@ -3,12 +3,11 @@ package com.songoda.core.nms.world; import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.BlockState; import org.bukkit.block.CreatureSpawner; import org.bukkit.inventory.ItemStack; -import java.lang.reflect.InvocationTargetException; - public interface WorldCore { SSpawner getSpawner(CreatureSpawner spawner); @@ -30,6 +29,8 @@ public interface WorldCore { */ void randomTickChunk(Chunk bukkitChunk, int tickAmount) throws ReflectiveOperationException; + void updateAdjacentComparators(Block bukkitBlock); + /** * Ticks all inactive spawners in a specific chunk ignoring the minimum required players within a specific range.
* A spawner is deemed inactive if no player is within its activation range. diff --git a/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/WorldCoreImpl.java index 25d93b42..37fc32f0 100644 --- a/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_10_R1/src/main/java/com/songoda/core/nms/v1_10_R1/world/WorldCoreImpl.java @@ -18,6 +18,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_10_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_10_R1.block.CraftBlock; +import org.bukkit.craftbukkit.v1_10_R1.util.CraftMagicNumbers; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -85,4 +87,14 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(org.bukkit.block.Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + net.minecraft.server.v1_10_R1.World nmsWorld = craftChunk.getHandle().getWorld(); + + BlockPosition blockPosition = new BlockPosition(craftBlock.getX(), craftBlock.getY(), craftBlock.getZ()); + nmsWorld.updateAdjacentComparators(blockPosition, CraftMagicNumbers.getBlock(craftBlock)); + } } diff --git a/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/WorldCoreImpl.java index 966be49c..15e5f026 100644 --- a/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_11_R1/src/main/java/com/songoda/core/nms/v1_11_R1/world/WorldCoreImpl.java @@ -18,6 +18,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_11_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_11_R1.block.CraftBlock; +import org.bukkit.craftbukkit.v1_11_R1.util.CraftMagicNumbers; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -85,4 +87,14 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(org.bukkit.block.Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + net.minecraft.server.v1_11_R1.World nmsWorld = craftChunk.getHandle().getWorld(); + + BlockPosition blockPosition = new BlockPosition(craftBlock.getX(), craftBlock.getY(), craftBlock.getZ()); + nmsWorld.updateAdjacentComparators(blockPosition, CraftMagicNumbers.getBlock(craftBlock)); + } } diff --git a/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/WorldCoreImpl.java index 447c2624..eef44159 100644 --- a/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_12_R1/src/main/java/com/songoda/core/nms/v1_12_R1/world/WorldCoreImpl.java @@ -18,6 +18,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_12_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_12_R1.block.CraftBlock; +import org.bukkit.craftbukkit.v1_12_R1.util.CraftMagicNumbers; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -85,4 +87,14 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(org.bukkit.block.Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + net.minecraft.server.v1_12_R1.World nmsWorld = craftChunk.getHandle().getWorld(); + + BlockPosition blockPosition = new BlockPosition(craftBlock.getX(), craftBlock.getY(), craftBlock.getZ()); + nmsWorld.updateAdjacentComparators(blockPosition, CraftMagicNumbers.getBlock(craftBlock)); + } } diff --git a/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/WorldCoreImpl.java index 3e34e414..a00cf41d 100644 --- a/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_13_R1/src/main/java/com/songoda/core/nms/v1_13_R1/world/WorldCoreImpl.java @@ -16,8 +16,10 @@ import net.minecraft.server.v1_13_R1.MobSpawnerAbstract; import net.minecraft.server.v1_13_R1.WorldServer; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_13_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_13_R1.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -89,4 +91,13 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + net.minecraft.server.v1_13_R1.World nmsWorld = craftChunk.getHandle().getWorld(); + nmsWorld.updateAdjacentComparators(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/WorldCoreImpl.java b/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/WorldCoreImpl.java index 28b29315..43283261 100644 --- a/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_13_R2/src/main/java/com/songoda/core/nms/v1_13_R2/world/WorldCoreImpl.java @@ -16,8 +16,10 @@ import net.minecraft.server.v1_13_R2.MobSpawnerAbstract; import net.minecraft.server.v1_13_R2.WorldServer; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_13_R2.CraftChunk; +import org.bukkit.craftbukkit.v1_13_R2.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -96,4 +98,13 @@ public class WorldCoreImpl implements WorldCore { chunk.world.methodProfiler.exit(); } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + net.minecraft.server.v1_13_R2.World nmsWorld = craftChunk.getHandle().getWorld(); + nmsWorld.updateAdjacentComparators(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/WorldCoreImpl.java index 3dbffc9f..9a15ed48 100644 --- a/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_14_R1/src/main/java/com/songoda/core/nms/v1_14_R1/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.server.v1_14_R1.MobSpawnerAbstract; import net.minecraft.server.v1_14_R1.WorldServer; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_14_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_14_R1.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -93,4 +95,13 @@ public class WorldCoreImpl implements WorldCore { profiler.exit(); } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + net.minecraft.server.v1_14_R1.World nmsWorld = craftChunk.getHandle().getWorld(); + nmsWorld.updateAdjacentComparators(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/WorldCoreImpl.java index b32e1e7a..8810cf6a 100644 --- a/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_15_R1/src/main/java/com/songoda/core/nms/v1_15_R1/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.server.v1_15_R1.MobSpawnerAbstract; import net.minecraft.server.v1_15_R1.WorldServer; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_15_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_15_R1.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -96,4 +98,13 @@ public class WorldCoreImpl implements WorldCore { profiler.exit(); } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + net.minecraft.server.v1_15_R1.World nmsWorld = craftChunk.getHandle().getWorld(); + nmsWorld.updateAdjacentComparators(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/WorldCoreImpl.java index b86c9568..cbe8ef07 100644 --- a/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_16_R1/src/main/java/com/songoda/core/nms/v1_16_R1/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.server.v1_16_R1.MobSpawnerAbstract; import net.minecraft.server.v1_16_R1.WorldServer; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_16_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_16_R1.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -97,4 +99,13 @@ public class WorldCoreImpl implements WorldCore { profiler.exit(); } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + net.minecraft.server.v1_16_R1.World nmsWorld = craftChunk.getHandle().getWorld(); + nmsWorld.updateAdjacentComparators(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/WorldCoreImpl.java b/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/WorldCoreImpl.java index bdf815df..842cf36e 100644 --- a/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_16_R2/src/main/java/com/songoda/core/nms/v1_16_R2/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.server.v1_16_R2.MobSpawnerAbstract; import net.minecraft.server.v1_16_R2.WorldServer; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_16_R2.CraftChunk; +import org.bukkit.craftbukkit.v1_16_R2.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -97,4 +99,13 @@ public class WorldCoreImpl implements WorldCore { profiler.exit(); } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + net.minecraft.server.v1_16_R2.World nmsWorld = craftChunk.getHandle().getWorld(); + nmsWorld.updateAdjacentComparators(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/WorldCoreImpl.java b/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/WorldCoreImpl.java index c4b0f5c3..b1ad6147 100644 --- a/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_16_R3/src/main/java/com/songoda/core/nms/v1_16_R3/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.server.v1_16_R3.MobSpawnerAbstract; import net.minecraft.server.v1_16_R3.WorldServer; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_16_R3.CraftChunk; +import org.bukkit.craftbukkit.v1_16_R3.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -98,4 +100,13 @@ public class WorldCoreImpl implements WorldCore { profiler.exit(); } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + net.minecraft.server.v1_16_R3.World nmsWorld = craftChunk.getHandle().getWorld(); + nmsWorld.updateAdjacentComparators(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_17_R1/src/main/java/com/songoda/core/nms/v1_17_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_17_R1/src/main/java/com/songoda/core/nms/v1_17_R1/world/WorldCoreImpl.java index 7f800f18..c1ba86ab 100644 --- a/NMS/NMS-v1_17_R1/src/main/java/com/songoda/core/nms/v1_17_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_17_R1/src/main/java/com/songoda/core/nms/v1_17_R1/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.world.level.chunk.ChunkSection; import net.minecraft.world.level.material.Fluid; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_17_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_17_R1.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -96,4 +98,13 @@ public class WorldCoreImpl implements WorldCore { profiler.exit(); } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + net.minecraft.world.level.World nmsWorld = craftChunk.getHandle().getWorld(); + nmsWorld.updateAdjacentComparators(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_18_R1/src/main/java/com/songoda/core/nms/v1_18_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_18_R1/src/main/java/com/songoda/core/nms/v1_18_R1/world/WorldCoreImpl.java index 88bec313..cefdd224 100644 --- a/NMS/NMS-v1_18_R1/src/main/java/com/songoda/core/nms/v1_18_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_18_R1/src/main/java/com/songoda/core/nms/v1_18_R1/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.world.level.chunk.ChunkSection; import net.minecraft.world.level.material.Fluid; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_18_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_18_R1.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -93,4 +95,13 @@ public class WorldCoreImpl implements WorldCore { gameprofilerfiller.c(); } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + WorldServer nmsWorld = craftChunk.getHandle().q; + nmsWorld.c(craftBlock.getPosition(), craftBlock.getNMS().b()); + } } diff --git a/NMS/NMS-v1_18_R2/src/main/java/com/songoda/core/nms/v1_18_R2/world/WorldCoreImpl.java b/NMS/NMS-v1_18_R2/src/main/java/com/songoda/core/nms/v1_18_R2/world/WorldCoreImpl.java index fc0198eb..bbfc8474 100644 --- a/NMS/NMS-v1_18_R2/src/main/java/com/songoda/core/nms/v1_18_R2/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_18_R2/src/main/java/com/songoda/core/nms/v1_18_R2/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.material.FluidState; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_18_R2.CraftChunk; +import org.bukkit.craftbukkit.v1_18_R2.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -92,4 +94,13 @@ public class WorldCoreImpl implements WorldCore { gameProfilerFiller.pop(); } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + ServerLevel nmsWorld = craftChunk.getHandle().q; + nmsWorld.updateNeighbourForOutputSignal(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_19_R1/src/main/java/com/songoda/core/nms/v1_19_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_19_R1/src/main/java/com/songoda/core/nms/v1_19_R1/world/WorldCoreImpl.java index 02b63a43..ef9b1958 100644 --- a/NMS/NMS-v1_19_R1/src/main/java/com/songoda/core/nms/v1_19_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_19_R1/src/main/java/com/songoda/core/nms/v1_19_R1/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.material.FluidState; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_19_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_19_R1.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -90,4 +92,13 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + ServerLevel nmsWorld = craftChunk.getHandle().q; + nmsWorld.updateNeighbourForOutputSignal(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_19_R1v2/src/main/java/com/songoda/core/nms/v1_19_R1v2/world/WorldCoreImpl.java b/NMS/NMS-v1_19_R1v2/src/main/java/com/songoda/core/nms/v1_19_R1v2/world/WorldCoreImpl.java index 496fa18e..b0015e23 100644 --- a/NMS/NMS-v1_19_R1v2/src/main/java/com/songoda/core/nms/v1_19_R1v2/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_19_R1v2/src/main/java/com/songoda/core/nms/v1_19_R1v2/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.material.FluidState; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_19_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_19_R1.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -90,4 +92,13 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + ServerLevel nmsWorld = craftChunk.getHandle().q; + nmsWorld.updateNeighbourForOutputSignal(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_19_R2/src/main/java/com/songoda/core/nms/v1_19_R2/world/WorldCoreImpl.java b/NMS/NMS-v1_19_R2/src/main/java/com/songoda/core/nms/v1_19_R2/world/WorldCoreImpl.java index c616f9ff..cd919101 100644 --- a/NMS/NMS-v1_19_R2/src/main/java/com/songoda/core/nms/v1_19_R2/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_19_R2/src/main/java/com/songoda/core/nms/v1_19_R2/world/WorldCoreImpl.java @@ -18,8 +18,10 @@ import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.material.FluidState; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_19_R2.CraftChunk; +import org.bukkit.craftbukkit.v1_19_R2.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -90,4 +92,13 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + + ServerLevel nmsWorld = craftChunk.getHandle().q; + nmsWorld.updateNeighbourForOutputSignal(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_19_R3/src/main/java/com/songoda/core/nms/v1_19_R3/world/WorldCoreImpl.java b/NMS/NMS-v1_19_R3/src/main/java/com/songoda/core/nms/v1_19_R3/world/WorldCoreImpl.java index 5a84efc4..1a3b56ca 100644 --- a/NMS/NMS-v1_19_R3/src/main/java/com/songoda/core/nms/v1_19_R3/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_19_R3/src/main/java/com/songoda/core/nms/v1_19_R3/world/WorldCoreImpl.java @@ -19,8 +19,10 @@ import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.material.FluidState; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.block.Block; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_19_R3.CraftChunk; +import org.bukkit.craftbukkit.v1_19_R3.block.CraftBlock; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -91,4 +93,13 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + LevelChunk nmsChunk = (LevelChunk) craftChunk.getHandle(ChunkStatus.FULL); + + nmsChunk.q.updateNeighbourForOutputSignal(craftBlock.getPosition(), craftBlock.getNMS().getBlock()); + } } diff --git a/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/WorldCoreImpl.java index 2c024638..abd021ad 100644 --- a/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_8_R1/src/main/java/com/songoda/core/nms/v1_8_R1/world/WorldCoreImpl.java @@ -18,6 +18,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_8_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_8_R1.block.CraftBlock; +import org.bukkit.craftbukkit.v1_8_R1.util.CraftMagicNumbers; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -87,4 +89,14 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(org.bukkit.block.Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + net.minecraft.server.v1_8_R1.World nmsWorld = craftChunk.getHandle().getWorld(); + + BlockPosition blockPosition = new BlockPosition(craftBlock.getX(), craftBlock.getY(), craftBlock.getZ()); + nmsWorld.updateAdjacentComparators(blockPosition, CraftMagicNumbers.getBlock(craftBlock)); + } } diff --git a/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/WorldCoreImpl.java b/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/WorldCoreImpl.java index bd0d76bc..158e7a2a 100644 --- a/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_8_R2/src/main/java/com/songoda/core/nms/v1_8_R2/world/WorldCoreImpl.java @@ -18,6 +18,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_8_R2.CraftChunk; +import org.bukkit.craftbukkit.v1_8_R2.block.CraftBlock; +import org.bukkit.craftbukkit.v1_8_R2.util.CraftMagicNumbers; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -87,4 +89,14 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(org.bukkit.block.Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + net.minecraft.server.v1_8_R2.World nmsWorld = craftChunk.getHandle().getWorld(); + + BlockPosition blockPosition = new BlockPosition(craftBlock.getX(), craftBlock.getY(), craftBlock.getZ()); + nmsWorld.updateAdjacentComparators(blockPosition, CraftMagicNumbers.getBlock(craftBlock)); + } } diff --git a/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/WorldCoreImpl.java b/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/WorldCoreImpl.java index 45fcb655..bba6b4f7 100644 --- a/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_8_R3/src/main/java/com/songoda/core/nms/v1_8_R3/world/WorldCoreImpl.java @@ -18,6 +18,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_8_R3.CraftChunk; +import org.bukkit.craftbukkit.v1_8_R3.block.CraftBlock; +import org.bukkit.craftbukkit.v1_8_R3.util.CraftMagicNumbers; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -86,4 +88,14 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(org.bukkit.block.Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + net.minecraft.server.v1_8_R3.World nmsWorld = craftChunk.getHandle().getWorld(); + + BlockPosition blockPosition = new BlockPosition(craftBlock.getX(), craftBlock.getY(), craftBlock.getZ()); + nmsWorld.updateAdjacentComparators(blockPosition, CraftMagicNumbers.getBlock(craftBlock)); + } } diff --git a/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/WorldCoreImpl.java b/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/WorldCoreImpl.java index 66c3e421..1cf86d79 100644 --- a/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_9_R1/src/main/java/com/songoda/core/nms/v1_9_R1/world/WorldCoreImpl.java @@ -18,6 +18,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_9_R1.CraftChunk; +import org.bukkit.craftbukkit.v1_9_R1.block.CraftBlock; +import org.bukkit.craftbukkit.v1_9_R1.util.CraftMagicNumbers; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -86,4 +88,14 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(org.bukkit.block.Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + net.minecraft.server.v1_9_R1.World nmsWorld = craftChunk.getHandle().getWorld(); + + BlockPosition blockPosition = new BlockPosition(craftBlock.getX(), craftBlock.getY(), craftBlock.getZ()); + nmsWorld.updateAdjacentComparators(blockPosition, CraftMagicNumbers.getBlock(craftBlock)); + } } diff --git a/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/WorldCoreImpl.java b/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/WorldCoreImpl.java index 5dfeba18..41091719 100644 --- a/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/WorldCoreImpl.java +++ b/NMS/NMS-v1_9_R2/src/main/java/com/songoda/core/nms/v1_9_R2/world/WorldCoreImpl.java @@ -18,6 +18,8 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.CreatureSpawner; import org.bukkit.craftbukkit.v1_9_R2.CraftChunk; +import org.bukkit.craftbukkit.v1_9_R2.block.CraftBlock; +import org.bukkit.craftbukkit.v1_9_R2.util.CraftMagicNumbers; import org.bukkit.inventory.ItemStack; public class WorldCoreImpl implements WorldCore { @@ -85,4 +87,14 @@ public class WorldCoreImpl implements WorldCore { } } } + + @Override + public void updateAdjacentComparators(org.bukkit.block.Block bukkitBlock) { + CraftBlock craftBlock = (CraftBlock) bukkitBlock; + CraftChunk craftChunk = (CraftChunk) bukkitBlock.getChunk(); + net.minecraft.server.v1_9_R2.World nmsWorld = craftChunk.getHandle().getWorld(); + + BlockPosition blockPosition = new BlockPosition(craftBlock.getX(), craftBlock.getY(), craftBlock.getZ()); + nmsWorld.updateAdjacentComparators(blockPosition, CraftMagicNumbers.getBlock(craftBlock)); + } }