From c5d7d40431383d53f75ff678b50a451f5ea40c52 Mon Sep 17 00:00:00 2001 From: azzyy Date: Mon, 18 Nov 2024 16:39:42 -0600 Subject: [PATCH] Immunity now immunities all over eternal slumber (it makes you immune to it. How immunizing.) --- .../spectrum/items/trinkets/WhispyCircletItem.java | 4 ++-- .../dafuqs/spectrum/mixin/LivingEntityMixin.java | 2 +- .../registries/SpectrumStatusEffectTags.java | 14 ++++++++++---- .../{uncurable.json => immunity_immune.json} | 1 - .../data/spectrum/tags/mob_effect/unclearable.json | 6 ++++++ 5 files changed, 19 insertions(+), 8 deletions(-) rename src/main/resources/data/spectrum/tags/mob_effect/{uncurable.json => immunity_immune.json} (61%) create mode 100644 src/main/resources/data/spectrum/tags/mob_effect/unclearable.json diff --git a/src/main/java/de/dafuqs/spectrum/items/trinkets/WhispyCircletItem.java b/src/main/java/de/dafuqs/spectrum/items/trinkets/WhispyCircletItem.java index b5a346ba6d..30383cef1d 100644 --- a/src/main/java/de/dafuqs/spectrum/items/trinkets/WhispyCircletItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/trinkets/WhispyCircletItem.java @@ -36,7 +36,7 @@ public static void removeSingleStatusEffect(@NotNull LivingEntity entity, Status List negativeEffects = new ArrayList<>(); for (StatusEffectInstance statusEffectInstance : currentEffects) { StatusEffect effect = statusEffectInstance.getEffectType(); - if (effect.getCategory() == category && !SpectrumStatusEffectTags.isIn(SpectrumStatusEffectTags.SOPORIFIC, effect) && !SpectrumStatusEffectTags.isIncurable(effect)) { + if (effect.getCategory() == category && !SpectrumStatusEffectTags.isIn(SpectrumStatusEffectTags.SOPORIFIC, effect) && !SpectrumStatusEffectTags.isUnclearable(effect)) { negativeEffects.add(statusEffectInstance); } } @@ -90,7 +90,7 @@ public static void shortenNegativeStatusEffects(@NotNull LivingEntity entity, in } public static boolean affects(StatusEffect statusEffect) { - return statusEffect.getCategory() == StatusEffectCategory.HARMFUL && !SpectrumStatusEffectTags.isIn(SpectrumStatusEffectTags.SOPORIFIC, statusEffect) && !SpectrumStatusEffectTags.isIncurable(statusEffect); + return statusEffect.getCategory() == StatusEffectCategory.HARMFUL && !SpectrumStatusEffectTags.isIn(SpectrumStatusEffectTags.SOPORIFIC, statusEffect) && !SpectrumStatusEffectTags.isUnclearable(statusEffect); } public static void preventPhantomSpawns(@NotNull ServerPlayerEntity serverPlayerEntity) { diff --git a/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java b/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java index ab8114c6e8..76145fd782 100644 --- a/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java +++ b/src/main/java/de/dafuqs/spectrum/mixin/LivingEntityMixin.java @@ -227,7 +227,7 @@ public abstract class LivingEntityMixin { private boolean spectrum$canHaveStatusEffect(boolean original, @Local(argsOnly = true) StatusEffectInstance statusEffectInstance) { var instance = (LivingEntity) (Object) this; - if (original && this.hasStatusEffect(SpectrumStatusEffects.IMMUNITY) && statusEffectInstance.getEffectType().getCategory() == StatusEffectCategory.HARMFUL && !SpectrumStatusEffectTags.isIncurable(statusEffectInstance.getEffectType())) { + if (original && this.hasStatusEffect(SpectrumStatusEffects.IMMUNITY) && statusEffectInstance.getEffectType().getCategory() == StatusEffectCategory.HARMFUL && !SpectrumStatusEffectTags.isImmunityImmune(statusEffectInstance.getEffectType())) { if (Incurable.isIncurable(statusEffectInstance)) { var immunity = getStatusEffect(SpectrumStatusEffects.IMMUNITY); var cost = 600 * (statusEffectInstance.getAmplifier() + 1); diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumStatusEffectTags.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumStatusEffectTags.java index 3833fd2fc9..a819297a86 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumStatusEffectTags.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumStatusEffectTags.java @@ -8,13 +8,15 @@ public class SpectrumStatusEffectTags { - public static TagKey INCURABLE; + public static TagKey NO_EFFECT_CLEAR; + public static TagKey IMMUNITY_IMMUNE; public static TagKey NO_DURATION_EXTENSION; public static TagKey SOPORIFIC; public static TagKey NIGHT_ALCHEMY; public static void register() { - INCURABLE = of("uncurable"); + NO_EFFECT_CLEAR = of("unclearable"); + IMMUNITY_IMMUNE = of("immunity_immune"); NO_DURATION_EXTENSION = of("no_duration_extension"); SOPORIFIC = of("soporific"); NIGHT_ALCHEMY = of("night_alchemy"); @@ -28,8 +30,12 @@ public static boolean isIn(TagKey tag, StatusEffect effect) { return Registries.STATUS_EFFECT.getEntry(effect).isIn(tag); } - public static boolean isIncurable(StatusEffect statusEffect) { - return isIn(SpectrumStatusEffectTags.INCURABLE, statusEffect); + public static boolean isImmunityImmune(StatusEffect statusEffect) { + return isIn(SpectrumStatusEffectTags.IMMUNITY_IMMUNE, statusEffect); + } + + public static boolean isUnclearable(StatusEffect statusEffect) { + return isIn(SpectrumStatusEffectTags.NO_EFFECT_CLEAR, statusEffect); } public static boolean hasEffectWithTag(LivingEntity livingEntity, TagKey tag) { diff --git a/src/main/resources/data/spectrum/tags/mob_effect/uncurable.json b/src/main/resources/data/spectrum/tags/mob_effect/immunity_immune.json similarity index 61% rename from src/main/resources/data/spectrum/tags/mob_effect/uncurable.json rename to src/main/resources/data/spectrum/tags/mob_effect/immunity_immune.json index 065e3d0368..c98eda0649 100644 --- a/src/main/resources/data/spectrum/tags/mob_effect/uncurable.json +++ b/src/main/resources/data/spectrum/tags/mob_effect/immunity_immune.json @@ -1,6 +1,5 @@ { "values": [ - "spectrum:eternal_slumber", "spectrum:fatal_slumber" ] } diff --git a/src/main/resources/data/spectrum/tags/mob_effect/unclearable.json b/src/main/resources/data/spectrum/tags/mob_effect/unclearable.json new file mode 100644 index 0000000000..5fa33d7ffb --- /dev/null +++ b/src/main/resources/data/spectrum/tags/mob_effect/unclearable.json @@ -0,0 +1,6 @@ +{ + "values": [ + "spectrum:eternal_slumber", + "#spectrum:immunity_immune" + ] +}