Skip to content

Commit 531c27b

Browse files
Fix for execute crash (#368)
1 parent 445d230 commit 531c27b

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/main/java/pw/kaboom/extras/modules/server/ServerCommand.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ public static boolean checkExecuteCommand(final String cmd) {
3636
return false;
3737
}
3838

39-
private static String checkSelectors(final String[] arr) {
40-
final String[] args = Arrays.copyOfRange(arr, 1, arr.length);
39+
private static String checkSelectors(final String[] arr, final int offset) {
40+
final String[] args = Arrays.copyOfRange(arr, offset, arr.length);
4141
final String str = String.join(" ", args);
4242
final Matcher matcher = SELECTOR_PATTERN.matcher(str);
4343
final long count = matcher.results().count();
@@ -79,6 +79,10 @@ public static String checkCommand(final CommandSender sender, final String comma
7979
switch (commandName) {
8080
case "/minecraft:execute", "/execute" -> {
8181
if (arr.length >= 2) {
82+
if (arr.length >= 3 && checkSelectors(arr, 2) != null) {
83+
return "cancel";
84+
}
85+
8286
for (int i = 1; i < arr.length; i++) {
8387
if ("summon".equalsIgnoreCase(arr[i])) {
8488
return "cancel";
@@ -138,7 +142,7 @@ public static String checkCommand(final CommandSender sender, final String comma
138142
case "/minecraft:ban", "/ban", "/minecraft:kick", "/kick",
139143
"/minecraft:tell", "/tell", "/minecraft:msg", "/msg",
140144
"/minecraft:w", "/w", "/minecraft:say", "/say" -> {
141-
return checkSelectors(arr);
145+
return checkSelectors(arr, 1);
142146
}
143147
case "/minecraft:spreadplayers", "/spreadplayers" -> {
144148
if (arr.length == 7 && (arr[6].contains("@e") || arr[6].contains("@a"))) {

0 commit comments

Comments
 (0)