diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index cb9f6441b..aa686c93b 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -22,6 +22,8 @@ dependencies { // NBT compileOnly("net.momirealms:sparrow-nbt:${rootProject.properties["sparrow_nbt_version"]}") compileOnly("net.momirealms:sparrow-util:${rootProject.properties["sparrow_util_version"]}") + // NMS + compileOnly("net.momirealms:craft-engine-nms-helper:${rootProject.properties["nms_helper_version"]}") // Placeholder compileOnly("me.clip:placeholderapi:${rootProject.properties["placeholder_api_version"]}") // Platform diff --git a/bukkit/loader/build.gradle.kts b/bukkit/loader/build.gradle.kts index 16f5973e4..9c093d371 100644 --- a/bukkit/loader/build.gradle.kts +++ b/bukkit/loader/build.gradle.kts @@ -24,6 +24,7 @@ dependencies { implementation("com.saicone.rtag:rtag-item:${rootProject.properties["rtag_version"]}") implementation("net.momirealms:sparrow-util:${rootProject.properties["sparrow_util_version"]}") implementation("com.github.Xiao-MoMi:AntiGriefLib:${rootProject.properties["anti_grief_version"]}") + implementation("net.momirealms:craft-engine-nms-helper:${rootProject.properties["nms_helper_version"]}") } java { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ConcretePowderBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ConcretePowderBlockBehavior.java index 5ebdc11dc..fa7a3068a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ConcretePowderBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ConcretePowderBlockBehavior.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.Callable; +// TODO Inject FallingBlockEntity? public class ConcretePowderBlockBehavior extends FallingBlockBehavior { public static final Factory FACTORY = new Factory(); private final Key targetBlock; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BukkitInjector.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BukkitInjector.java index 69cd69ccf..4dea40da0 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BukkitInjector.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BukkitInjector.java @@ -15,6 +15,7 @@ import net.momirealms.craftengine.bukkit.block.BukkitBlockManager; import net.momirealms.craftengine.bukkit.block.BukkitBlockShape; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; import net.momirealms.craftengine.bukkit.item.recipe.BukkitRecipeManager; +import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.NoteBlockChainUpdateUtils; import net.momirealms.craftengine.bukkit.util.Reflections; @@ -592,13 +593,13 @@ public class BukkitInjector { public static final GetAndSetInterceptor INSTANCE = new GetAndSetInterceptor(); @RuntimeType - public Object intercept(@This Object thisObj, @AllArguments Object[] args, @Origin MethodHandle method) throws Throwable { + public Object intercept(@This Object thisObj, @AllArguments Object[] args) { InjectedPalettedContainerHolder holder = (InjectedPalettedContainerHolder) thisObj; Object targetStates = holder.target(); int x = (int) args[0]; int y = (int) args[1]; int z = (int) args[2]; - Object previousState = method.invoke(targetStates, x, y, z, args[3]); + Object previousState = FastNMS.INSTANCE.method$PalettedContainer$getAndSet(targetStates, x, y, z, args[3]); try { Object newState = args[3]; int stateId = BlockStateUtils.blockStateToId(newState); diff --git a/gradle.properties b/gradle.properties index fb5b60a46..4a6305c08 100644 --- a/gradle.properties +++ b/gradle.properties @@ -49,6 +49,7 @@ mojang_brigadier_version=1.0.18 byte_buddy_version=1.15.11 snake_yaml_version=2.3 anti_grief_version=0.13 +nms_helper_version=0.1 # Ignite Dependencies mixinextras_version=0.4.1 mixin_version=0.15.2+mixin.0.8.7