@@ -36,8 +36,8 @@ public static boolean checkExecuteCommand(final String cmd) {
36
36
return false ;
37
37
}
38
38
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 );
41
41
final String str = String .join (" " , args );
42
42
final Matcher matcher = SELECTOR_PATTERN .matcher (str );
43
43
final long count = matcher .results ().count ();
@@ -79,6 +79,10 @@ public static String checkCommand(final CommandSender sender, final String comma
79
79
switch (commandName ) {
80
80
case "/minecraft:execute" , "/execute" -> {
81
81
if (arr .length >= 2 ) {
82
+ if (arr .length >= 3 && checkSelectors (arr , 2 ) != null ) {
83
+ return "cancel" ;
84
+ }
85
+
82
86
for (int i = 1 ; i < arr .length ; i ++) {
83
87
if ("summon" .equalsIgnoreCase (arr [i ])) {
84
88
return "cancel" ;
@@ -138,7 +142,7 @@ public static String checkCommand(final CommandSender sender, final String comma
138
142
case "/minecraft:ban" , "/ban" , "/minecraft:kick" , "/kick" ,
139
143
"/minecraft:tell" , "/tell" , "/minecraft:msg" , "/msg" ,
140
144
"/minecraft:w" , "/w" , "/minecraft:say" , "/say" -> {
141
- return checkSelectors (arr );
145
+ return checkSelectors (arr , 1 );
142
146
}
143
147
case "/minecraft:spreadplayers" , "/spreadplayers" -> {
144
148
if (arr .length == 7 && (arr [6 ].contains ("@e" ) || arr [6 ].contains ("@a" ))) {
0 commit comments