Skip to content

Commit

Permalink
Fix dragons breath with armour that provide effects
Browse files Browse the repository at this point in the history
  • Loading branch information
Bawnorton committed Jan 31, 2024
1 parent 70ad592 commit aa99cad
Show file tree
Hide file tree
Showing 9 changed files with 35 additions and 19 deletions.
9 changes: 7 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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

<details>
<summary>Older Versions</summary>

# 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
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/bawnorton/bettertrims/config/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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<Boolean> 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
1 change: 1 addition & 0 deletions src/main/resources/bettertrims.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"VillagerEntityMixin",
"accessor.AbstractFurnaceBlockEntityAccessor",
"accessor.AreaEffectCloudEntityAccessor",
"accessor.StatusEffectInstanceAccessor",
"compat.IllagerEntityMixin",
"compat.connector.fabric.EnchantmentHelperMixin",
"compat.connector.forge.EnchantmentHelperMixin"
Expand Down

0 comments on commit aa99cad

Please sign in to comment.