From 2f6483196bc3d44e41dff8d1d2487c1f37799eb3 Mon Sep 17 00:00:00 2001 From: DeadlyMC Date: Sat, 18 May 2019 20:20:32 +0530 Subject: [PATCH] added explosionNoBlockDamage --- .../java/carpet/mixins/ExplosionMixin.java | 32 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 3 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/main/java/carpet/mixins/ExplosionMixin.java 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",