package net.minecraft.world.entity.monster.piglin; import java.util.Optional; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.behavior.BehaviorControl; import net.minecraft.world.entity.ai.behavior.declarative.BehaviorBuilder; import net.minecraft.world.entity.ai.memory.MemoryModuleType; import net.minecraft.world.entity.item.ItemEntity; public class StopAdmiringIfItemTooFarAway { public static BehaviorControl create(int maxDist) { return BehaviorBuilder.create( instance -> instance.group(instance.present(MemoryModuleType.ADMIRING_ITEM), instance.registered(MemoryModuleType.NEAREST_VISIBLE_WANTED_ITEM)) .apply(instance, (memoryAccessor, memoryAccessor2) -> (serverLevel, livingEntity, l) -> { if (!livingEntity.getOffhandItem().isEmpty()) { return false; } else { Optional optional = instance.tryGet(memoryAccessor2); if (optional.isPresent() && ((ItemEntity)optional.get()).closerThan(livingEntity, maxDist)) { return false; } else { memoryAccessor.erase(); return true; } } }) ); } }