9
0
mirror of https://github.com/Auxilor/EcoJobs.git synced 2025-12-21 16:09:18 +00:00

added "all" args

Within reset command, you can now use "all" as player or job.
Added new lang messages accordingly.
This commit is contained in:
Exanthiax
2025-01-31 13:38:06 +00:00
parent 6fc1ba72d8
commit c99769a1e3
2 changed files with 71 additions and 4 deletions

View File

@@ -10,6 +10,7 @@ import com.willfp.ecojobs.api.resetJob
import com.willfp.ecojobs.jobs.Jobs
import org.bukkit.Bukkit
import org.bukkit.command.CommandSender
import org.bukkit.util.StringUtil
class CommandReset(plugin: EcoPlugin) : Subcommand(plugin, "reset", "ecojobs.command.reset", false) {
override fun onExecute(sender: CommandSender, args: List<String>) {
@@ -24,16 +25,68 @@ class CommandReset(plugin: EcoPlugin) : Subcommand(plugin, "reset", "ecojobs.com
}
val playerName = args[0]
val jobName = args[1]
// Reset all jobs for all players
if (playerName.equals("all", ignoreCase = true) && jobName.equals("all", ignoreCase = true)) {
Bukkit.getOnlinePlayers().forEach { player ->
Jobs.values().forEach { job ->
if (player.hasJob(job)) {
player.forceLeaveJob(job)
player.resetJob(job)
}
}
}
sender.sendMessage(plugin.langYml.getMessage("reset-all-players-all-jobs"))
return
}
// Reset a specific job for all players
if (playerName.equals("all", ignoreCase = true)) {
val job = Jobs.getByID(jobName)
if (job == null) {
sender.sendMessage(plugin.langYml.getMessage("invalid-job"))
return
}
Bukkit.getOnlinePlayers().forEach { player ->
if (player.hasJob(job)) {
player.forceLeaveJob(job)
player.resetJob(job)
}
}
sender.sendMessage(
plugin.langYml.getMessage("reset-all-players")
.replace("%job%", job.name)
)
return
}
// Reset all jobs for a specific player
val player = Bukkit.getPlayer(playerName)
if (player == null) {
sender.sendMessage(plugin.langYml.getMessage("invalid-player"))
return
}
val job = Jobs.getByID(args[1])
if (jobName.equals("all", ignoreCase = true)) {
Jobs.values().forEach { job ->
if (player.hasJob(job)) {
player.forceLeaveJob(job)
player.resetJob(job)
}
}
sender.sendMessage(
plugin.langYml.getMessage("reset-all-jobs")
.replace("%player%", player.savedDisplayName)
)
return
}
// Reset a specific job for a specific player
val job = Jobs.getByID(jobName)
if (job == null) {
sender.sendMessage(plugin.langYml.getMessage("invalid-job"))
return
@@ -55,12 +108,23 @@ class CommandReset(plugin: EcoPlugin) : Subcommand(plugin, "reset", "ecojobs.com
}
override fun tabComplete(sender: CommandSender, args: List<String>): List<String> {
val completions = mutableListOf<String>()
if (args.size == 1) {
return Bukkit.getOnlinePlayers().map { it.name }
StringUtil.copyPartialMatches(
args[0],
listOf("all") union Bukkit.getOnlinePlayers().map { player -> player.name },
completions
)
return completions
}
if (args.size == 2) {
return Jobs.values().map { it.id }
StringUtil.copyPartialMatches(
args[1],
listOf("all") union Jobs.values().map { it.id },
completions
)
return completions
}
return emptyList()

View File

@@ -8,6 +8,9 @@ messages:
needs-player: "&cYou must specify a player!"
gave-xp: "&fYou have given &a%xp% &fXP to %player%&f's %job%&f!"
reset-xp: "&fYou have reset %player%&f's %job%&f XP!"
reset-all-players: "&fYou have reset all players' %job%&f XP!"
reset-all-jobs: "&fYou have reset %player%&f's XP for all jobs!"
reset-all-players-all-jobs: "&fYou have reset all players' XP for all jobs!"
needs-job: "&cYou must specify a job!"
need-amount: "&cYou must specify a amount!"
invalid-player: "&cInvalid player!"