Skip to content

Commit

Permalink
add more trims and clean up
Browse files Browse the repository at this point in the history
  • Loading branch information
Bawnorton committed Aug 29, 2023
1 parent c4a54ed commit cd732ec
Show file tree
Hide file tree
Showing 9 changed files with 104 additions and 90 deletions.
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 @@ -4,6 +4,7 @@

public class Config {
private static Config INSTANCE;

@Expose
public Integer trimDurability;
@Expose
Expand Down Expand Up @@ -86,7 +87,6 @@ public static class Silver {
public static class SlimeBall {
@Expose
public Float fallDamageReduction;

@Expose
public Float knockbackIncrease;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,32 +20,32 @@
public abstract class ActiveTargetGoalMixin {
@ModifyArg(method = "<init>(Lnet/minecraft/entity/mob/MobEntity;Ljava/lang/Class;IZZLjava/util/function/Predicate;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/ai/TargetPredicate;setPredicate(Ljava/util/function/Predicate;)Lnet/minecraft/entity/ai/TargetPredicate;"))
private Predicate<LivingEntity> checkPlayerTrims(@Nullable Predicate<LivingEntity> predicate, @Local MobEntity mob) {
if(!(mob instanceof EntityExtender extender)) return predicate;

if(mob instanceof IllagerEntity) {
return getTrimPredicate(predicate, extender, ArmorTrimEffects.PLATINUM);
return getTrimPredicate(predicate, ArmorTrimEffects.PLATINUM);
}
if(mob instanceof GuardianEntity) {
return getTrimPredicate(predicate, extender, ArmorTrimEffects.PRISMARINE_SHARD);
return getTrimPredicate(predicate, ArmorTrimEffects.PRISMARINE_SHARD);
}
if(mob instanceof BlazeEntity) {
return getTrimPredicate(predicate, extender, ArmorTrimEffects.NETHER_BRICK, 2);
return getTrimPredicate(predicate, ArmorTrimEffects.NETHER_BRICK);
}
if(mob instanceof WitherSkeletonEntity) {
return getTrimPredicate(predicate, extender, ArmorTrimEffects.NETHER_BRICK, 4);
return getTrimPredicate(predicate, ArmorTrimEffects.NETHER_BRICK, 2);
}
return predicate;
}

@Unique
private Predicate<LivingEntity> getTrimPredicate(Predicate<LivingEntity> original, EntityExtender extender, ArmorTrimEffect effect) {
return getTrimPredicate(original, extender, effect, 1);
private Predicate<LivingEntity> getTrimPredicate(Predicate<LivingEntity> original, ArmorTrimEffect effect) {
return getTrimPredicate(original, effect, 1);
}

@Unique
private Predicate<LivingEntity> getTrimPredicate(Predicate<LivingEntity> original, EntityExtender extender, ArmorTrimEffect effect, int required) {
NumberWrapper trimCount = NumberWrapper.zero();
effect.apply(extender.betterTrims$getTrimmables(), () -> trimCount.increment(1));
return target -> trimCount.getInt() < required && (original == null || original.test(target));
private Predicate<LivingEntity> getTrimPredicate(Predicate<LivingEntity> original, ArmorTrimEffect effect, int required) {
return target -> {
NumberWrapper trimCount = NumberWrapper.zero();
effect.apply(((EntityExtender) target).betterTrims$getTrimmables(), () -> trimCount.increment(1));
return trimCount.getInt() < required && (original == null || original.test(target));
};
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.bawnorton.bettertrims.mixin;

import com.bawnorton.bettertrims.effect.ArmorTrimEffects;
import com.bawnorton.bettertrims.extend.EntityExtender;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import net.minecraft.entity.ai.goal.EscapeDangerGoal;
import net.minecraft.entity.mob.PathAwareEntity;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;

@Mixin(EscapeDangerGoal.class)
public abstract class EscapeDanagerGoalMixin {
@Shadow @Final protected PathAwareEntity mob;

@SuppressWarnings("unused")
@ModifyReturnValue(method = "isInDanger", at = @At("RETURN"))
private boolean checkPlayerTrims(boolean original) {
if (!original) return false;
if(!(mob.getAttacker() instanceof EntityExtender extender)) return true;

return !ArmorTrimEffects.RABBIT_HIDE.appliesTo(extender.betterTrims$getTrimmables());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.bawnorton.bettertrims.mixin;

import com.bawnorton.bettertrims.effect.ArmorTrimEffects;
import com.bawnorton.bettertrims.extend.EntityExtender;
import com.bawnorton.bettertrims.util.NumberWrapper;
import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.ai.goal.FleeEntityGoal;
import net.minecraft.entity.mob.PathAwareEntity;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.player.PlayerEntity;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;

import java.util.function.Predicate;

@Mixin(FleeEntityGoal.class)
public abstract class FleeEntityGoalMixin {
@ModifyArg(method = "<init>(Lnet/minecraft/entity/mob/PathAwareEntity;Ljava/lang/Class;Ljava/util/function/Predicate;FDDLjava/util/function/Predicate;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/ai/TargetPredicate;setPredicate(Ljava/util/function/Predicate;)Lnet/minecraft/entity/ai/TargetPredicate;"))
private Predicate<LivingEntity> checkPlayerTrims(@Nullable Predicate<LivingEntity> predicate, @Local Class<LivingEntity> classToFleeFrom, @Local PathAwareEntity mob) {
if(mob instanceof AnimalEntity && classToFleeFrom.isAssignableFrom(PlayerEntity.class)) {
return getTrimPredicate(predicate);
}
return predicate;
}

@Unique
private Predicate<LivingEntity> getTrimPredicate(Predicate<LivingEntity> original) {
return target -> {
NumberWrapper trimCount = NumberWrapper.zero();
ArmorTrimEffects.RABBIT_HIDE.apply(((EntityExtender) target).betterTrims$getTrimmables(), () -> trimCount.increment(1));
return trimCount.getInt() < 1 && (original == null || original.test(target));
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,6 @@ private float applyTrimJumpHeight(float original) {
return original;
}

@SuppressWarnings("BooleanMethodIsAlwaysInverted")
@ModifyReturnValue(method = "canTarget(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("RETURN"))
protected boolean shouldTargetTrimmedPlayer(boolean original, LivingEntity target) {
return original;
}

@ModifyExpressionValue(method = "damage", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/damage/DamageSource;getAttacker()Lnet/minecraft/entity/Entity;"))
private Entity applyFireChargeTrim(Entity original) {
if(!ArmorTrimEffects.FIRE_CHARGE.appliesTo(betterTrims$getTrimmables())) return original;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.bawnorton.bettertrims.mixin.compat;

import com.bawnorton.bettertrims.effect.ArmorTrimEffects;
import com.bawnorton.bettertrims.extend.EntityExtender;
import com.bawnorton.bettertrims.mixin.LivingEntityMixin;
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.mob.IllagerEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

@Mixin(IllagerEntity.class)
public abstract class IllagerEntityMixin extends LivingEntityMixin {
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
@ModifyReturnValue(method = "canTarget(Lnet/minecraft/entity/LivingEntity;)Z", at = @At("RETURN"))
protected boolean canTargetTrimmedPlayer(boolean original, LivingEntity target) {
return original && !ArmorTrimEffects.PLATINUM.appliesTo(((EntityExtender) target).betterTrims$getTrimmables());
}
}





This file was deleted.

This file was deleted.

7 changes: 4 additions & 3 deletions src/main/resources/bettertrims.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
"ElderGuardianEntityMixin",
"EndermanEntityMixin",
"EntityMixin",
"EscapeDanagerGoalMixin",
"FleeEntityGoalMixin",
"GameEventDispatchManagerMixin",
"ItemEntityMixin",
"LivingEntityMixin",
Expand All @@ -21,12 +23,11 @@
"StatusEffectInstanceMixin",
"VillagerEntityMixin",
"accessor.AbstractFurnaceBlockEntityAccessor",
"compat.IllagerEntityMixin",
"compat.connector.fabric.EnchantmentHelperMixin",
"compat.connector.fabric.PlayerEntityMixin",
"compat.connector.forge.EnchantmentHelperMixin",
"compat.connector.forge.PlayerEntityMixin",
"compat.friendsandfoes.IceologerMixin",
"compat.illagerinvasion.IllagerEntityMixin"
"compat.connector.forge.PlayerEntityMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down

0 comments on commit cd732ec

Please sign in to comment.