Skip to content

Commit 41204cf

Browse files
committed
Handle illegal player selectors on 1.13+
1 parent 827543e commit 41204cf

File tree

2 files changed

+32
-28
lines changed

2 files changed

+32
-28
lines changed

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ subprojects {
88
apply plugin: 'maven'
99

1010
group = 'io.github.revxrsal'
11-
version = '2.2'
11+
version = '2.3'
1212

1313
sourceCompatibility = 1.8
1414
targetCompatibility = 1.8

bukkit/src/main/java/revxrsal/commands/bukkit/core/EntitySelectorResolver.java

+31-27
Original file line numberDiff line numberDiff line change
@@ -86,37 +86,41 @@ public enum EntitySelectorResolver implements ValueResolverFactory {
8686
}
8787

8888
private EntitySelector<Player> resolvePlayerSelector(ValueResolverContext context) {
89-
BukkitCommandActor bActor = context.actor();
90-
String value = context.pop().toLowerCase();
89+
String selector = context.pop().toLowerCase();
90+
try {
91+
BukkitCommandActor bActor = context.actor();
9192

92-
List<Player> coll;
93-
if (supportComplexSelectors) {
94-
coll = Bukkit.getServer().selectEntities(bActor.getSender(), value).stream()
95-
.filter(c -> c instanceof Player).map(Player.class::cast).collect(Collectors.toList());
96-
return new EntitySelectorImpl<>(coll);
97-
}
98-
coll = new ArrayList<>();
99-
Player[] players = Bukkit.getOnlinePlayers().toArray(new Player[0]);
100-
switch (value) {
101-
case "@r":
102-
coll.add(players[ThreadLocalRandom.current().nextInt(players.length)]);
103-
return new EntitySelectorImpl<>(coll);
104-
case "@a": {
105-
Collections.addAll(coll, players);
106-
return new EntitySelectorImpl<>(coll);
107-
}
108-
case "@s":
109-
case "@p": {
110-
coll.add(bActor.requirePlayer());
93+
List<Player> coll;
94+
if (supportComplexSelectors) {
95+
coll = Bukkit.getServer().selectEntities(bActor.getSender(), selector).stream()
96+
.filter(c -> c instanceof Player).map(Player.class::cast).collect(Collectors.toList());
11197
return new EntitySelectorImpl<>(coll);
11298
}
113-
default: {
114-
Player player = Bukkit.getPlayer(value);
115-
if (player == null)
116-
throw new InvalidPlayerException(context.parameter(), value);
117-
coll.add(player);
118-
return new EntitySelectorImpl<>(coll);
99+
coll = new ArrayList<>();
100+
Player[] players = Bukkit.getOnlinePlayers().toArray(new Player[0]);
101+
switch (selector) {
102+
case "@r":
103+
coll.add(players[ThreadLocalRandom.current().nextInt(players.length)]);
104+
return new EntitySelectorImpl<>(coll);
105+
case "@a": {
106+
Collections.addAll(coll, players);
107+
return new EntitySelectorImpl<>(coll);
108+
}
109+
case "@s":
110+
case "@p": {
111+
coll.add(bActor.requirePlayer());
112+
return new EntitySelectorImpl<>(coll);
113+
}
114+
default: {
115+
Player player = Bukkit.getPlayer(selector);
116+
if (player == null)
117+
throw new InvalidPlayerException(context.parameter(), selector);
118+
coll.add(player);
119+
return new EntitySelectorImpl<>(coll);
120+
}
119121
}
122+
} catch (IllegalArgumentException e) {
123+
throw new MalformedEntitySelectorException(context.actor(), selector, e.getCause().getMessage());
120124
}
121125
}
122126

0 commit comments

Comments
 (0)