DarkShadow44

wolf mixin

Apr 24th, 2021
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. package me.jrm_wrm.mob_gems.util.mixin;
  2.  
  3. import java.util.Optional;
  4.  
  5. import org.spongepowered.asm.mixin.Mixin;
  6. import org.spongepowered.asm.mixin.injection.At;
  7. import org.spongepowered.asm.mixin.injection.Inject;
  8. import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
  9.  
  10. import me.jrm_wrm.mob_gems.MobGemsClient;
  11. import me.jrm_wrm.mob_gems.items.BraceletItem;
  12. import net.minecraft.entity.LivingEntity;
  13. import net.minecraft.entity.ai.goal.Goal;
  14. import net.minecraft.entity.ai.goal.RevengeGoal;
  15. import net.minecraft.entity.passive.TameableEntity;
  16. import net.minecraft.entity.passive.WolfEntity;
  17. import net.minecraft.item.ItemStack;
  18.  
  19. @Mixin(WolfEntity.class)
  20. public abstract class WolfEntityMixin extends TameableEntity {
  21.  
  22. protected WolfEntityMixin() {
  23. super(null, null);
  24. }
  25.  
  26. @Inject(method = "tickMovement", at = @At(value = "INVOKE", target = "tickAngerLogic"))
  27. public void stopAngerOnTickMove(CallbackInfo info) {
  28.  
  29. WolfEntity wolf = (WolfEntity) (Object) this;
  30. LivingEntity target = wolf.getTarget();
  31.  
  32. // TODO: remove debug logging
  33. System.out.println("start: \n" + wolf.world.isClient + " - " + wolf.getAngerTime() + " - " + wolf.getAngryAt());
  34.  
  35. if (target != null) {
  36. ItemStack bracelet = BraceletItem.getEquippedBracelet(target);
  37. if (bracelet != ItemStack.EMPTY) {
  38. if (!((BraceletItem) bracelet.getItem()).isAugmenter) {
  39. wolf.stopAnger();
  40. Optional<Goal> revengeGoal = targetSelector.getRunningGoals().map(goal -> goal.getGoal())
  41. .filter(goal -> goal instanceof RevengeGoal).findFirst();
  42. if (!revengeGoal.isEmpty()) {
  43. revengeGoal.get().stop();
  44. }
  45. }
  46. }
  47. }
  48.  
  49. // TODO: remove debug logging
  50. System.out.println(wolf.world.isClient + " - " + wolf.getAngerTime() + " - " + wolf.getAngryAt());
  51. }
  52.  
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment