diff --git a/CHANGELOG.md b/CHANGELOG.md index fea42e8..81a09ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,16 @@ ## Changelog -# 2.2.2 -- Fix crash with Beacon Overhaul when faking night vision with silver trim +# 2.2.3 +- Fix dragons breath trim applying to owner if the effect is provided by the armour +- Effect cloud now only applies a 1 second copy of the effect so the effect is only shared while in the cloud +- Increased default radius of the cloud to balance this out
Older Versions +# 2.2.2 +- Fix crash with Beacon Overhaul when faking night vision with silver trim + # 2.2.1 - Invert material checking to improve leniency with other mod's items when using All The Trims - Previously was "material contains item", now is "item contains material", so "block of iron" will now be considered iron diff --git a/gradle.properties b/gradle.properties index c089455..65dc01d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.20.1+build.10 loader_version=0.15.3 # Mod Properties -mod_version=2.2.2 +mod_version=2.2.3 maven_group=com.bawnorton archives_base_name=bettertrims diff --git a/src/main/java/com/bawnorton/bettertrims/config/Config.java b/src/main/java/com/bawnorton/bettertrims/config/Config.java index 6e2c93d..f848a72 100644 --- a/src/main/java/com/bawnorton/bettertrims/config/Config.java +++ b/src/main/java/com/bawnorton/bettertrims/config/Config.java @@ -55,7 +55,7 @@ public class Config { @FloatOption(group = "added_vanilla", value = 0.4f, max = 4) @TextureLocation("minecraft:textures/item/leather.png") public Float leatherStepHeightIncrease; - @FloatOption(group = "added_vanilla", value = 1.25f, max = 5) + @FloatOption(group = "added_vanilla", value = 2f, max = 10) @TextureLocation("minecraft:textures/item/dragon_breath.png") public Float dragonBreathRadius; @FloatOption(group = "added_vanilla", value = 1.5f, max = 5) diff --git a/src/main/java/com/bawnorton/bettertrims/extend/StatusEffectInstanceExtender.java b/src/main/java/com/bawnorton/bettertrims/extend/StatusEffectInstanceExtender.java deleted file mode 100644 index 3af70e0..0000000 --- a/src/main/java/com/bawnorton/bettertrims/extend/StatusEffectInstanceExtender.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.bawnorton.bettertrims.extend; - -public interface StatusEffectInstanceExtender { - boolean betterTrims$hadFirstUpdate(); -} diff --git a/src/main/java/com/bawnorton/bettertrims/mixin/AreaEffectCloudEntityMixin.java b/src/main/java/com/bawnorton/bettertrims/mixin/AreaEffectCloudEntityMixin.java index e8d5b88..29a81b0 100644 --- a/src/main/java/com/bawnorton/bettertrims/mixin/AreaEffectCloudEntityMixin.java +++ b/src/main/java/com/bawnorton/bettertrims/mixin/AreaEffectCloudEntityMixin.java @@ -1,8 +1,6 @@ package com.bawnorton.bettertrims.mixin; -import com.bawnorton.bettertrims.effect.ArmorTrimEffects; import com.bawnorton.bettertrims.extend.AreaEffectCloudEntityExtender; -import com.bawnorton.bettertrims.extend.LivingEntityExtender; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import net.minecraft.entity.AreaEffectCloudEntity; @@ -19,9 +17,8 @@ public abstract class AreaEffectCloudEntityMixin implements AreaEffectCloudEntit @WrapOperation(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;isAffectedBySplashPotions()Z")) private boolean dontAffectOwnerIfTrimmed(LivingEntity instance, Operation original) { if (!original.call(instance)) return false; - if (trimOwner != instance || !(trimOwner instanceof LivingEntityExtender extender)) return true; - return !ArmorTrimEffects.DRAGONS_BREATH.appliesTo(extender.betterTrims$getTrimmables()); + return trimOwner != instance; } @Unique diff --git a/src/main/java/com/bawnorton/bettertrims/mixin/LivingEntityMixin.java b/src/main/java/com/bawnorton/bettertrims/mixin/LivingEntityMixin.java index 00203bf..aad1c63 100644 --- a/src/main/java/com/bawnorton/bettertrims/mixin/LivingEntityMixin.java +++ b/src/main/java/com/bawnorton/bettertrims/mixin/LivingEntityMixin.java @@ -5,6 +5,7 @@ import com.bawnorton.bettertrims.extend.AreaEffectCloudEntityExtender; import com.bawnorton.bettertrims.extend.LivingEntityExtender; import com.bawnorton.bettertrims.mixin.accessor.AreaEffectCloudEntityAccessor; +import com.bawnorton.bettertrims.mixin.accessor.StatusEffectInstanceAccessor; import com.bawnorton.bettertrims.util.EquippedStack; import com.bawnorton.bettertrims.util.NumberWrapper; import com.bawnorton.bettertrims.util.RandomHelper; @@ -34,9 +35,12 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.Slice; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -206,11 +210,15 @@ private void manageAreaEffectCloud(CallbackInfo ci) { ArmorTrimEffects.DRAGONS_BREATH.apply(betterTrims$getTrimmables(), () -> radius.increment(ConfigManager.getConfig().dragonBreathRadius)); AreaEffectCloudEntity areaEffectCloud = new AreaEffectCloudEntity(getWorld(), getX(), getY(), getZ()); + activeStatusEffects.values().forEach(effect -> { + StatusEffectInstance copy = new StatusEffectInstance(effect); + ((StatusEffectInstanceAccessor) copy).setDuration(2); + areaEffectCloud.addEffect(copy); + }); ((AreaEffectCloudEntityExtender) areaEffectCloud).betterTrims$setTrimOwner((LivingEntity) (Object) this); areaEffectCloud.setOwner((LivingEntity) (Object) this); - areaEffectCloud.setDuration(1); areaEffectCloud.setRadius(radius.getFloat()); - activeStatusEffects.values().forEach(areaEffectCloud::addEffect); + areaEffectCloud.setDuration(1); ((AreaEffectCloudEntityAccessor) areaEffectCloud).invokeUpdateColor(); getWorld().spawnEntity(areaEffectCloud); } diff --git a/src/main/java/com/bawnorton/bettertrims/mixin/StatusEffectInstanceMixin.java b/src/main/java/com/bawnorton/bettertrims/mixin/StatusEffectInstanceMixin.java index 5e0cfce..cf1fab4 100644 --- a/src/main/java/com/bawnorton/bettertrims/mixin/StatusEffectInstanceMixin.java +++ b/src/main/java/com/bawnorton/bettertrims/mixin/StatusEffectInstanceMixin.java @@ -3,7 +3,6 @@ import com.bawnorton.bettertrims.config.ConfigManager; import com.bawnorton.bettertrims.effect.ArmorTrimEffects; import com.bawnorton.bettertrims.extend.LivingEntityExtender; -import com.bawnorton.bettertrims.extend.StatusEffectInstanceExtender; import com.bawnorton.bettertrims.util.NumberWrapper; import com.bawnorton.bettertrims.util.RandomHelper; import net.minecraft.entity.LivingEntity; @@ -17,7 +16,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(StatusEffectInstance.class) -public abstract class StatusEffectInstanceMixin implements StatusEffectInstanceExtender { +public abstract class StatusEffectInstanceMixin { @Shadow private int duration; diff --git a/src/main/java/com/bawnorton/bettertrims/mixin/accessor/StatusEffectInstanceAccessor.java b/src/main/java/com/bawnorton/bettertrims/mixin/accessor/StatusEffectInstanceAccessor.java new file mode 100644 index 0000000..678c05f --- /dev/null +++ b/src/main/java/com/bawnorton/bettertrims/mixin/accessor/StatusEffectInstanceAccessor.java @@ -0,0 +1,11 @@ +package com.bawnorton.bettertrims.mixin.accessor; + +import net.minecraft.entity.effect.StatusEffectInstance; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StatusEffectInstance.class) +public interface StatusEffectInstanceAccessor { + @Accessor + void setDuration(int duration); +} diff --git a/src/main/resources/bettertrims.mixins.json b/src/main/resources/bettertrims.mixins.json index 47d19fb..a2b7694 100644 --- a/src/main/resources/bettertrims.mixins.json +++ b/src/main/resources/bettertrims.mixins.json @@ -27,6 +27,7 @@ "VillagerEntityMixin", "accessor.AbstractFurnaceBlockEntityAccessor", "accessor.AreaEffectCloudEntityAccessor", + "accessor.StatusEffectInstanceAccessor", "compat.IllagerEntityMixin", "compat.connector.fabric.EnchantmentHelperMixin", "compat.connector.forge.EnchantmentHelperMixin"