Package org.bukkit

Class Bukkit


  • public final class Bukkit
    extends Object
    Represents the Bukkit core, for version and Server singleton handling
    • Method Detail

      • getServer

        @NotNull
        public static Server getServer()
        Gets the current Server singleton
        Returns:
        Server instance being ran
      • setServer

        public static void setServer​(@NotNull
                                     Server server)
        Attempts to set the Server singleton.

        This cannot be done if the Server is already set.

        Parameters:
        server - Server instance
      • getName

        @NotNull
        public static String getName()
        Gets the name of this server implementation.
        Returns:
        name of this server implementation
      • getVersion

        @NotNull
        public static String getVersion()
        Gets the version string of this server implementation.
        Returns:
        version of this server implementation
      • getBukkitVersion

        @NotNull
        public static String getBukkitVersion()
        Gets the Bukkit version that this server is running.
        Returns:
        version of Bukkit
      • getOnlinePlayers

        @NotNull
        public static Collection<? extends Player> getOnlinePlayers()
        Gets a view of all currently logged in players. This view is a reused object, making some operations like Collection.size() zero-allocation.

        The collection is a view backed by the internal representation, such that, changes to the internal state of the server will be reflected immediately. However, the reuse of the returned collection (identity) is not strictly guaranteed for future or all implementations. Casting the collection, or relying on interface implementations (like Serializable or List), is deprecated.

        Iteration behavior is undefined outside of self-contained main-thread uses. Normal and immediate iterator use without consequences that affect the collection are fully supported. The effects following (non-exhaustive) teleportation, death, and kicking are undefined. Any use of this collection from asynchronous threads is unsafe.

        For safe consequential iteration or mimicking the old array behavior, using Collection.toArray(Object[]) is recommended. For making snapshots, ImmutableList.copyOf(Collection) is recommended.

        Returns:
        a view of currently online players.
      • getMaxPlayers

        public static int getMaxPlayers()
        Get the maximum amount of players which can login to this server.
        Returns:
        the amount of players this server allows
      • getPort

        public static int getPort()
        Get the game port that the server runs on.
        Returns:
        the port number of this server
      • getViewDistance

        public static int getViewDistance()
        Get the view distance from this server.
        Returns:
        the view distance from this server.
      • getIp

        @NotNull
        public static String getIp()
        Get the IP that this server is bound to, or empty string if not specified.
        Returns:
        the IP string that this server is bound to, otherwise empty string
      • getWorldType

        @NotNull
        public static String getWorldType()
        Get world type (level-type setting) for default world.
        Returns:
        the value of level-type (e.g. DEFAULT, FLAT, DEFAULT_1_1)
      • getGenerateStructures

        public static boolean getGenerateStructures()
        Get generate-structures setting.
        Returns:
        true if structure generation is enabled, false otherwise
      • getAllowEnd

        public static boolean getAllowEnd()
        Gets whether this server allows the End or not.
        Returns:
        whether this server allows the End or not
      • getAllowNether

        public static boolean getAllowNether()
        Gets whether this server allows the Nether or not.
        Returns:
        whether this server allows the Nether or not
      • hasWhitelist

        public static boolean hasWhitelist()
        Gets whether this server has a whitelist or not.
        Returns:
        whether this server has a whitelist or not
      • setWhitelist

        public static void setWhitelist​(boolean value)
        Sets if the server is whitelisted.
        Parameters:
        value - true for whitelist on, false for off
      • getWhitelistedPlayers

        @NotNull
        public static Set<OfflinePlayer> getWhitelistedPlayers()
        Gets a list of whitelisted players.
        Returns:
        a set containing all whitelisted players
      • reloadWhitelist

        public static void reloadWhitelist()
        Reloads the whitelist from disk.
      • getUpdateFolder

        @NotNull
        public static String getUpdateFolder()
        Gets the name of the update folder. The update folder is used to safely update plugins at the right moment on a plugin load.

        The update folder name is relative to the plugins folder.

        Returns:
        the name of the update folder
      • getUpdateFolderFile

        @NotNull
        public static File getUpdateFolderFile()
        Gets the update folder. The update folder is used to safely update plugins at the right moment on a plugin load.
        Returns:
        the update folder
      • getConnectionThrottle

        public static long getConnectionThrottle()
        Gets the value of the connection throttle setting.
        Returns:
        the value of the connection throttle setting
      • getTicksPerAnimalSpawns

        public static int getTicksPerAnimalSpawns()
        Gets default ticks per animal spawns value.

        Example Usage:

        • A value of 1 will mean the server will attempt to spawn monsters every tick.
        • A value of 400 will mean the server will attempt to spawn monsters every 400th tick.
        • A value below 0 will be reset back to Minecraft's default.

        Note: If set to 0, animal spawning will be disabled. We recommend using spawn-animals to control this instead.

        Minecraft default: 400.

        Returns:
        the default ticks per animal spawns value
      • getTicksPerMonsterSpawns

        public static int getTicksPerMonsterSpawns()
        Gets the default ticks per monster spawns value.

        Example Usage:

        • A value of 1 will mean the server will attempt to spawn monsters every tick.
        • A value of 400 will mean the server will attempt to spawn monsters every 400th tick.
        • A value below 0 will be reset back to Minecraft's default.

        Note: If set to 0, monsters spawning will be disabled. We recommend using spawn-monsters to control this instead.

        Minecraft default: 1.

        Returns:
        the default ticks per monsters spawn value
      • getPlayer

        @Nullable
        public static Player getPlayer​(@NotNull
                                       String name)
        Gets a player object by the given username.

        This method may not return objects for offline players.

        Parameters:
        name - the name to look up
        Returns:
        a player if one was found, null otherwise
      • getPlayerExact

        @Nullable
        public static Player getPlayerExact​(@NotNull
                                            String name)
        Gets the player with the exact given name, case insensitive.
        Parameters:
        name - Exact name of the player to retrieve
        Returns:
        a player object if one was found, null otherwise
      • matchPlayer

        @NotNull
        public static List<Player> matchPlayer​(@NotNull
                                               String name)
        Attempts to match any players with the given name, and returns a list of all possibly matches.

        This list is not sorted in any particular order. If an exact match is found, the returned list will only contain a single result.

        Parameters:
        name - the (partial) name to match
        Returns:
        list of all possible players
      • getPlayer

        @Nullable
        public static Player getPlayer​(@NotNull
                                       UUID id)
        Gets the player with the given UUID.
        Parameters:
        id - UUID of the player to retrieve
        Returns:
        a player object if one was found, null otherwise
      • getPluginManager

        @NotNull
        public static PluginManager getPluginManager()
        Gets the plugin manager for interfacing with plugins.
        Returns:
        a plugin manager for this Server instance
      • getScheduler

        @NotNull
        public static BukkitScheduler getScheduler()
        Gets the scheduler for managing scheduled events.
        Returns:
        a scheduling service for this server
      • getServicesManager

        @NotNull
        public static ServicesManager getServicesManager()
        Gets a services manager.
        Returns:
        s services manager
      • getWorlds

        @NotNull
        public static List<World> getWorlds()
        Gets a list of all worlds on this server.
        Returns:
        a list of worlds
      • createWorld

        @Nullable
        public static World createWorld​(@NotNull
                                        WorldCreator creator)
        Creates or loads a world with the given name using the specified options.

        If the world is already loaded, it will just return the equivalent of getWorld(creator.name()).

        Parameters:
        creator - the options to use when creating the world
        Returns:
        newly created or loaded world
      • unloadWorld

        public static boolean unloadWorld​(@NotNull
                                          String name,
                                          boolean save)
        Unloads a world with the given name.
        Parameters:
        name - Name of the world to unload
        save - whether to save the chunks before unloading
        Returns:
        true if successful, false otherwise
      • unloadWorld

        public static boolean unloadWorld​(@NotNull
                                          World world,
                                          boolean save)
        Unloads the given world.
        Parameters:
        world - the world to unload
        save - whether to save the chunks before unloading
        Returns:
        true if successful, false otherwise
      • getWorld

        @Nullable
        public static World getWorld​(@NotNull
                                     String name)
        Gets the world with the given name.
        Parameters:
        name - the name of the world to retrieve
        Returns:
        a world with the given name, or null if none exists
      • getWorld

        @Nullable
        public static World getWorld​(@NotNull
                                     UUID uid)
        Gets the world from the given Unique ID.
        Parameters:
        uid - a unique-id of the world to retrieve
        Returns:
        a world with the given Unique ID, or null if none exists
      • getMap

        @Deprecated
        @Nullable
        public static MapView getMap​(int id)
        Deprecated.
        Magic value
        Gets the map from the given item ID.
        Parameters:
        id - the id of the map to get
        Returns:
        a map view if it exists, or null otherwise
      • createMap

        @NotNull
        public static MapView createMap​(@NotNull
                                        World world)
        Create a new map with an automatically assigned ID.
        Parameters:
        world - the world the map will belong to
        Returns:
        a newly created map view
      • createExplorerMap

        @NotNull
        public static ItemStack createExplorerMap​(@NotNull
                                                  World world,
                                                  @NotNull
                                                  Location location,
                                                  @NotNull
                                                  StructureType structureType,
                                                  int radius,
                                                  boolean findUnexplored)
        Create a new explorer map targeting the closest nearby structure of a given StructureType.
        This method uses implementation default values for radius and findUnexplored (usually 100, true).
        Parameters:
        world - the world the map will belong to
        location - the origin location to find the nearest structure
        structureType - the type of structure to find
        radius - radius to search, see World#locateNearestStructure for more information
        findUnexplored - whether to find unexplored structures
        Returns:
        the newly created item stack
        See Also:
        World.locateNearestStructure(org.bukkit.Location, org.bukkit.StructureType, int, boolean)
      • reload

        public static void reload()
        Reloads the server, refreshing settings and plugin information.
      • reloadData

        public static void reloadData()
        Reload only the Minecraft data for the server. This includes custom advancements and loot tables.
      • getLogger

        @NotNull
        public static Logger getLogger()
        Returns the primary logger associated with this server instance.
        Returns:
        Logger associated with this server
      • getPluginCommand

        @Nullable
        public static PluginCommand getPluginCommand​(@NotNull
                                                     String name)
        Gets a PluginCommand with the given name or alias.
        Parameters:
        name - the name of the command to retrieve
        Returns:
        a plugin command if found, null otherwise
      • savePlayers

        public static void savePlayers()
        Writes loaded players to disk.
      • dispatchCommand

        public static boolean dispatchCommand​(@NotNull
                                              CommandSender sender,
                                              @NotNull
                                              String commandLine)
                                       throws CommandException
        Dispatches a command on this server, and executes it if found.
        Parameters:
        sender - the apparent sender of the command
        commandLine - the command + arguments. Example: test abc 123
        Returns:
        returns false if no target is found
        Throws:
        CommandException - thrown when the executor for the given command fails with an unhandled exception
      • addRecipe

        @Contract("null -> false")
        public static boolean addRecipe​(@Nullable
                                        Recipe recipe)
        Adds a recipe to the crafting manager.
        Parameters:
        recipe - the recipe to add
        Returns:
        true if the recipe was added, false if it wasn't for some reason
      • getRecipesFor

        @NotNull
        public static List<Recipe> getRecipesFor​(@NotNull
                                                 ItemStack result)
        Get a list of all recipes for a given item. The stack size is ignored in comparisons. If the durability is -1, it will match any data value.
        Parameters:
        result - the item to match against recipe results
        Returns:
        a list of recipes with the given result
      • recipeIterator

        @NotNull
        public static Iterator<Recipe> recipeIterator()
        Get an iterator through the list of crafting recipes.
        Returns:
        an iterator
      • clearRecipes

        public static void clearRecipes()
        Clears the list of crafting recipes.
      • resetRecipes

        public static void resetRecipes()
        Resets the list of crafting recipes to the default.
      • getCommandAliases

        @NotNull
        public static Map<String,​String[]> getCommandAliases()
        Gets a list of command aliases defined in the server properties.
        Returns:
        a map of aliases to command names
      • getSpawnRadius

        public static int getSpawnRadius()
        Gets the radius, in blocks, around each worlds spawn point to protect.
        Returns:
        spawn radius, or 0 if none
      • setSpawnRadius

        public static void setSpawnRadius​(int value)
        Sets the radius, in blocks, around each worlds spawn point to protect.
        Parameters:
        value - new spawn radius, or 0 if none
      • getOnlineMode

        public static boolean getOnlineMode()
        Gets whether the Server is in online mode or not.
        Returns:
        true if the server authenticates clients, false otherwise
      • getAllowFlight

        public static boolean getAllowFlight()
        Gets whether this server allows flying or not.
        Returns:
        true if the server allows flight, false otherwise
      • isHardcore

        public static boolean isHardcore()
        Gets whether the server is in hardcore mode or not.
        Returns:
        true if the server mode is hardcore, false otherwise
      • shutdown

        public static void shutdown()
        Shutdowns the server, stopping everything.
      • broadcast

        public static int broadcast​(@NotNull
                                    String message,
                                    @NotNull
                                    String permission)
        Broadcasts the specified message to every user with the given permission name.
        Parameters:
        message - message to broadcast
        permission - the required permission permissibles must have to receive the broadcast
        Returns:
        number of message recipients
      • getOfflinePlayer

        @Deprecated
        @NotNull
        public static OfflinePlayer getOfflinePlayer​(@NotNull
                                                     String name)
        Deprecated.
        Persistent storage of users should be by UUID as names are no longer unique past a single session.
        Gets the player by the given name, regardless if they are offline or online.

        This method may involve a blocking web request to get the UUID for the given name.

        This will return an object even if the player does not exist. To this method, all players will exist.

        Parameters:
        name - the name the player to retrieve
        Returns:
        an offline player
        See Also:
        getOfflinePlayer(java.util.UUID)
      • getOfflinePlayer

        @NotNull
        public static OfflinePlayer getOfflinePlayer​(@NotNull
                                                     UUID id)
        Gets the player by the given UUID, regardless if they are offline or online.

        This will return an object even if the player does not exist. To this method, all players will exist.

        Parameters:
        id - the UUID of the player to retrieve
        Returns:
        an offline player
      • getIPBans

        @NotNull
        public static Set<String> getIPBans()
        Gets a set containing all current IPs that are banned.
        Returns:
        a set containing banned IP addresses
      • banIP

        public static void banIP​(@NotNull
                                 String address)
        Bans the specified address from the server.
        Parameters:
        address - the IP address to ban
      • unbanIP

        public static void unbanIP​(@NotNull
                                   String address)
        Unbans the specified address from the server.
        Parameters:
        address - the IP address to unban
      • getBannedPlayers

        @NotNull
        public static Set<OfflinePlayer> getBannedPlayers()
        Gets a set containing all banned players.
        Returns:
        a set containing banned players
      • getBanList

        @NotNull
        public static BanList getBanList​(@NotNull
                                         BanList.Type type)
        Gets a ban list for the supplied type.

        Bans by name are no longer supported and this method will return null when trying to request them. The replacement is bans by UUID.

        Parameters:
        type - the type of list to fetch, cannot be null
        Returns:
        a ban list of the specified type
      • getOperators

        @NotNull
        public static Set<OfflinePlayer> getOperators()
        Gets a set containing all player operators.
        Returns:
        a set containing player operators
      • getDefaultGameMode

        @NotNull
        public static GameMode getDefaultGameMode()
        Gets the default GameMode for new players.
        Returns:
        the default game mode
      • setDefaultGameMode

        public static void setDefaultGameMode​(@NotNull
                                              GameMode mode)
        Sets the default GameMode for new players.
        Parameters:
        mode - the new game mode
      • getWorldContainer

        @NotNull
        public static File getWorldContainer()
        Gets the folder that contains all of the various Worlds.
        Returns:
        folder that contains all worlds
      • getOfflinePlayers

        @NotNull
        public static OfflinePlayer[] getOfflinePlayers()
        Gets every player that has ever played on this server.
        Returns:
        an array containing all previous players
      • getMessenger

        @NotNull
        public static Messenger getMessenger()
        Gets the Messenger responsible for this server.
        Returns:
        messenger responsible for this server
      • getHelpMap

        @NotNull
        public static HelpMap getHelpMap()
        Gets the HelpMap providing help topics for this server.
        Returns:
        a help map for this server
      • createInventory

        @NotNull
        public static Inventory createInventory​(@Nullable
                                                InventoryHolder owner,
                                                int size)
                                         throws IllegalArgumentException
        Creates an empty inventory of type InventoryType.CHEST with the specified size.
        Parameters:
        owner - the holder of the inventory, or null to indicate no holder
        size - a multiple of 9 as the size of inventory to create
        Returns:
        a new inventory
        Throws:
        IllegalArgumentException - if the size is not a multiple of 9
      • createInventory

        @NotNull
        public static Inventory createInventory​(@Nullable
                                                InventoryHolder owner,
                                                int size,
                                                @NotNull
                                                String title)
                                         throws IllegalArgumentException
        Creates an empty inventory of type InventoryType.CHEST with the specified size and title.
        Parameters:
        owner - the holder of the inventory, or null to indicate no holder
        size - a multiple of 9 as the size of inventory to create
        title - the title of the inventory, displayed when inventory is viewed
        Returns:
        a new inventory
        Throws:
        IllegalArgumentException - if the size is not a multiple of 9
      • createMerchant

        @NotNull
        public static Merchant createMerchant​(@Nullable
                                              String title)
        Creates an empty merchant.
        Parameters:
        title - the title of the corresponding merchant inventory, displayed when the merchant inventory is viewed
        Returns:
        a new merchant
      • getMonsterSpawnLimit

        public static int getMonsterSpawnLimit()
        Gets user-specified limit for number of monsters that can spawn in a chunk.
        Returns:
        the monster spawn limit
      • getAnimalSpawnLimit

        public static int getAnimalSpawnLimit()
        Gets user-specified limit for number of animals that can spawn in a chunk.
        Returns:
        the animal spawn limit
      • getWaterAnimalSpawnLimit

        public static int getWaterAnimalSpawnLimit()
        Gets user-specified limit for number of water animals that can spawn in a chunk.
        Returns:
        the water animal spawn limit
      • getAmbientSpawnLimit

        public static int getAmbientSpawnLimit()
        Gets user-specified limit for number of ambient mobs that can spawn in a chunk.
        Returns:
        the ambient spawn limit
      • isPrimaryThread

        public static boolean isPrimaryThread()
        Checks the current thread against the expected primary thread for the server.

        Note: this method should not be used to indicate the current synchronized state of the runtime. A current thread matching the main thread indicates that it is synchronized, but a mismatch does not preclude the same assumption.

        Returns:
        true if the current thread matches the expected primary thread, false otherwise
      • getMotd

        @NotNull
        public static String getMotd()
        Gets the message that is displayed on the server list.
        Returns:
        the servers MOTD
      • getShutdownMessage

        @Nullable
        public static String getShutdownMessage()
        Gets the default message that is displayed when the server is stopped.
        Returns:
        the shutdown message
      • getWarningState

        @NotNull
        public static Warning.WarningState getWarningState()
        Gets the current warning state for the server.
        Returns:
        the configured warning state
      • getItemFactory

        @NotNull
        public static ItemFactory getItemFactory()
        Gets the instance of the item factory (for ItemMeta).
        Returns:
        the item factory
        See Also:
        ItemFactory
      • getScoreboardManager

        @Nullable
        public static ScoreboardManager getScoreboardManager()
        Gets the instance of the scoreboard manager.

        This will only exist after the first world has loaded.

        Returns:
        the scoreboard manager or null if no worlds are loaded.
      • getServerIcon

        @Nullable
        public static CachedServerIcon getServerIcon()
        Gets an instance of the server's default server-icon.
        Returns:
        the default server-icon; null values may be used by the implementation to indicate no defined icon, but this behavior is not guaranteed
      • setIdleTimeout

        public static void setIdleTimeout​(int threshold)
        Set the idle kick timeout. Any players idle for the specified amount of time will be automatically kicked.

        A value of 0 will disable the idle kick timeout.

        Parameters:
        threshold - the idle timeout in minutes
      • getIdleTimeout

        public static int getIdleTimeout()
        Gets the idle kick timeout.
        Returns:
        the idle timeout in minutes
      • createBossBar

        @NotNull
        public static BossBar createBossBar​(@Nullable
                                            String title,
                                            @NotNull
                                            BarColor color,
                                            @NotNull
                                            BarStyle style,
                                            @NotNull
                                            BarFlag... flags)
        Creates a boss bar instance to display to players. The progress defaults to 1.0
        Parameters:
        title - the title of the boss bar
        color - the color of the boss bar
        style - the style of the boss bar
        flags - an optional list of flags to set on the boss bar
        Returns:
        the created boss bar
      • createBossBar

        @NotNull
        public static KeyedBossBar createBossBar​(@NotNull
                                                 NamespacedKey key,
                                                 @Nullable
                                                 String title,
                                                 @NotNull
                                                 BarColor color,
                                                 @NotNull
                                                 BarStyle style,
                                                 @NotNull
                                                 BarFlag... flags)
        Creates a boss bar instance to display to players. The progress defaults to 1.0.
        This instance is added to the persistent storage of the server and will be editable by commands and restored after restart.
        Parameters:
        key - the key of the boss bar that is used to access the boss bar
        title - the title of the boss bar
        color - the color of the boss bar
        style - the style of the boss bar
        flags - an optional list of flags to set on the boss bar
        Returns:
        the created boss bar
      • getEntity

        @Nullable
        public static Entity getEntity​(@NotNull
                                       UUID uuid)
        Gets an entity on the server by its UUID
        Parameters:
        uuid - the UUID of the entity
        Returns:
        the entity with the given UUID, or null if it isn't found
      • getAdvancement

        @Nullable
        public static Advancement getAdvancement​(@NotNull
                                                 NamespacedKey key)
        Get the advancement specified by this key.
        Parameters:
        key - unique advancement key
        Returns:
        advancement or null if not exists
      • advancementIterator

        @NotNull
        public static Iterator<Advancement> advancementIterator()
        Get an iterator through all advancements. Advancements cannot be removed from this iterator,
        Returns:
        an advancement iterator
      • createBlockData

        @NotNull
        public static BlockData createBlockData​(@NotNull
                                                Material material)
        Creates a new BlockData instance for the specified Material, with all properties initialized to unspecified defaults.
        Parameters:
        material - the material
        Returns:
        new data instance
      • createBlockData

        @NotNull
        public static BlockData createBlockData​(@NotNull
                                                Material material,
                                                @Nullable
                                                Consumer<BlockData> consumer)
        Creates a new BlockData instance for the specified Material, with all properties initialized to unspecified defaults.
        Parameters:
        material - the material
        consumer - consumer to run on new instance before returning
        Returns:
        new data instance
      • createBlockData

        @NotNull
        @Contract("null, null -> fail")
        public static BlockData createBlockData​(@Nullable
                                                Material material,
                                                @Nullable
                                                String data)
                                         throws IllegalArgumentException
        Creates a new BlockData instance for the specified Material, with all properties initialized to unspecified defaults, except for those provided in data.
        Parameters:
        material - the material
        data - data string
        Returns:
        new data instance
        Throws:
        IllegalArgumentException - if the specified data is not valid
      • getTag

        @Nullable
        public static <T extends KeyedTag<T> getTag​(@NotNull
                                                      String registry,
                                                      @NotNull
                                                      NamespacedKey tag,
                                                      @NotNull
                                                      Class<T> clazz)
        Gets a tag which has already been defined within the server. Plugins are suggested to use the concrete tags in Tag rather than this method which makes no guarantees about which tags are available, and may also be less performant due to lack of caching.
        Tags will be searched for in an implementation specific manner, but a path consisting of namespace/tags/registry/key is expected.
        Server implementations are allowed to handle only the registries indicated in Tag.
        Type Parameters:
        T - type of the tag
        Parameters:
        registry - the tag registry to look at
        tag - the name of the tag
        clazz - the class of the tag entries
        Returns:
        the tag or null
      • getTags

        @NotNull
        public static <T extends KeyedIterable<Tag<T>> getTags​(@NotNull
                                                                 String registry,
                                                                 @NotNull
                                                                 Class<T> clazz)
        Gets a all tags which have been defined within the server.
        Server implementations are allowed to handle only the registries indicated in Tag.
        No guarantees are made about the mutability of the returned iterator.
        Type Parameters:
        T - type of the tag
        Parameters:
        registry - the tag registry to look at
        clazz - the class of the tag entries
        Returns:
        all defined tags
      • getLootTable

        @Nullable
        public static LootTable getLootTable​(@NotNull
                                             NamespacedKey key)
        Gets the specified LootTable.
        Parameters:
        key - the name of the LootTable
        Returns:
        the LootTable, or null if no LootTable is found with that name
      • selectEntities

        @NotNull
        public static List<Entity> selectEntities​(@NotNull
                                                  CommandSender sender,
                                                  @NotNull
                                                  String selector)
                                           throws IllegalArgumentException
        Selects entities using the given Vanilla selector.
        No guarantees are made about the selector format, other than they match the Vanilla format for the active Minecraft version.
        Usually a selector will start with '@', unless selecting a Player in which case it may simply be the Player's name or UUID.
        Note that in Vanilla, elevated permissions are usually required to use '@' selectors, but this method should not check such permissions from the sender.
        Parameters:
        sender - the sender to execute as, must be provided
        selector - the selection string
        Returns:
        a list of the selected entities. The list will not be null, but no further guarantees are made.
        Throws:
        IllegalArgumentException - if the selector is malformed in any way or a parameter is null