diff --git a/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/BigCartridgeBlockMixin.java b/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/BigCartridgeBlockMixin.java index f0f5f86d..41b1440d 100644 --- a/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/BigCartridgeBlockMixin.java +++ b/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/BigCartridgeBlockMixin.java @@ -9,15 +9,17 @@ import net.minecraft.core.Direction; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Explosion; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.DirectionalBlock; import net.minecraft.world.level.block.state.BlockState; import rbasamoyai.createbigcannons.munitions.big_cannon.propellant.BigCartridgeBlock; import rbasamoyai.createbigcannons.munitions.big_cannon.propellant.BigCartridgeBlockEntity; import rbasamoyai.createbigcannons.munitions.big_cannon.propellant.PrimedPropellant; +import rbasamoyai.createbigcannons.remix.CBCExplodableBlock; @Mixin(BigCartridgeBlock.class) -public abstract class BigCartridgeBlockMixin extends DirectionalBlock { +public abstract class BigCartridgeBlockMixin extends DirectionalBlock implements CBCExplodableBlock { BigCartridgeBlockMixin(Properties properties) { super(properties); } @@ -29,6 +31,12 @@ public void onCaughtFire(BlockState state, Level level, BlockPos pos, @Nullable level.removeBlock(pos, false); } + @Override + public void onBlockExploded(BlockState state, Level level, BlockPos pos, Explosion explosion) { + this.createbigcannons$onBlockExplode(level, pos, state, explosion); + super.onBlockExploded(state, level, pos, explosion); + } + @Override public int getFlammability(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { return level.getBlockEntity(pos) instanceof BigCartridgeBlockEntity cartridge && cartridge.getPower() > 0 ? 30 : 0; diff --git a/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/ExplosionMixin.java b/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/ExplosionMixin.java deleted file mode 100644 index 0c3d45fc..00000000 --- a/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/ExplosionMixin.java +++ /dev/null @@ -1,25 +0,0 @@ -package rbasamoyai.createbigcannons.forge.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.Explosion; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; -import rbasamoyai.createbigcannons.remix.CBCExplodableBlock; - -@Mixin(Explosion.class) -public class ExplosionMixin { - - @WrapOperation(method = "finalizeExplosion", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;onBlockExploded(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/Explosion;)V")) - public void onBlockExploded(BlockState instance, Level level, BlockPos pos, Explosion explosion, Operation original) { - if (instance.getBlock() instanceof CBCExplodableBlock cbcExplodable) - cbcExplodable.createbigcannons$onBlockExplode(level, pos, instance, explosion); - original.call(instance, level, pos, explosion); - } - -} diff --git a/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/PowderChargeBlockMixin.java b/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/PowderChargeBlockMixin.java index d6bedcb2..499b4b4e 100644 --- a/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/PowderChargeBlockMixin.java +++ b/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/PowderChargeBlockMixin.java @@ -9,14 +9,16 @@ import net.minecraft.core.Direction; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Explosion; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockState; import rbasamoyai.createbigcannons.munitions.big_cannon.propellant.PowderChargeBlock; import rbasamoyai.createbigcannons.munitions.big_cannon.propellant.PrimedPropellant; +import rbasamoyai.createbigcannons.remix.CBCExplodableBlock; @Mixin(PowderChargeBlock.class) -public abstract class PowderChargeBlockMixin extends RotatedPillarBlock { +public abstract class PowderChargeBlockMixin extends RotatedPillarBlock implements CBCExplodableBlock { PowderChargeBlockMixin(Properties properties) { super(properties); } @@ -28,6 +30,12 @@ public void onCaughtFire(BlockState state, Level level, BlockPos pos, @Nullable level.removeBlock(pos, false); } + @Override + public void onBlockExploded(BlockState state, Level level, BlockPos pos, Explosion explosion) { + this.createbigcannons$onBlockExplode(level, pos, state, explosion); + super.onBlockExploded(state, level, pos, explosion); + } + @Override public int getFlammability(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { return 100; diff --git a/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/ProjectileBlockMixin.java b/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/ProjectileBlockMixin.java new file mode 100644 index 00000000..7bba0c3a --- /dev/null +++ b/forge/src/main/java/rbasamoyai/createbigcannons/forge/mixin/ProjectileBlockMixin.java @@ -0,0 +1,24 @@ +package rbasamoyai.createbigcannons.forge.mixin; + +import org.spongepowered.asm.mixin.Mixin; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.DirectionalBlock; +import net.minecraft.world.level.block.state.BlockState; +import rbasamoyai.createbigcannons.munitions.big_cannon.ProjectileBlock; +import rbasamoyai.createbigcannons.remix.CBCExplodableBlock; + +@Mixin(ProjectileBlock.class) +public class ProjectileBlockMixin extends DirectionalBlock implements CBCExplodableBlock { + + ProjectileBlockMixin(Properties arg) { super(arg); } + + @Override + public void onBlockExploded(BlockState state, Level level, BlockPos pos, Explosion explosion) { + this.createbigcannons$onBlockExplode(level, pos, state, explosion); + super.onBlockExploded(state, level, pos, explosion); + } + +} diff --git a/forge/src/main/resources/createbigcannons.mixins.json b/forge/src/main/resources/createbigcannons.mixins.json index 6060fe33..eb94fc9b 100644 --- a/forge/src/main/resources/createbigcannons.mixins.json +++ b/forge/src/main/resources/createbigcannons.mixins.json @@ -16,11 +16,11 @@ "CannonMountPointMixin", "CBCFlowingFluidMixin", "CBCLiquidBlockMixin", - "ExplosionMixin", "GasMaskItemMixin", "MountedAutocannonContraptionMixin", "PitchOrientedContraptionEntityMixin", "PowderChargeBlockMixin", + "ProjectileBlockMixin", "compat.FramedAdjustableDoubleBlockEntityAccessor" ], "injectors": { diff --git a/src/main/java/rbasamoyai/createbigcannons/mixin/client/ValueSettingsClientMixin.java b/src/main/java/rbasamoyai/createbigcannons/mixin/client/ValueSettingsClientMixin.java index 76598d6c..0d298127 100644 --- a/src/main/java/rbasamoyai/createbigcannons/mixin/client/ValueSettingsClientMixin.java +++ b/src/main/java/rbasamoyai/createbigcannons/mixin/client/ValueSettingsClientMixin.java @@ -22,7 +22,7 @@ public class ValueSettingsClientMixin { @Shadow public BlockPos interactHeldPos; - @WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lcom/simibubi/create/foundation/gui/ScreenOpener;open(Lnet/minecraft/client/gui/screens/Screen;)V"), remap = false) + @WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lcom/simibubi/create/foundation/gui/ScreenOpener;open(Lnet/minecraft/client/gui/screens/Screen;)V")) private void createbigcannons$tick$openScreen(Screen screen, Operation original, @Local ValueSettingsBehaviour valueSettingBehaviour, @Local Player player, @Local BlockHitResult blockHitResult) { if (valueSettingBehaviour instanceof FixedCannonMountScrollValueBehaviour fixedMountBehaviour) {