package com.hypixel.hytale.builtin.mounts; import com.hypixel.hytale.component.Component; import com.hypixel.hytale.component.ComponentType; import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.server.core.universe.world.storage.EntityStore; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import java.util.List; import javax.annotation.Nonnull; public class MountedByComponent implements Component { @Nonnull private final List> passengers = new ObjectArrayList(); public static ComponentType getComponentType() { return MountPlugin.getInstance().getMountedByComponentType(); } public void removeInvalid() { this.passengers.removeIf(v -> !v.isValid()); } @Nonnull public List> getPassengers() { this.removeInvalid(); return this.passengers; } public void addPassenger(Ref passenger) { this.passengers.add(passenger); } public void removePassenger(Ref ref) { this.passengers.remove(ref); } @Nonnull public MountedByComponent withPassenger(Ref passenger) { this.passengers.add(passenger); return this; } @Nonnull @Override public Component clone() { return new MountedByComponent(); } }