mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-28 19:39:11 +00:00
fix number argument
This commit is contained in:
@@ -11,6 +11,7 @@ public class BukkitBlockBehaviors extends BlockBehaviors {
|
||||
public static final Key STRIPPABLE_BLOCK = Key.from("craftengine:strippable_block");
|
||||
public static final Key SAPLING_BLOCK = Key.from("craftengine:sapling_block");
|
||||
public static final Key ON_LIQUID_BLOCK = Key.from("craftengine:on_liquid_block");
|
||||
public static final Key CONCRETE_POWDER_BLOCK = Key.from("craftengine:concrete_powder_block");
|
||||
|
||||
public static void init() {
|
||||
register(EMPTY, (block, args) -> EmptyBlockBehavior.INSTANCE);
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package net.momirealms.craftengine.bukkit.block.behavior;
|
||||
|
||||
public class ConcretePowderBlockBehavior extends FallingBlockBehavior {
|
||||
|
||||
public ConcretePowderBlockBehavior(float hurtAmount, int maxHurt) {
|
||||
super(hurtAmount, maxHurt);
|
||||
}
|
||||
}
|
||||
@@ -77,7 +77,7 @@ public class FallingBlockBehavior extends BlockBehavior {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBrokenAfterFall(Object thisBlock, Object[] args, Callable<Object> superMethod) throws Exception {
|
||||
public void onBrokenAfterFall(Object thisBlock, Object[] args) throws Exception {
|
||||
// Use EntityRemoveEvent for 1.20.3+
|
||||
if (VersionHelper.isVersionNewerThan1_20_3()) return;
|
||||
Object level = args[0];
|
||||
|
||||
@@ -228,6 +228,15 @@ public class BukkitInjector {
|
||||
.and(ElementMatchers.takesArgument(2, Reflections.clazz$FallingBlockEntity))
|
||||
)
|
||||
.intercept(MethodDelegation.to(OnBrokenAfterFallInterceptor.INSTANCE))
|
||||
// onLand
|
||||
.method(ElementMatchers.takesArguments(5)
|
||||
.and(ElementMatchers.takesArgument(0, Reflections.clazz$Level))
|
||||
.and(ElementMatchers.takesArgument(1, Reflections.clazz$BlockPos))
|
||||
.and(ElementMatchers.takesArgument(2, Reflections.clazz$BlockState))
|
||||
.and(ElementMatchers.takesArgument(3, Reflections.clazz$BlockState))
|
||||
.and(ElementMatchers.takesArgument(4, Reflections.clazz$FallingBlockEntity))
|
||||
)
|
||||
.intercept(MethodDelegation.to(OnLandInterceptor.INSTANCE))
|
||||
// canSurvive
|
||||
.method(ElementMatchers.takesArguments(3)
|
||||
.and(ElementMatchers.takesArgument(0, Reflections.clazz$BlockState))
|
||||
@@ -754,14 +763,28 @@ public class BukkitInjector {
|
||||
}
|
||||
}
|
||||
|
||||
public static class OnLandInterceptor {
|
||||
public static final OnLandInterceptor INSTANCE = new OnLandInterceptor();
|
||||
|
||||
@RuntimeType
|
||||
public void intercept(@This Object thisObj, @AllArguments Object[] args) {
|
||||
ObjectHolder<BlockBehavior> holder = ((BehaviorHolder) thisObj).getBehaviorHolder();
|
||||
try {
|
||||
holder.value().onLand(thisObj, args);
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().severe("Failed to run onLand", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class OnBrokenAfterFallInterceptor {
|
||||
public static final OnBrokenAfterFallInterceptor INSTANCE = new OnBrokenAfterFallInterceptor();
|
||||
|
||||
@RuntimeType
|
||||
public void intercept(@This Object thisObj, @AllArguments Object[] args, @SuperCall Callable<Object> superMethod) {
|
||||
public void intercept(@This Object thisObj, @AllArguments Object[] args) {
|
||||
ObjectHolder<BlockBehavior> holder = ((BehaviorHolder) thisObj).getBehaviorHolder();
|
||||
try {
|
||||
holder.value().onBrokenAfterFall(thisObj, args, superMethod);
|
||||
holder.value().onBrokenAfterFall(thisObj, args);
|
||||
} catch (Exception e) {
|
||||
CraftEngine.instance().logger().severe("Failed to run onBrokenAfterFall", e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user