From 97f19fcf34f72de2f5330eb9350eb360d67b39e2 Mon Sep 17 00:00:00 2001 From: Fretux Date: Tue, 13 Jan 2026 08:49:11 +0100 Subject: [PATCH] Add damage type tag for knockdown bypass --- .../knockedback/KnockedBackDamageTags.java | 16 ++++++++++++++++ .../net/fretux/knockedback/KnockedManager.java | 15 +-------------- .../net/fretux/knockedback/config/Config.java | 17 +---------------- .../tags/damage_type/bypass_knockdown.json | 14 ++++++++++++++ 4 files changed, 32 insertions(+), 30 deletions(-) create mode 100644 src/main/java/net/fretux/knockedback/KnockedBackDamageTags.java create mode 100644 src/main/resources/data/knockedback/tags/damage_type/bypass_knockdown.json diff --git a/src/main/java/net/fretux/knockedback/KnockedBackDamageTags.java b/src/main/java/net/fretux/knockedback/KnockedBackDamageTags.java new file mode 100644 index 0000000..8486235 --- /dev/null +++ b/src/main/java/net/fretux/knockedback/KnockedBackDamageTags.java @@ -0,0 +1,16 @@ +package net.fretux.knockedback; + +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; + +public final class KnockedBackDamageTags { + public static final TagKey BYPASS_KNOCKDOWN = TagKey.create( + Registries.DAMAGE_TYPE, + new ResourceLocation(KnockedBack.MOD_ID, "bypass_knockdown") + ); + + private KnockedBackDamageTags() { + } +} diff --git a/src/main/java/net/fretux/knockedback/KnockedManager.java b/src/main/java/net/fretux/knockedback/KnockedManager.java index fe10c78..6ced95a 100644 --- a/src/main/java/net/fretux/knockedback/KnockedManager.java +++ b/src/main/java/net/fretux/knockedback/KnockedManager.java @@ -167,22 +167,9 @@ public class KnockedManager { } return; } - String damageType = src.getMsgId(); boolean isFatal = player.getHealth() - event.getAmount() <= 0; if (isFatal) { - if (Config.COMMON.explosionsBypassKnockdown.get() && - (damageType.contains("explosion") || damageType.contains("fireworks"))) { - killAndRemove(player); - return; - } - if (Config.COMMON.fallDamageBypassesKnockdown.get() && damageType.contains("fall")) { - killAndRemove(player); - return; - } - if (Config.COMMON.lavaBypassesKnockdown.get() && - (damageType.contains("lava") || damageType.contains("inFire") || - damageType.contains("fire") || damageType.contains("onFire") || - damageType.contains("fireball") || damageType.contains("hotFloor"))) { + if (src.is(KnockedBackDamageTags.BYPASS_KNOCKDOWN)) { killAndRemove(player); return; } diff --git a/src/main/java/net/fretux/knockedback/config/Config.java b/src/main/java/net/fretux/knockedback/config/Config.java index bfb0aa8..ceac068 100644 --- a/src/main/java/net/fretux/knockedback/config/Config.java +++ b/src/main/java/net/fretux/knockedback/config/Config.java @@ -16,9 +16,6 @@ public class Config { public final ForgeConfigSpec.IntValue knockedDuration; public final ForgeConfigSpec.IntValue executionTime; public final ForgeConfigSpec.BooleanValue totemPreventsKnockdown; - public final ForgeConfigSpec.BooleanValue explosionsBypassKnockdown; - public final ForgeConfigSpec.BooleanValue fallDamageBypassesKnockdown; - public final ForgeConfigSpec.BooleanValue lavaBypassesKnockdown; public Common(ForgeConfigSpec.Builder builder) { builder.push("general"); @@ -37,19 +34,7 @@ public class Config { .comment("If true, Totems of Undying prevent entering the knocked state. Default: true.") .define("totemPreventsKnockdown", true); - explosionsBypassKnockdown = builder - .comment("If true, explosions immediately kill instead of knocking down. Default: true.") - .define("explosionsBypassKnockdown", true); - - fallDamageBypassesKnockdown = builder - .comment("If true, fatal fall damage kills instead of knocking down. Default: true.") - .define("fallDamageBypassesKnockdown", true); - - lavaBypassesKnockdown = builder - .comment("If true, lava or fire damage kills instead of knocking down. Default: true.") - .define("lavaBypassesKnockdown", true); - builder.pop(); } } -} \ No newline at end of file +} diff --git a/src/main/resources/data/knockedback/tags/damage_type/bypass_knockdown.json b/src/main/resources/data/knockedback/tags/damage_type/bypass_knockdown.json new file mode 100644 index 0000000..c0d0fec --- /dev/null +++ b/src/main/resources/data/knockedback/tags/damage_type/bypass_knockdown.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "minecraft:explosion", + "minecraft:player_explosion", + "minecraft:fireworks", + "minecraft:fall", + "minecraft:lava", + "minecraft:in_fire", + "minecraft:on_fire", + "minecraft:hot_floor", + "minecraft:fireball" + ] +}