package net.minecraft.world.entity.ai.behavior; import com.mojang.datafixers.util.Pair; import java.util.List; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.behavior.declarative.BehaviorBuilder; import net.minecraft.world.entity.ai.behavior.declarative.Trigger; public class TriggerGate { public static OneShot triggerOneShuffled(List, Integer>> triggers) { return triggerGate(triggers, GateBehavior.OrderPolicy.SHUFFLED, GateBehavior.RunningPolicy.RUN_ONE); } public static OneShot triggerGate( List, Integer>> triggers, GateBehavior.OrderPolicy orderPolicy, GateBehavior.RunningPolicy runningPolicy ) { ShufflingList> shufflingList = new ShufflingList<>(); triggers.forEach(pair -> shufflingList.add((Trigger)pair.getFirst(), (Integer)pair.getSecond())); return BehaviorBuilder.create(instance -> instance.point((serverLevel, livingEntity, l) -> { if (orderPolicy == GateBehavior.OrderPolicy.SHUFFLED) { shufflingList.shuffle(); } for (Trigger trigger : shufflingList) { if (trigger.trigger(serverLevel, (E)livingEntity, l) && runningPolicy == GateBehavior.RunningPolicy.RUN_ONE) { break; } } return true; })); } }