package com.publicuhc.scatter;

import com.publicuhc.scatter.exceptions.ScatterLocationException;
import com.publicuhc.scatter.logic.ScatterLogic;
import com.publicuhc.scatter.zones.DeadZone;
import com.publicuhc.scatter.zones.DeadZoneBuilder;
import org.bukkit.Location;

import java.util.List;

public interface Scatterer {

    /**
     * Attempt to find safe locations
     *
     * @return list of locations outside of provided deadzones and outside of zones created by the builder
     * @throws ScatterLocationException if a location wasn't able to be fetched
     */
    List<Location> getScatterLocations(int amount) throws ScatterLocationException;

    void setLogic(ScatterLogic logic);

    ScatterLogic getLogic();

    void setDeadZoneBuilder(DeadZoneBuilder builder);

    DeadZoneBuilder getDeadZoneBuilder();

    List<DeadZone> getBaseDeadZones();

    void setBaseDeadZones(List<DeadZone> zones);

    void addBaseDeadZone(DeadZone zone);
}

@@ -264,16 +264,49 @@
 ocation;
+%0Aimport org.bukkit.entity.Player;
 %0A%0Aimport
@@ -694,300 +694,1091 @@
     
-void setLogic(ScatterLogic logic);%0A%0A    ScatterLogic getLogic();%0A%0A    void setDeadZoneBuilder(DeadZoneBuilder builder);%0A%0A    DeadZoneBuilder getDeadZoneBuilder();%0A%0A    List%3CDeadZone%3E getBaseDeadZones();%0A%0A    void setBaseDeadZones(List%3CDeadZone%3E zones);%0A%0A    void addBaseDeadZone(DeadZone zone
+/**%0A     * Scatter the players provided.%0A     * %3Cp%3ETeleports players after fetching all the valid locations%3C/p%3E%0A     *%0A     * @param players the players to scatter%0A     * @throws ScatterLocationException%0A     */%0A    void scatterPlayers(List%3CPlayer%3E players) throws ScatterLocationException;%0A%0A    void setLogic(ScatterLogic logic);%0A%0A    ScatterLogic getLogic();%0A%0A    void setDeadZoneBuilder(DeadZoneBuilder builder);%0A%0A    DeadZoneBuilder getDeadZoneBuilder();%0A%0A    List%3CDeadZone%3E getBaseDeadZones();%0A%0A    void setBaseDeadZones(List%3CDeadZone%3E zones);%0A%0A    void addBaseDeadZone(DeadZone zone);%0A%0A    void clearBaseDeadZones();%0A%0A    /**%0A     * Adds a base deadzone for every player provided using the DeadZoneBuilder%0A     * @param players the player to create deadzones for%0A     */%0A    void addDeadZonesForPlayers(List%3CPlayer%3E players);%0A%0A    /**%0A     * Adds a base deadzone for every player online that isn't in the list provided using the DeadZoneBuilder%0A     * @param players the players to not create a deadzone for%0A     */%0A    void addDeadZonesForPlayersNotInList(List%3CPlayer%3E players
 );%0A%7D

add a way to clear base deadzones + add a base deadzone from a list of players