made main command logic

This commit is contained in:
alexcrea 2026-06-30 03:36:22 +02:00
parent 1d59f033b8
commit 4942f3c0d2
Signed by: alexcrea
GPG key ID: E346CD16413450E3

View file

@ -1,21 +1,32 @@
package xyz.alexcrea.cuanvil.command package xyz.alexcrea.cuanvil.command
import com.willfp.eco.core.lookup.matches
import io.delilaheve.CustomAnvil import io.delilaheve.CustomAnvil
import org.bukkit.command.Command import org.bukkit.command.Command
import org.bukkit.command.CommandSender import org.bukkit.command.CommandSender
import org.bukkit.entity.HumanEntity import org.bukkit.entity.HumanEntity
import xyz.alexcrea.cuanvil.api.EnchantmentApi
import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil
import xyz.alexcrea.cuanvil.enchant.CAEnchantment
import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry
import xyz.alexcrea.cuanvil.gui.config.MainConfigGui import xyz.alexcrea.cuanvil.gui.config.MainConfigGui
import xyz.alexcrea.cuanvil.gui.util.GuiGlobalActions import xyz.alexcrea.cuanvil.gui.util.GuiGlobalActions
class EditConfigExecutor : CASubCommand() { class EditConfigExecutor : CASubCommand() {
override fun executeCommand(sender: CommandSender, override fun allowed(sender: CommandSender): Boolean {
return sender.hasPermission(CustomAnvil.editConfigPermission)
}
override fun description(): String {
return "Gui to edit the plugin's config"
}
override fun executeCommand(
sender: CommandSender,
cmd: Command, cmd: Command,
cmdstr: String, cmdstr: String,
args: Array<out String>): Boolean { args: Array<out String>
): Boolean {
if (sender !is HumanEntity) return false if (sender !is HumanEntity) return false
if (!allowed(sender)) { if (!allowed(sender)) {
@ -35,19 +46,53 @@ class EditConfigExecutor: CASubCommand() {
sender.sendMessage("§c/ca gui has been moved to /ca config") sender.sendMessage("§c/ca gui has been moved to /ca config")
} }
MainConfigGui.getInstance().show(sender) if (args.isEmpty())
processOpen(sender)
else when (args[0].lowercase()) {
"open" -> processOpen(sender)
"enchant" -> processEnchant(sender, args)
"item" -> processItem(sender)
else -> sender.sendMessage("Unknown subcommand \"${args[0]}\"")
}
return true return true
} }
override fun allowed(sender: CommandSender): Boolean { private fun processEnchant(sender: HumanEntity, args: Array<out String>) {
return sender.hasPermission(CustomAnvil.editConfigPermission) val enchantToFilter: Set<CAEnchantment>
if (args.size <= 1) {
val item = sender.inventory.itemInMainHand
enchantToFilter = EnchantmentApi.getEnchantments(item).keys
if (enchantToFilter.isEmpty()) {
sender.sendMessage("No enchantment found in the item you are holding")
return
}
} else {
enchantToFilter = HashSet(EnchantmentApi.getListByName(args[1].lowercase()))
if (enchantToFilter.isEmpty()) {
sender.sendMessage("No enchantment found with the name \"${args[1]}\"")
return
}
} }
override fun description(): String { // TODO open enchantments edit gui
return "Gui to edit the plugin's config"
} }
private fun processItem(sender: HumanEntity) {
// TODO open item edit gui
}
private fun processOpen(sender: HumanEntity) {
MainConfigGui.getInstance().show(sender)
}
// ---------------
// Tab completer
// ---------------
private fun allEnchantmentsByName(): Collection<String> { private fun allEnchantmentsByName(): Collection<String> {
val names = mutableSetOf<String>() val names = mutableSetOf<String>()
for (enchantment in CAEnchantmentRegistry.getInstance().values()) { for (enchantment in CAEnchantmentRegistry.getInstance().values()) {
@ -59,7 +104,8 @@ class EditConfigExecutor: CASubCommand() {
} }
override fun tabCompleter(sender: CommandSender, args: Array<out String>, list: MutableList<String>) { override fun tabCompleter(sender: CommandSender, args: Array<out String>, list: MutableList<String>) {
list.addAll(when (args.size) { list.addAll(
when (args.size) {
1 -> listOf("item", "enchant", "open") 1 -> listOf("item", "enchant", "open")
2 -> { 2 -> {
when (args[0].lowercase()) { when (args[0].lowercase()) {
@ -67,8 +113,10 @@ class EditConfigExecutor: CASubCommand() {
else -> listOf() else -> listOf()
} }
} }
else -> listOf() else -> listOf()
}) }
)
} }