Class PiglinAi

java.lang.Object
net.minecraft.world.entity.monster.piglin.PiglinAi

public class PiglinAi extends Object
  • Field Details

    • REPELLENT_DETECTION_RANGE_HORIZONTAL

      public static final int REPELLENT_DETECTION_RANGE_HORIZONTAL
      See Also:
    • REPELLENT_DETECTION_RANGE_VERTICAL

      public static final int REPELLENT_DETECTION_RANGE_VERTICAL
      See Also:
    • BARTERING_ITEM

      public static final Item BARTERING_ITEM
    • PLAYER_ANGER_RANGE

      private static final int PLAYER_ANGER_RANGE
      See Also:
    • ANGER_DURATION

      private static final int ANGER_DURATION
      See Also:
    • ADMIRE_DURATION

      private static final int ADMIRE_DURATION
      See Also:
    • MAX_DISTANCE_TO_WALK_TO_ITEM

      private static final int MAX_DISTANCE_TO_WALK_TO_ITEM
      See Also:
    • MAX_TIME_TO_WALK_TO_ITEM

      private static final int MAX_TIME_TO_WALK_TO_ITEM
      See Also:
    • HOW_LONG_TIME_TO_DISABLE_ADMIRE_WALKING_IF_CANT_REACH_ITEM

      private static final int HOW_LONG_TIME_TO_DISABLE_ADMIRE_WALKING_IF_CANT_REACH_ITEM
      See Also:
    • CELEBRATION_TIME

      private static final int CELEBRATION_TIME
      See Also:
    • MAX_TIME_BETWEEN_HUNTS

      public static final int MAX_TIME_BETWEEN_HUNTS
      See Also:
    • TIME_BETWEEN_HUNTS

      protected static final UniformInt TIME_BETWEEN_HUNTS
    • BABY_FLEE_DURATION_AFTER_GETTING_HIT

      private static final int BABY_FLEE_DURATION_AFTER_GETTING_HIT
      See Also:
    • HIT_BY_PLAYER_MEMORY_TIMEOUT

      private static final int HIT_BY_PLAYER_MEMORY_TIMEOUT
      See Also:
    • MAX_WALK_DISTANCE_TO_START_RIDING

      private static final int MAX_WALK_DISTANCE_TO_START_RIDING
      See Also:
    • RIDE_START_INTERVAL

      private static final UniformInt RIDE_START_INTERVAL
    • RIDE_DURATION

      private static final UniformInt RIDE_DURATION
    • RETREAT_DURATION

      private static final UniformInt RETREAT_DURATION
    • MELEE_ATTACK_COOLDOWN

      private static final int MELEE_ATTACK_COOLDOWN
      See Also:
    • EAT_COOLDOWN

      private static final int EAT_COOLDOWN
      See Also:
    • DESIRED_DISTANCE_FROM_ENTITY_WHEN_AVOIDING

      private static final int DESIRED_DISTANCE_FROM_ENTITY_WHEN_AVOIDING
      See Also:
    • MAX_LOOK_DIST

      private static final int MAX_LOOK_DIST
      See Also:
    • MAX_LOOK_DIST_FOR_PLAYER_HOLDING_LOVED_ITEM

      private static final int MAX_LOOK_DIST_FOR_PLAYER_HOLDING_LOVED_ITEM
      See Also:
    • INTERACTION_RANGE

      private static final int INTERACTION_RANGE
      See Also:
    • MIN_DESIRED_DIST_FROM_TARGET_WHEN_HOLDING_CROSSBOW

      private static final int MIN_DESIRED_DIST_FROM_TARGET_WHEN_HOLDING_CROSSBOW
      See Also:
    • SPEED_WHEN_STRAFING_BACK_FROM_TARGET

      private static final float SPEED_WHEN_STRAFING_BACK_FROM_TARGET
      See Also:
    • DESIRED_DISTANCE_FROM_ZOMBIFIED

      private static final int DESIRED_DISTANCE_FROM_ZOMBIFIED
      See Also:
    • AVOID_ZOMBIFIED_DURATION

      private static final UniformInt AVOID_ZOMBIFIED_DURATION
    • BABY_AVOID_NEMESIS_DURATION

      private static final UniformInt BABY_AVOID_NEMESIS_DURATION
    • PROBABILITY_OF_CELEBRATION_DANCE

      private static final float PROBABILITY_OF_CELEBRATION_DANCE
      See Also:
    • SPEED_MULTIPLIER_WHEN_AVOIDING

      private static final float SPEED_MULTIPLIER_WHEN_AVOIDING
      See Also:
    • SPEED_MULTIPLIER_WHEN_RETREATING

      private static final float SPEED_MULTIPLIER_WHEN_RETREATING
      See Also:
    • SPEED_MULTIPLIER_WHEN_MOUNTING

      private static final float SPEED_MULTIPLIER_WHEN_MOUNTING
      See Also:
    • SPEED_MULTIPLIER_WHEN_GOING_TO_WANTED_ITEM

      private static final float SPEED_MULTIPLIER_WHEN_GOING_TO_WANTED_ITEM
      See Also:
    • SPEED_MULTIPLIER_WHEN_GOING_TO_CELEBRATE_LOCATION

      private static final float SPEED_MULTIPLIER_WHEN_GOING_TO_CELEBRATE_LOCATION
      See Also:
    • SPEED_MULTIPLIER_WHEN_DANCING

      private static final float SPEED_MULTIPLIER_WHEN_DANCING
      See Also:
    • SPEED_MULTIPLIER_WHEN_IDLING

      private static final float SPEED_MULTIPLIER_WHEN_IDLING
      See Also:
  • Constructor Details

    • PiglinAi

      public PiglinAi()
  • Method Details

    • getActivities

      public static List<ActivityData<Piglin>> getActivities(Piglin piglin)
    • initMemories

      protected static void initMemories(Piglin body, RandomSource random)
    • initCoreActivity

      private static ActivityData<Piglin> initCoreActivity()
    • initIdleActivity

      private static ActivityData<Piglin> initIdleActivity()
    • initFightActivity

      private static ActivityData<Piglin> initFightActivity(Piglin body)
    • initCelebrateActivity

      private static ActivityData<Piglin> initCelebrateActivity()
    • initAdmireItemActivity

      private static ActivityData<Piglin> initAdmireItemActivity()
    • initRetreatActivity

      private static ActivityData<Piglin> initRetreatActivity()
    • initRideHoglinActivity

      private static ActivityData<Piglin> initRideHoglinActivity()
    • createLookBehaviors

      private static ImmutableList<com.mojang.datafixers.util.Pair<OneShot<LivingEntity>, Integer>> createLookBehaviors()
    • createIdleLookBehaviors

      private static RunOne<LivingEntity> createIdleLookBehaviors()
    • createIdleMovementBehaviors

      private static RunOne<Piglin> createIdleMovementBehaviors()
    • avoidRepellent

      private static BehaviorControl<PathfinderMob> avoidRepellent()
    • babyAvoidNemesis

      private static BehaviorControl<Piglin> babyAvoidNemesis()
    • avoidZombified

      private static BehaviorControl<Piglin> avoidZombified()
    • updateActivity

      protected static void updateActivity(Piglin body)
    • isBabyRidingBaby

      private static boolean isBabyRidingBaby(Piglin body)
    • pickUpItem

      protected static void pickUpItem(ServerLevel level, Piglin body, ItemEntity itemEntity)
    • holdInOffhand

      private static void holdInOffhand(ServerLevel level, Piglin body, ItemStack itemStack)
    • removeOneItemFromItemEntity

      private static ItemStack removeOneItemFromItemEntity(ItemEntity itemEntity)
    • stopHoldingOffHandItem

      protected static void stopHoldingOffHandItem(ServerLevel level, Piglin body, boolean barteringEnabled)
    • cancelAdmiring

      protected static void cancelAdmiring(ServerLevel level, Piglin body)
    • putInInventory

      private static void putInInventory(Piglin body, ItemStack itemStack)
    • throwItems

      private static void throwItems(Piglin body, List<ItemStack> itemStacks)
    • throwItemsTowardRandomPos

      private static void throwItemsTowardRandomPos(Piglin body, List<ItemStack> itemStacks)
    • throwItemsTowardPlayer

      private static void throwItemsTowardPlayer(Piglin body, Player player, List<ItemStack> itemStacks)
    • throwItemsTowardPos

      private static void throwItemsTowardPos(Piglin body, List<ItemStack> itemStacks, Vec3 targetPos)
    • getBarterResponseItems

      private static List<ItemStack> getBarterResponseItems(Piglin body)
    • wantsToDance

      private static boolean wantsToDance(LivingEntity body, LivingEntity killedTarget)
    • wantsToPickup

      protected static boolean wantsToPickup(Piglin body, ItemStack itemStack)
    • isLovedItem

      protected static boolean isLovedItem(ItemStack itemStack)
    • wantsToStopRiding

      private static boolean wantsToStopRiding(Piglin body, Entity entityBeingRidden)
    • isNearestValidAttackTarget

      private static boolean isNearestValidAttackTarget(ServerLevel level, Piglin body, LivingEntity target)
    • isNearZombified

      private static boolean isNearZombified(Piglin body)
    • findNearestValidAttackTarget

      private static Optional<? extends LivingEntity> findNearestValidAttackTarget(ServerLevel level, Piglin body)
    • angerNearbyPiglins

      public static void angerNearbyPiglins(ServerLevel level, Player player, boolean onlyIfTheySeeThePlayer)
    • mobInteract

      public static InteractionResult mobInteract(ServerLevel level, Piglin body, Player player, InteractionHand hand)
    • canAdmire

      protected static boolean canAdmire(Piglin body, ItemStack playerHeldItemStack)
    • wasHurtBy

      protected static void wasHurtBy(ServerLevel level, Piglin body, LivingEntity attacker)
    • maybeRetaliate

      protected static void maybeRetaliate(ServerLevel level, AbstractPiglin body, LivingEntity attacker)
    • getSoundForCurrentActivity

      public static Optional<SoundEvent> getSoundForCurrentActivity(Piglin body)
    • getSoundForActivity

      private static SoundEvent getSoundForActivity(Piglin body, Activity activity)
    • isNearAvoidTarget

      private static boolean isNearAvoidTarget(Piglin body)
    • getVisibleAdultPiglins

      protected static List<AbstractPiglin> getVisibleAdultPiglins(Piglin body)
    • getAdultPiglins

      private static List<AbstractPiglin> getAdultPiglins(AbstractPiglin body)
    • isWearingSafeArmor

      public static boolean isWearingSafeArmor(LivingEntity livingEntity)
    • stopWalking

      private static void stopWalking(Piglin body)
    • babySometimesRideBabyHoglin

      private static BehaviorControl<LivingEntity> babySometimesRideBabyHoglin()
    • broadcastAngerTarget

      protected static void broadcastAngerTarget(ServerLevel level, AbstractPiglin body, LivingEntity target)
    • broadcastUniversalAnger

      protected static void broadcastUniversalAnger(ServerLevel level, AbstractPiglin body)
    • setAngerTarget

      protected static void setAngerTarget(ServerLevel level, AbstractPiglin body, LivingEntity target)
    • setAngerTargetToNearestTargetablePlayerIfFound

      private static void setAngerTargetToNearestTargetablePlayerIfFound(ServerLevel level, AbstractPiglin body, LivingEntity targetIfNoPlayerFound)
    • setAngerTargetIfCloserThanCurrent

      private static void setAngerTargetIfCloserThanCurrent(ServerLevel level, AbstractPiglin body, LivingEntity newTarget)
    • getAngerTarget

      private static Optional<LivingEntity> getAngerTarget(AbstractPiglin body)
    • getAvoidTarget

      public static Optional<LivingEntity> getAvoidTarget(Piglin body)
    • getNearestVisibleTargetablePlayer

      public static Optional<Player> getNearestVisibleTargetablePlayer(AbstractPiglin body)
    • broadcastRetreat

      private static void broadcastRetreat(Piglin body, LivingEntity target)
    • retreatFromNearestTarget

      private static void retreatFromNearestTarget(Piglin body, LivingEntity newAvoidTarget)
    • wantsToStopFleeing

      private static boolean wantsToStopFleeing(Piglin body)
    • piglinsEqualOrOutnumberHoglins

      private static boolean piglinsEqualOrOutnumberHoglins(Piglin body)
    • hoglinsOutnumberPiglins

      private static boolean hoglinsOutnumberPiglins(Piglin body)
    • setAvoidTargetAndDontHuntForAWhile

      private static void setAvoidTargetAndDontHuntForAWhile(Piglin body, LivingEntity target)
    • dontKillAnyMoreHoglinsForAWhile

      protected static void dontKillAnyMoreHoglinsForAWhile(AbstractPiglin body)
    • eat

      private static void eat(Piglin body)
    • getRandomNearbyPos

      private static Vec3 getRandomNearbyPos(Piglin body)
    • hasEatenRecently

      private static boolean hasEatenRecently(Piglin body)
    • isIdle

      protected static boolean isIdle(AbstractPiglin body)
    • hasCrossbow

      private static boolean hasCrossbow(LivingEntity body)
    • admireGoldItem

      private static void admireGoldItem(LivingEntity body)
    • isAdmiringItem

      private static boolean isAdmiringItem(Piglin body)
    • isBarterCurrency

      private static boolean isBarterCurrency(ItemStack itemStack)
    • isFood

      private static boolean isFood(ItemStack itemStack)
    • isNearRepellent

      private static boolean isNearRepellent(Piglin body)
    • seesPlayerHoldingLovedItem

      private static boolean seesPlayerHoldingLovedItem(LivingEntity body)
    • doesntSeeAnyPlayerHoldingLovedItem

      private static boolean doesntSeeAnyPlayerHoldingLovedItem(LivingEntity body)
    • isPlayerHoldingLovedItem

      public static boolean isPlayerHoldingLovedItem(LivingEntity entity)
    • isAdmiringDisabled

      private static boolean isAdmiringDisabled(Piglin body)
    • wasHurtRecently

      private static boolean wasHurtRecently(LivingEntity body)
    • isHoldingItemInOffHand

      private static boolean isHoldingItemInOffHand(Piglin body)
    • isNotHoldingLovedItemInOffHand

      private static boolean isNotHoldingLovedItemInOffHand(Piglin body)
    • isZombified

      public static boolean isZombified(Entity entity)
    • findNearbyAdultPiglins

      public static List<AbstractPiglin> findNearbyAdultPiglins(Brain<?> brain)