20
20
import static com .mojang .brigadier .CommandDispatcher .ARGUMENT_SEPARATOR ;
21
21
import static net .pistonmaster .soulfire .brigadier .BrigadierHelper .argument ;
22
22
import static net .pistonmaster .soulfire .brigadier .BrigadierHelper .help ;
23
+ import static net .pistonmaster .soulfire .brigadier .BrigadierHelper .helpRedirect ;
23
24
import static net .pistonmaster .soulfire .brigadier .BrigadierHelper .literal ;
24
25
import static net .pistonmaster .soulfire .brigadier .BrigadierHelper .privateCommand ;
25
26
45
46
import java .nio .file .StandardOpenOption ;
46
47
import java .time .Instant ;
47
48
import java .util .ArrayList ;
49
+ import java .util .Arrays ;
48
50
import java .util .Collections ;
49
51
import java .util .List ;
50
52
import java .util .Map ;
58
60
import lombok .extern .slf4j .Slf4j ;
59
61
import net .pistonmaster .soulfire .brigadier .CommandHelpWrapper ;
60
62
import net .pistonmaster .soulfire .brigadier .ConsoleSubject ;
63
+ import net .pistonmaster .soulfire .brigadier .RedirectHelpWrapper ;
61
64
import net .pistonmaster .soulfire .server .api .SoulFireAPI ;
62
65
import net .pistonmaster .soulfire .server .api .event .EventUtil ;
63
66
import net .pistonmaster .soulfire .server .api .event .bot .BotPreTickEvent ;
@@ -102,7 +105,7 @@ public void postConstruct() {
102
105
for (var command : getAllUsage (dispatcher .getRoot (), c .getSource (), false )) {
103
106
c .getSource ()
104
107
.sendMessage (
105
- String .format ("%s: %s" , command .command (), command .help ()));
108
+ String .format ("%s -> %s" , command .command (), command .help ()));
106
109
}
107
110
108
111
return Command .SINGLE_SUCCESS ;
@@ -537,7 +540,8 @@ public void postConstruct() {
537
540
help (
538
541
"Attempts to crash the server with a WorldEdit calculation" ,
539
542
c -> {
540
- log .info ("Attempting to crash the server with a WorldEdit calculation" );
543
+ log .info (
544
+ "Attempting to crash the server with a WorldEdit calculation" );
541
545
542
546
return forEveryBot (
543
547
c ,
@@ -678,7 +682,7 @@ public void postConstruct() {
678
682
literal ("chest" )
679
683
.executes (
680
684
help (
681
- "Attempts to crash the server with a chest" ,
685
+ "Attempts to crash the server with a chest. " ,
682
686
c -> {
683
687
log .info ("Attempting to crash the server with a chest" );
684
688
@@ -694,28 +698,34 @@ public void postConstruct() {
694
698
dispatcher .register (
695
699
literal ("bot" )
696
700
.then (
697
- argument ("bot_name " , StringArgumentType .string ())
698
- .redirect (
701
+ argument ("bot_names " , StringArgumentType .string ())
702
+ .forward (
699
703
dispatcher .getRoot (),
700
- c -> {
701
- c .getSource ()
702
- .extraData
703
- .put ("bot_name" , StringArgumentType .getString (c , "bot_name" ));
704
- return c .getSource ();
705
- })));
704
+ helpRedirect (
705
+ "Instead of running a command for all bots, run it for a specific list of bots. Use a comma to separate the names" ,
706
+ c -> {
707
+ c .getSource ()
708
+ .extraData
709
+ .put ("bot_names" , StringArgumentType .getString (c , "bot_names" ));
710
+ return Collections .singleton (c .getSource ());
711
+ }),
712
+ false )));
706
713
707
714
dispatcher .register (
708
715
literal ("attack" )
709
716
.then (
710
- argument ("attack_id " , IntegerArgumentType . integer ( 0 ))
711
- .redirect (
717
+ argument ("attack_ids " , StringArgumentType . string ( ))
718
+ .forward (
712
719
dispatcher .getRoot (),
713
- c -> {
714
- c .getSource ()
715
- .extraData
716
- .put ("attack_id" , IntegerArgumentType .getInteger (c , "attack_id" ));
717
- return c .getSource ();
718
- })));
720
+ helpRedirect (
721
+ "Instead of running a command for all attacks, run it for a specific list of attacks. Use a comma to separate the ids" ,
722
+ c -> {
723
+ c .getSource ()
724
+ .extraData
725
+ .put ("attack_ids" , StringArgumentType .getString (c , "attack_ids" ));
726
+ return Collections .singleton (c .getSource ());
727
+ }),
728
+ false )));
719
729
}
720
730
721
731
private int forEveryAttack (
@@ -727,8 +737,10 @@ private int forEveryAttack(
727
737
728
738
var resultCode = Command .SINGLE_SUCCESS ;
729
739
for (var attackManager : soulFireServer .attacks ().values ()) {
730
- if (context .getSource ().extraData .containsKey ("attack_id" )
731
- && context .getSource ().extraData .get ("attack_id" ).equals (attackManager .id ())) {
740
+ if (context .getSource ().extraData .containsKey ("attack_ids" )
741
+ && Arrays .stream (context .getSource ().extraData .get ("attack_ids" ).split ("," ))
742
+ .mapToInt (Integer ::parseInt )
743
+ .noneMatch (i -> i == attackManager .id ())) {
732
744
continue ;
733
745
}
734
746
@@ -763,11 +775,9 @@ private int forEveryBot(
763
775
attackManager -> {
764
776
var resultCode = Command .SINGLE_SUCCESS ;
765
777
for (var bot : attackManager .botConnections ()) {
766
- if (context .getSource ().extraData .containsKey ("bot_name" )
767
- && !bot .meta ()
768
- .minecraftAccount ()
769
- .username ()
770
- .equals (context .getSource ().extraData .get ("bot_name" ))) {
778
+ if (context .getSource ().extraData .containsKey ("bot_names" )
779
+ && Arrays .stream (context .getSource ().extraData .get ("bot_names" ).split ("," ))
780
+ .noneMatch (s -> s .equals (bot .meta ().minecraftAccount ().username ()))) {
771
781
continue ;
772
782
}
773
783
@@ -928,26 +938,26 @@ private void getAllUsage(
928
938
}
929
939
930
940
if (node .getCommand () != null ) {
931
- if ( node .getCommand () instanceof CommandHelpWrapper helpWrapper ) {
941
+ var helpWrapper = ( CommandHelpWrapper ) node .getCommand ();
932
942
if (!helpWrapper .privateCommand ()) {
933
943
result .add (new HelpData (prefix , helpWrapper .help ()));
934
944
}
935
- } else {
936
- result .add (new HelpData (prefix , "N/A" ));
937
- }
938
945
}
939
946
940
947
if (node .getRedirect () != null ) {
941
- final var redirect =
942
- node .getRedirect () == dispatcher .getRoot ()
943
- ? "..."
944
- : "-> " + node .getRedirect ().getUsageText ();
945
- result .add (
946
- new HelpData (
947
- prefix .isEmpty ()
948
- ? node .getUsageText () + ARGUMENT_SEPARATOR + redirect
949
- : prefix + ARGUMENT_SEPARATOR + redirect ,
950
- "N/A" ));
948
+ var redirectHelpWrapper = (RedirectHelpWrapper ) node .getRedirectModifier ();
949
+ if (!redirectHelpWrapper .privateCommand ()) {
950
+ final var redirect =
951
+ node .getRedirect () == dispatcher .getRoot ()
952
+ ? "..."
953
+ : "-> " + node .getRedirect ().getUsageText ();
954
+ result .add (
955
+ new HelpData (
956
+ prefix .isEmpty ()
957
+ ? node .getUsageText () + ARGUMENT_SEPARATOR + redirect
958
+ : prefix + ARGUMENT_SEPARATOR + redirect ,
959
+ redirectHelpWrapper .help ()));
960
+ }
951
961
} else if (!node .getChildren ().isEmpty ()) {
952
962
for (final var child : node .getChildren ()) {
953
963
getAllUsage (
0 commit comments