Skip to content

Commit 239be4f

Browse files
committed
add nextPlayerOrSender, expand original nextPlayer for uuid and selector
1 parent 86e1c71 commit 239be4f

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/main/java/cat/nyaa/nyaacore/CommandReceiver.java

+37
Original file line numberDiff line numberDiff line change
@@ -531,11 +531,48 @@ public boolean nextBoolean() {
531531
public Player nextPlayer() {
532532
String name = next();
533533
if (name == null) throw new BadCommandException("internal.error.no_more_player");
534+
if (name.startsWith("@")) {
535+
List<Entity> entities = Bukkit.selectEntities(sender, name);
536+
if (entities.size() != 1) {
537+
throw new BadCommandException("internal.error.no_more_player"); // TODO: more descriptive msg
538+
}
539+
Entity entity = entities.get(0);
540+
if (!(entity instanceof Player)) {
541+
throw new BadCommandException("internal.error.no_more_player"); // TODO: more descriptive msg
542+
}
543+
return (Player) entity;
544+
}
545+
try {
546+
UUID uuid = UUID.fromString(name);
547+
Player p = Bukkit.getPlayer(uuid);
548+
if (p == null) throw new BadCommandException("internal.error.player_not_found", name);
549+
return p;
550+
} catch (IllegalArgumentException ignored) {
551+
}
534552
Player p = Bukkit.getPlayer(name);
535553
if (p == null) throw new BadCommandException("internal.error.player_not_found", name);
536554
return p;
537555
}
538556

557+
public Player nextPlayerByName() {
558+
String name = next();
559+
if (name == null) throw new BadCommandException("internal.error.no_more_player");
560+
Player p = Bukkit.getPlayer(name);
561+
if (p == null) throw new BadCommandException("internal.error.player_not_found", name);
562+
return p;
563+
}
564+
565+
public Player nextPlayerOrSender() {
566+
try {
567+
return nextPlayer();
568+
} catch (BadCommandException e) {
569+
if (sender instanceof Player) {
570+
return (Player) sender;
571+
}
572+
throw e;
573+
}
574+
}
575+
539576
public OfflinePlayer nextOfflinePlayer() {
540577
String name = next();
541578
if (Strings.isNullOrEmpty(name)) throw new BadCommandException("internal.error.no_more_player");

0 commit comments

Comments
 (0)