@@ -531,11 +531,48 @@ public boolean nextBoolean() {
531
531
public Player nextPlayer () {
532
532
String name = next ();
533
533
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
+ }
534
552
Player p = Bukkit .getPlayer (name );
535
553
if (p == null ) throw new BadCommandException ("internal.error.player_not_found" , name );
536
554
return p ;
537
555
}
538
556
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
+
539
576
public OfflinePlayer nextOfflinePlayer () {
540
577
String name = next ();
541
578
if (Strings .isNullOrEmpty (name )) throw new BadCommandException ("internal.error.no_more_player" );
0 commit comments