diff --git a/src/main/java/carpet/mixins/ExplosionMixin.java b/src/main/java/carpet/mixins/ExplosionMixin.java new file mode 100644 index 00000000..ccca2596 --- /dev/null +++ b/src/main/java/carpet/mixins/ExplosionMixin.java @@ -0,0 +1,32 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.explosion.Explosion; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; + +@Mixin(Explosion.class) +public abstract class ExplosionMixin +{ + @Shadow + @Final + private List affectedBlocks; + + @Inject(method = "collectBlocksAndDamageEntities", at = @At(value = "INVOKE", shift = At.Shift.AFTER, + target = "Ljava/util/List;addAll(Ljava/util/Collection;)Z")) + private void clearList(CallbackInfo ci) + { + if (CarpetSettings.getBool("explosionNoBlockDamage")) + { + this.affectedBlocks.clear(); + } + } + +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 94a9c0de..6d5895c7 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -24,7 +24,8 @@ "ContainerMixin", "ClientConnectionMixin", "ItemEntityMixin", - "TntBlockMixin" + "TntBlockMixin", + "ExplosionMixin" ], "client": [ "MinecraftClientMixin",