diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/ExplosionMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/ExplosionMixin.java index eb711f75f..17bfbc553 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/ExplosionMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/ExplosionMixin.java @@ -90,12 +90,13 @@ public abstract class ExplosionMixin implements ExplosionBridge { this.radius = Math.max(sizeIn, 0F); } - /** - * @author IzzelAliz - * @reason - */ - @Overwrite - public void explode() { + @Inject(method = "explode", at = @At("HEAD"), cancellable = true) + public void arclight$explode(CallbackInfo ci) { + ci.cancel(); + this.arclight$explodeImpl(); + } + + private void arclight$explodeImpl() { if (this.radius < 0.1F) { return; } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/block/ChorusFlowerBlockMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/block/ChorusFlowerBlockMixin.java index 1b03f23be..86dbaedb6 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/block/ChorusFlowerBlockMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/level/block/ChorusFlowerBlockMixin.java @@ -17,7 +17,6 @@ import org.bukkit.craftbukkit.v.event.CraftEventFactory; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -36,12 +35,14 @@ public abstract class ChorusFlowerBlockMixin extends BlockMixin { @Shadow protected abstract void placeDeadFlower(Level worldIn, BlockPos pos); // @formatter:on - /** - * @author IzzelAliz - * @reason - */ - @Overwrite - public void randomTick(BlockState state, ServerLevel worldIn, BlockPos pos, RandomSource random) { + @Inject(method = "randomTick", at = @At("HEAD"), cancellable = true) + public void arclight$randomTick(BlockState state, ServerLevel worldIn, BlockPos pos, RandomSource random, CallbackInfo ci) { + // Call the original logic but make it cancellable for compatibility + this.arclight$performRandomTick(state, worldIn, pos, random); + ci.cancel(); // Prevent original method execution + } + + private void arclight$performRandomTick(BlockState state, ServerLevel worldIn, BlockPos pos, RandomSource random) { BlockPos blockpos = pos.above(); if (worldIn.isEmptyBlock(blockpos) && blockpos.getY() < 256) { int i = state.getValue(AGE); diff --git a/arclight-forge/build.gradle b/arclight-forge/build.gradle index 1fe82a7fc..c6ea85cd4 100644 --- a/arclight-forge/build.gradle +++ b/arclight-forge/build.gradle @@ -1,7 +1,7 @@ import java.security.MessageDigest plugins { - id 'com.github.johnrengelman.shadow' version '7.0.0' apply false + id 'com.github.johnrengelman.shadow' version '7.1.2' apply false } apply plugin: 'java'