From c833b625f2bdde1c6570f173164636495241f48c Mon Sep 17 00:00:00 2001 From: "Ryan Fox (flewkey)" Date: Fri, 17 Jan 2020 07:10:56 +0000 Subject: [PATCH] Disable TNT using callback injectors --- .../party/_2a03/mc/mixin/MixinTntBlock.java | 17 +++++++++-------- .../party/_2a03/mc/mixin/MixinTntEntity.java | 15 ++++++++------- src/main/java/party/_2a03/mc/server/Config.java | 4 ++++ 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/main/java/party/_2a03/mc/mixin/MixinTntBlock.java b/src/main/java/party/_2a03/mc/mixin/MixinTntBlock.java index d90553f..59dace7 100644 --- a/src/main/java/party/_2a03/mc/mixin/MixinTntBlock.java +++ b/src/main/java/party/_2a03/mc/mixin/MixinTntBlock.java @@ -9,12 +9,15 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.state.property.BooleanProperty; import net.minecraft.state.property.Properties; import net.minecraft.world.World; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; +import party._2a03.mc.server.Config; @Mixin(TntBlock.class) -public class MixinTntBlock extends Block { +public abstract class MixinTntBlock extends Block { @Shadow public static final BooleanProperty UNSTABLE = Properties.UNSTABLE; @@ -23,11 +26,9 @@ public class MixinTntBlock extends Block { this.setDefaultState(this.getDefaultState().with(UNSTABLE, false)); } - /** - * @reason Disable TNT block explosions. - * @author flewkey - */ - @Overwrite - private static void primeTnt(World world, BlockPos pos, @Nullable LivingEntity igniter) { + @Inject(method = "primeTnt", at = @At("HEAD"), cancellable = true) + private static void OnPrimeTnt(CallbackInfo ci) { + if (Config.getBool("disableTntExplosions") == true) + ci.cancel(); } } diff --git a/src/main/java/party/_2a03/mc/mixin/MixinTntEntity.java b/src/main/java/party/_2a03/mc/mixin/MixinTntEntity.java index 804a2a0..809d5f5 100644 --- a/src/main/java/party/_2a03/mc/mixin/MixinTntEntity.java +++ b/src/main/java/party/_2a03/mc/mixin/MixinTntEntity.java @@ -4,9 +4,12 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.TntEntity; import net.minecraft.world.World; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; +import party._2a03.mc.server.Config; @Mixin(TntEntity.class) public abstract class MixinTntEntity extends Entity { @@ -19,11 +22,9 @@ public abstract class MixinTntEntity extends Entity { this.inanimate = true; } - /** - * @reason Disable TNT entity explosions. - * @author flewkey - */ - @Overwrite - private void explode() { + @Inject(method = "explode", at = @At("HEAD"), cancellable = true) + private void OnTntExplode(CallbackInfo ci) { + if (Config.getBool("disableTntExplosions") == true) + ci.cancel(); } } diff --git a/src/main/java/party/_2a03/mc/server/Config.java b/src/main/java/party/_2a03/mc/server/Config.java index ff8fa02..1b04df1 100644 --- a/src/main/java/party/_2a03/mc/server/Config.java +++ b/src/main/java/party/_2a03/mc/server/Config.java @@ -77,6 +77,10 @@ public class Config { return json.getJSONArray(key); } + public static boolean getBool(String key) { + return json.getBoolean(key); + } + public static void setData(String key, JSONArray data) { json.put(key, data); saveConfig();