@@ -29,32 +29,67 @@ class PrepareWorldCommand(private val plugin: ChallengePluginPlugin) : CommandEx
29
29
return true
30
30
}
31
31
32
- // Parse the count argument
32
+ // Parse arguments: /prepare [ count] [max]
33
33
var count = 1
34
+ var maxLimit: Int? = null
35
+
34
36
try {
35
37
count = args[0 ].toInt()
36
38
if (count <= 0 ) {
37
39
sender.sendMessage(" ${ChatColor .RED } Count must be a positive number." )
38
40
return true
39
41
}
42
+
43
+ // Check for 'max' parameter
44
+ if (args.size > 1 && args[1 ].lowercase() == " max" ) {
45
+ maxLimit = count
46
+ count = count - currentCount // Only generate what's needed to reach the limit
47
+
48
+ if (count <= 0 ) {
49
+ sender.sendMessage(" ${ChatColor .GREEN } Already have $currentCount worlds, which meets or exceeds the max limit of $maxLimit ." )
50
+ return true
51
+ }
52
+
53
+ sender.sendMessage(" ${ChatColor .YELLOW } Will generate $count world(s) to reach max limit of $maxLimit (currently have $currentCount )." )
54
+ }
40
55
} catch (e: NumberFormatException ) {
41
- sender.sendMessage(" ${ChatColor .RED } Invalid number format. Usage: /prepare [count]" )
56
+ sender.sendMessage(" ${ChatColor .RED } Invalid number format. Usage: /prepare [count] [max] " )
42
57
return true
43
58
}
44
59
45
60
// Start generation
46
- sender.sendMessage(" ${ChatColor .YELLOW } Starting generation of $count world(s)..." )
61
+ val message = if (maxLimit != null ) {
62
+ " Starting generation of $count world(s) to reach max limit of $maxLimit ..."
63
+ } else {
64
+ " Starting generation of $count world(s)..."
65
+ }
66
+ sender.sendMessage(" ${ChatColor .YELLOW }$message " )
47
67
48
- generateNextWorld(sender, worldManager, 0 , count)
68
+ generateNextWorld(sender, worldManager, 0 , count, maxLimit )
49
69
50
70
return true
51
71
}
52
72
53
- private fun generateNextWorld (sender : CommandSender , worldManager : WorldPreparationManager , generated : Int , total : Int ) {
73
+ private fun generateNextWorld (sender : CommandSender , worldManager : WorldPreparationManager , generated : Int , total : Int , maxLimit : Int? = null) {
74
+ // Check if we've reached the max limit before generating more
75
+ if (maxLimit != null ) {
76
+ val currentCount = worldManager.countAvailableWorlds()
77
+ if (currentCount >= maxLimit) {
78
+ sender.sendMessage(" ${ChatColor .GREEN } Reached max limit of $maxLimit prepared worlds. Stopping generation." )
79
+ sender.sendMessage(" ${ChatColor .GREEN } Currently have $currentCount pregenerated worlds available." )
80
+ return
81
+ }
82
+ }
83
+
54
84
if (generated >= total) {
55
85
// After finishing, show updated count
56
86
val currentCount = worldManager.countAvailableWorlds()
57
- sender.sendMessage(" ${ChatColor .GREEN } All $total worlds have been prepared successfully!" )
87
+ val completionMessage = if (maxLimit != null ) {
88
+ " Generated $total worlds and reached max limit of $maxLimit !"
89
+ } else {
90
+ " All $total worlds have been prepared successfully!"
91
+ }
92
+ sender.sendMessage(" ${ChatColor .GREEN }$completionMessage " )
58
93
sender.sendMessage(" ${ChatColor .GREEN } Now have $currentCount pregenerated worlds available." )
59
94
return
60
95
}
@@ -67,7 +102,7 @@ class PrepareWorldCommand(private val plugin: ChallengePluginPlugin) : CommandEx
67
102
if (success) {
68
103
sender.sendMessage(" ${ChatColor .GREEN } World $currentNum /$total generated successfully." )
69
104
// Generate the next world
70
- generateNextWorld(sender, worldManager, currentNum, total)
105
+ generateNextWorld(sender, worldManager, currentNum, total, maxLimit )
71
106
} else {
72
107
sender.sendMessage(" ${ChatColor .RED } Failed to generate world $currentNum /$total . Stopping generation." )
73
108
// Show current count after failure
0 commit comments