made main command logic

This commit is contained in:
alexcrea 2026-06-30 03:36:22 +02:00
parent 5f0a601e5b
commit 554fba008e
Signed by: alexcrea
GPG key ID: E59DF23EE2A2266C

View file

@ -1,28 +1,39 @@
package xyz.alexcrea.cuanvil.command
import com.willfp.eco.core.lookup.matches
import io.delilaheve.CustomAnvil
import org.bukkit.command.Command
import org.bukkit.command.CommandSender
import org.bukkit.entity.HumanEntity
import xyz.alexcrea.cuanvil.api.EnchantmentApi
import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil
import xyz.alexcrea.cuanvil.enchant.CAEnchantment
import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry
import xyz.alexcrea.cuanvil.gui.config.MainConfigGui
import xyz.alexcrea.cuanvil.gui.util.GuiGlobalActions
class EditConfigExecutor: CASubCommand() {
class EditConfigExecutor : CASubCommand() {
override fun executeCommand(sender: CommandSender,
cmd: Command,
cmdstr: String,
args: Array<out String>): Boolean {
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,
cmdstr: String,
args: Array<out String>
): Boolean {
if (sender !is HumanEntity) return false
if (!allowed(sender)) {
sender.sendMessage(GuiGlobalActions.NO_EDIT_PERM)
return false
}
if(PlatformUtil.isFolia){
if (PlatformUtil.isFolia) {
sender.sendMessage("§cIt look like you are using Folia. Sadly Custom Anvil do not support Config gui for Folia.")
sender.sendMessage("§eIt is may come in a future version.")
sender.sendMessage("")
@ -35,20 +46,54 @@ class EditConfigExecutor: CASubCommand() {
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
}
override fun allowed(sender: CommandSender): Boolean {
return sender.hasPermission(CustomAnvil.editConfigPermission)
private fun processEnchant(sender: HumanEntity, args: Array<out String>) {
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
}
}
// TODO open enchantments edit gui
}
override fun description(): String {
return "Gui to edit the plugin's config"
private fun processItem(sender: HumanEntity) {
// TODO open item edit gui
}
private fun allEnchantmentsByName(): Collection<String>{
private fun processOpen(sender: HumanEntity) {
MainConfigGui.getInstance().show(sender)
}
// ---------------
// Tab completer
// ---------------
private fun allEnchantmentsByName(): Collection<String> {
val names = mutableSetOf<String>()
for (enchantment in CAEnchantmentRegistry.getInstance().values()) {
names.add(enchantment.name)
@ -59,16 +104,19 @@ class EditConfigExecutor: CASubCommand() {
}
override fun tabCompleter(sender: CommandSender, args: Array<out String>, list: MutableList<String>) {
list.addAll(when (args.size) {
1 -> listOf("item", "enchant", "open")
2 -> {
when(args[0].lowercase()) {
"enchant" -> allEnchantmentsByName()
else -> listOf()
list.addAll(
when (args.size) {
1 -> listOf("item", "enchant", "open")
2 -> {
when (args[0].lowercase()) {
"enchant" -> allEnchantmentsByName()
else -> listOf()
}
}
else -> listOf()
}
else -> listOf()
})
)
}