diff --git a/src/main/java/party/_2a03/mc/mixin/MixinCreeperEntity.java b/src/main/java/party/_2a03/mc/mixin/MixinCreeperEntity.java new file mode 100644 index 0000000..c1bba40 --- /dev/null +++ b/src/main/java/party/_2a03/mc/mixin/MixinCreeperEntity.java @@ -0,0 +1,29 @@ +package party._2a03.mc.mixin; + +import net.minecraft.entity.EntityType; +import net.minecraft.entity.Entity; +import net.minecraft.entity.mob.CreeperEntity; +import net.minecraft.entity.mob.HostileEntity; +import net.minecraft.world.World; +import net.minecraft.world.explosion.Explosion; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.Mixin; +import party._2a03.mc.util.Config; + +@Mixin(CreeperEntity.class) +public abstract class MixinCreeperEntity extends HostileEntity { + public MixinCreeperEntity(EntityType entityType, World world) { + super((EntityType)entityType, world); + } + + @Redirect(method = "explode()V", at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/World;createExplosion(Lnet/minecraft/entity/Entity;DDDFLnet/minecraft/world/explosion/Explosion$DestructionType;)Lnet/minecraft/world/explosion/Explosion;")) + private Explosion OnCreeperExplode(World self, Entity entity, + double x, double y, double z, float r, + Explosion.DestructionType destructionType) { + if (Config.getBool("disableCreeperExplosions")) + destructionType = Explosion.DestructionType.NONE; + return self.createExplosion(entity, x, y, z, r, destructionType); + } +} diff --git a/src/main/java/party/_2a03/mc/util/Config.java b/src/main/java/party/_2a03/mc/util/Config.java index 3179727..1683bce 100644 --- a/src/main/java/party/_2a03/mc/util/Config.java +++ b/src/main/java/party/_2a03/mc/util/Config.java @@ -35,9 +35,10 @@ public class Config { json = new JSONObject(); } - setDefault("persistentFlight", true); + setDefault("persistentFlight", false); setDefault("disableFlyCommand", true); setDefault("disableTntExplosions", false); + setDefault("disableCreeperExplosions", false); setDefault("disableRespawnAnchorExplosions", false); setDefault("iphubApiKey", ""); setDefault("spawn", (new PlayerPosition()).getJSON()); diff --git a/src/main/resources/minecraft-tweaks-2a03.mixins.json b/src/main/resources/minecraft-tweaks-2a03.mixins.json index 47f6ee9..ff70cb0 100644 --- a/src/main/resources/minecraft-tweaks-2a03.mixins.json +++ b/src/main/resources/minecraft-tweaks-2a03.mixins.json @@ -3,6 +3,7 @@ "package": "party._2a03.mc.mixin", "compatibilityLevel": "JAVA_17", "server": [ + "MixinCreeperEntity", "MixinGameModeCommand", "MixinPlayerManager", "MixinRespawnAnchorBlock",