1212import net .minestom .server .instance .Instance ;
1313import net .swofty .commons .bedwars .BedwarsGameType ;
1414import net .swofty .commons .bedwars .map .BedWarsMapsConfig ;
15+ import net .swofty .commons .bedwars .map .BedWarsMapsConfig .GeneratorSpeed ;
1516import net .swofty .commons .bedwars .map .BedWarsMapsConfig .PitchYawPosition ;
1617import net .swofty .commons .bedwars .map .BedWarsMapsConfig .Position ;
1718import net .swofty .commons .bedwars .map .BedWarsMapsConfig .TeamKey ;
@@ -598,17 +599,43 @@ private void registerMapInfoCommand(MinestomCommand command) {
598599 }
599600
600601 private void registerGeneratorSettingsCommand (MinestomCommand command ) {
602+ // Speed setting command
603+ var speedArg = ArgumentType .String ("speed" );
604+ speedArg .setSuggestionCallback ((sender , ctx , suggestion ) -> {
605+ suggestion .addEntry (new SuggestionEntry ("SLOW" ));
606+ suggestion .addEntry (new SuggestionEntry ("MEDIUM" ));
607+ suggestion .addEntry (new SuggestionEntry ("FAST" ));
608+ suggestion .addEntry (new SuggestionEntry ("SUPER_FAST" ));
609+ });
610+
611+ command .addSyntax ((sender , context ) -> {
612+ if (!(sender instanceof Player player )) return ;
613+ if (!permissionCheck (sender )) return ;
614+
615+ String speedStr = context .get (speedArg );
616+ AutoSetupSession session = AutoSetupSession .getOrCreate (player .getUuid (), player .getInstance ());
617+
618+ try {
619+ GeneratorSpeed speed = GeneratorSpeed .valueOf (speedStr .toUpperCase ());
620+ session .setGeneratorSpeed (speed );
621+ player .sendMessage (Component .text ("§aSet generator speed to " + speed .name () +
622+ " (" + speed .getIronAmount () + " iron/" + speed .getIronDelaySeconds () + "s, " +
623+ speed .getGoldAmount () + " gold/" + speed .getGoldDelaySeconds () + "s)" ));
624+ } catch (IllegalArgumentException e ) {
625+ player .sendMessage (Component .text ("§cInvalid speed: " + speedStr ));
626+ }
627+
628+ }, ArgumentType .Literal ("generator" ), ArgumentType .Literal ("speed" ), speedArg );
629+
630+ // Diamond/Emerald settings (unchanged)
601631 var genTypeArg = ArgumentType .String ("gentype" );
602632 genTypeArg .setSuggestionCallback ((sender , ctx , suggestion ) -> {
603- suggestion .addEntry (new SuggestionEntry ("iron" ));
604- suggestion .addEntry (new SuggestionEntry ("gold" ));
605633 suggestion .addEntry (new SuggestionEntry ("diamond" ));
606634 suggestion .addEntry (new SuggestionEntry ("emerald" ));
607635 });
608636
609637 var settingArg = ArgumentType .String ("setting" );
610638 settingArg .setSuggestionCallback ((sender , ctx , suggestion ) -> {
611- suggestion .addEntry (new SuggestionEntry ("delay" ));
612639 suggestion .addEntry (new SuggestionEntry ("amount" ));
613640 suggestion .addEntry (new SuggestionEntry ("max" ));
614641 });
@@ -626,14 +653,6 @@ private void registerGeneratorSettingsCommand(MinestomCommand command) {
626653 AutoSetupSession session = AutoSetupSession .getOrCreate (player .getUuid (), player .getInstance ());
627654
628655 switch (genType .toLowerCase ()) {
629- case "iron" -> {
630- if (setting .equals ("delay" )) session .setIronDelay (value );
631- else if (setting .equals ("amount" )) session .setIronAmount (value );
632- }
633- case "gold" -> {
634- if (setting .equals ("delay" )) session .setGoldDelay (value );
635- else if (setting .equals ("amount" )) session .setGoldAmount (value );
636- }
637656 case "diamond" -> {
638657 if (setting .equals ("amount" )) session .setDiamondAmount (value );
639658 else if (setting .equals ("max" )) session .setDiamondMax (value );
0 commit comments