From 33fd2ea254d8759dd7dd26c8acf027601be45292 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Thu, 31 Jan 2019 15:08:12 +1100 Subject: [PATCH] SPIGOT-4193: API for selecting entities by strings By: md_5 --- .../src/main/java/org/bukkit/Bukkit.java | 26 +++++++++++++++++++ .../src/main/java/org/bukkit/Server.java | 24 +++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/paper-api/src/main/java/org/bukkit/Bukkit.java b/paper-api/src/main/java/org/bukkit/Bukkit.java index df6930fb5b..557d97bb3d 100644 --- a/paper-api/src/main/java/org/bukkit/Bukkit.java +++ b/paper-api/src/main/java/org/bukkit/Bukkit.java @@ -1384,6 +1384,32 @@ public final class Bukkit { return server.getLootTable(key); } + /** + * 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. + * + * @param sender the sender to execute as, must be provided + * @param selector the selection string + * @return 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 + * @deprecated draft API + */ + @Deprecated + public static List selectEntities(CommandSender sender, String selector) throws IllegalArgumentException { + return server.selectEntities(sender, selector); + } + /** * @see UnsafeValues * @return the unsafe values instance diff --git a/paper-api/src/main/java/org/bukkit/Server.java b/paper-api/src/main/java/org/bukkit/Server.java index f94f2958f1..5fb5e4ff18 100644 --- a/paper-api/src/main/java/org/bukkit/Server.java +++ b/paper-api/src/main/java/org/bukkit/Server.java @@ -1153,6 +1153,30 @@ public interface Server extends PluginMessageRecipient { */ LootTable getLootTable(NamespacedKey key); + /** + * 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. + * + * @param sender the sender to execute as, must be provided + * @param selector the selection string + * @return 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 + * @deprecated draft API + */ + @Deprecated + List selectEntities(CommandSender sender, String selector) throws IllegalArgumentException; + /** * @see UnsafeValues * @return the unsafe values instance