diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandEcoarmor.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandEcoarmor.kt index a869f4b..94d245d 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandEcoarmor.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandEcoarmor.kt @@ -1,8 +1,8 @@ package com.willfp.ecoarmor.commands import com.willfp.eco.core.EcoPlugin -import com.willfp.eco.core.command.CommandHandler import com.willfp.eco.core.command.impl.PluginCommand +import org.bukkit.command.CommandSender class CommandEcoarmor(plugin: EcoPlugin) : PluginCommand(plugin, "ecoarmor", "ecoarmor.command.ecoarmor", false) { init { @@ -10,11 +10,9 @@ class CommandEcoarmor(plugin: EcoPlugin) : PluginCommand(plugin, "ecoarmor", "ec .addSubcommand(CommandGive(plugin)) } - override fun getHandler(): CommandHandler { - return CommandHandler { sender, _ -> - sender.sendMessage( - plugin.langYml.getMessage("invalid-command") - ) - } + override fun onExecute(sender: CommandSender, args: List) { + sender.sendMessage( + plugin.langYml.getMessage("invalid-command") + ) } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandGive.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandGive.kt index da440c8..48ce70d 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandGive.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandGive.kt @@ -1,8 +1,6 @@ package com.willfp.ecoarmor.commands import com.willfp.eco.core.EcoPlugin -import com.willfp.eco.core.command.CommandHandler -import com.willfp.eco.core.command.TabCompleteHandler import com.willfp.eco.core.command.impl.Subcommand import com.willfp.ecoarmor.sets.ArmorSets import com.willfp.ecoarmor.sets.ArmorSlot @@ -12,10 +10,8 @@ import com.willfp.ecoarmor.upgrades.Tier import com.willfp.ecoarmor.upgrades.Tiers import org.bukkit.Bukkit import org.bukkit.command.CommandSender -import org.bukkit.entity.Player import org.bukkit.inventory.ItemStack import org.bukkit.util.StringUtil -import java.util.stream.Collectors class CommandGive(plugin: EcoPlugin) : Subcommand(plugin, "give", "ecoarmor.command.give", false) { private val items: Collection @@ -39,185 +35,181 @@ class CommandGive(plugin: EcoPlugin) : Subcommand(plugin, "give", "ecoarmor.comm "64" ) - override fun getHandler(): CommandHandler { - return CommandHandler { sender: CommandSender, args: List -> - if (args.isEmpty()) { - sender.sendMessage(plugin.langYml.getMessage("needs-player")) - return@CommandHandler - } - - if (args.size == 1) { - sender.sendMessage(plugin.langYml.getMessage("needs-item")) - return@CommandHandler - } - - val recieverName = args[0] - val reciever = Bukkit.getPlayer(recieverName) - - if (reciever == null) { - sender.sendMessage(plugin.langYml.getMessage("invalid-player")) - return@CommandHandler - } - - val fullItemKey = args[1] - - if (!fullItemKey.contains(":")) { - sender.sendMessage(plugin.langYml.getMessage("invalid-item")) - return@CommandHandler - } - - val fullItemSplit = fullItemKey.split(":").toTypedArray() - - if (fullItemSplit.size == 1) { - sender.sendMessage(plugin.langYml.getMessage("invalid-item")) - return@CommandHandler - } - - val itemNamespace = fullItemSplit[0] - val itemKey = fullItemSplit[1] - val toGive = mutableListOf() - var amount = 1 - - if (itemNamespace.equals("set", ignoreCase = true)) { - val set = ArmorSets.getByID(itemKey) - - if (set == null) { - sender.sendMessage(plugin.langYml.getMessage("invalid-item")) - return@CommandHandler - } - - var message = plugin.langYml.getMessage("give-success") - - message = message.replace("%item%", set.id + " Set").replace("%recipient%", reciever.name) - - sender.sendMessage(message) - - var advanced = false - var tier: Tier? = null - val slots = mutableListOf() - if (args.size >= 3) { - val slot = getSlot(args[2]) - if (slot == null) { - if (!args[2].equals("full", ignoreCase = true)) { - sender.sendMessage(plugin.langYml.getMessage("invalid-item")) - return@CommandHandler - } - } - if (slot == null) { - slots.addAll(ArmorSlot.values()) - } else { - slots.add(slot) - } - } else { - slots.addAll(ArmorSlot.values()) - } - if (args.size >= 4) { - advanced = args[3].toBoolean() - } - if (args.size >= 5) { - tier = Tiers.getByID(args[4]) - } - if (args.size >= 6) { - amount = args[5].toIntOrNull() ?: amount - } - for (slot in slots) { - toGive.add(if (advanced) set.getAdvancedItemStack(slot) else set.getItemStack(slot)) - } - for (item in ArrayList(toGive)) { - val currTear = tier ?: set.getDefaultTier(getSlot(item)) - toGive.remove(item) - ArmorUtils.setTier(item, currTear) - toGive.add(item) - } - } - if (itemNamespace.equals("crystal", ignoreCase = true)) { - val tier = Tiers.getByID(itemKey) - if (tier == null) { - sender.sendMessage(plugin.langYml.getMessage("invalid-item")) - return@CommandHandler - } - var message = plugin.langYml.getMessage("give-success") - message = - message.replace("%item%", tier.crystal.itemMeta!!.displayName).replace("%recipient%", reciever.name) - sender.sendMessage(message) - toGive.add(tier.crystal) - if (args.size >= 3) { - amount = args[2].toIntOrNull() ?: amount - } - } - if (itemNamespace.equals("shard", ignoreCase = true)) { - val set = ArmorSets.getByID(itemKey) - if (set == null) { - sender.sendMessage(plugin.langYml.getMessage("invalid-item")) - return@CommandHandler - } - var message = plugin.langYml.getMessage("give-success") - message = message.replace("%item%", set.advancementShardItem.itemMeta!!.displayName) - .replace("%recipient%", reciever.name) - sender.sendMessage(message) - toGive.add(set.advancementShardItem) - if (args.size >= 3) { - amount = args[2].toIntOrNull() ?: amount - } - } - if (toGive.isEmpty()) { - sender.sendMessage(plugin.langYml.getMessage("invalid-item")) - return@CommandHandler - } - for (item in toGive) { - item.amount = amount - reciever.inventory.addItem(item) - } + override fun onExecute(sender: CommandSender, args: List) { + if (args.isEmpty()) { + sender.sendMessage(plugin.langYml.getMessage("needs-player")) + return } - } - override fun getTabCompleter(): TabCompleteHandler { - return TabCompleteHandler { _, args -> - val completions = mutableListOf() - if (args.isEmpty()) { - // Currently, this case is not ever reached - return@TabCompleteHandler items.toList() + if (args.size == 1) { + sender.sendMessage(plugin.langYml.getMessage("needs-item")) + return + } + + val recieverName = args[0] + val reciever = Bukkit.getPlayer(recieverName) + + if (reciever == null) { + sender.sendMessage(plugin.langYml.getMessage("invalid-player")) + return + } + + val fullItemKey = args[1] + + if (!fullItemKey.contains(":")) { + sender.sendMessage(plugin.langYml.getMessage("invalid-item")) + return + } + + val fullItemSplit = fullItemKey.split(":").toTypedArray() + + if (fullItemSplit.size == 1) { + sender.sendMessage(plugin.langYml.getMessage("invalid-item")) + return + } + + val itemNamespace = fullItemSplit[0] + val itemKey = fullItemSplit[1] + val toGive = mutableListOf() + var amount = 1 + + if (itemNamespace.equals("set", ignoreCase = true)) { + val set = ArmorSets.getByID(itemKey) + + if (set == null) { + sender.sendMessage(plugin.langYml.getMessage("invalid-item")) + return } - if (args.size == 1) { - StringUtil.copyPartialMatches( - args[0], - Bukkit.getOnlinePlayers().stream().map { obj: Player -> obj.name } - .collect(Collectors.toList()), - completions) - return@TabCompleteHandler completions - } - if (args.size == 2) { - StringUtil.copyPartialMatches(args[1], items, completions) - completions.sort() - return@TabCompleteHandler completions - } - if (args[1].startsWith("set:")) { - if (args.size == 3) { - StringUtil.copyPartialMatches(args[2], slots, completions) - completions.sort() - return@TabCompleteHandler completions + + var message = plugin.langYml.getMessage("give-success") + + message = message.replace("%item%", set.id + " Set").replace("%recipient%", reciever.name) + + sender.sendMessage(message) + + var advanced = false + var tier: Tier? = null + val slots = mutableListOf() + if (args.size >= 3) { + val slot = getSlot(args[2]) + if (slot == null) { + if (!args[2].equals("full", ignoreCase = true)) { + sender.sendMessage(plugin.langYml.getMessage("invalid-item")) + return + } } - if (args.size == 4) { - StringUtil.copyPartialMatches(args[3], listOf("true", "false"), completions) - completions.sort() - return@TabCompleteHandler completions - } - if (args.size == 5) { - StringUtil.copyPartialMatches(args[4], tiers, completions) - completions.sort() - return@TabCompleteHandler completions - } - if (args.size == 6) { - StringUtil.copyPartialMatches(args[5], numbers, completions) - return@TabCompleteHandler completions + if (slot == null) { + slots.addAll(ArmorSlot.values()) + } else { + slots.add(slot) } } else { - if (args.size == 3) { - StringUtil.copyPartialMatches(args[2], numbers, completions) - return@TabCompleteHandler completions - } + slots.addAll(ArmorSlot.values()) } - ArrayList(0) + if (args.size >= 4) { + advanced = args[3].toBoolean() + } + if (args.size >= 5) { + tier = Tiers.getByID(args[4]) + } + if (args.size >= 6) { + amount = args[5].toIntOrNull() ?: amount + } + for (slot in slots) { + toGive.add(if (advanced) set.getAdvancedItemStack(slot) else set.getItemStack(slot)) + } + for (item in ArrayList(toGive)) { + val currTear = tier ?: set.getDefaultTier(getSlot(item)) + toGive.remove(item) + ArmorUtils.setTier(item, currTear) + toGive.add(item) + } + } + if (itemNamespace.equals("crystal", ignoreCase = true)) { + val tier = Tiers.getByID(itemKey) + if (tier == null) { + sender.sendMessage(plugin.langYml.getMessage("invalid-item")) + return + } + var message = plugin.langYml.getMessage("give-success") + message = + message.replace("%item%", tier.crystal.itemMeta!!.displayName).replace("%recipient%", reciever.name) + sender.sendMessage(message) + toGive.add(tier.crystal) + if (args.size >= 3) { + amount = args[2].toIntOrNull() ?: amount + } + } + if (itemNamespace.equals("shard", ignoreCase = true)) { + val set = ArmorSets.getByID(itemKey) + if (set == null) { + sender.sendMessage(plugin.langYml.getMessage("invalid-item")) + return + } + var message = plugin.langYml.getMessage("give-success") + message = message.replace("%item%", set.advancementShardItem.itemMeta!!.displayName) + .replace("%recipient%", reciever.name) + sender.sendMessage(message) + toGive.add(set.advancementShardItem) + if (args.size >= 3) { + amount = args[2].toIntOrNull() ?: amount + } + } + if (toGive.isEmpty()) { + sender.sendMessage(plugin.langYml.getMessage("invalid-item")) + return + } + for (item in toGive) { + item.amount = amount + reciever.inventory.addItem(item) } } + + override fun tabComplete(sender: CommandSender, args: List): List { + val completions = mutableListOf() + if (args.isEmpty()) { + // Currently, this case is not ever reached + return items.toList() + } + if (args.size == 1) { + StringUtil.copyPartialMatches( + args[0], + Bukkit.getOnlinePlayers().map { it.name }, + completions + ) + return completions + } + if (args.size == 2) { + StringUtil.copyPartialMatches(args[1], items, completions) + completions.sort() + return completions + } + if (args[1].startsWith("set:")) { + if (args.size == 3) { + StringUtil.copyPartialMatches(args[2], slots, completions) + completions.sort() + return completions + } + if (args.size == 4) { + StringUtil.copyPartialMatches(args[3], listOf("true", "false"), completions) + completions.sort() + return completions + } + if (args.size == 5) { + StringUtil.copyPartialMatches(args[4], tiers, completions) + completions.sort() + return completions + } + if (args.size == 6) { + StringUtil.copyPartialMatches(args[5], numbers, completions) + return completions + } + } else { + if (args.size == 3) { + StringUtil.copyPartialMatches(args[2], numbers, completions) + return completions + } + } + return emptyList() + } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandReload.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandReload.kt index 9a015be..d82961b 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandReload.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/commands/CommandReload.kt @@ -1,14 +1,12 @@ package com.willfp.ecoarmor.commands import com.willfp.eco.core.EcoPlugin -import com.willfp.eco.core.command.CommandHandler import com.willfp.eco.core.command.impl.Subcommand +import org.bukkit.command.CommandSender class CommandReload(plugin: EcoPlugin) : Subcommand(plugin, "reload", "ecoarmor.command.reload", false) { - override fun getHandler(): CommandHandler { - return CommandHandler { sender, _ -> - plugin.reload() - sender.sendMessage(plugin.langYml.getMessage("reloaded")) - } + override fun onExecute(sender: CommandSender, args: List) { + plugin.reload() + sender.sendMessage(plugin.langYml.getMessage("reloaded")) } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/config/EcoArmorYml.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/config/EcoArmorYml.kt index d7bd909..c075578 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/config/EcoArmorYml.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/config/EcoArmorYml.kt @@ -1,6 +1,7 @@ package com.willfp.ecoarmor.config import com.willfp.eco.core.EcoPlugin -import com.willfp.eco.core.config.yaml.YamlBaseConfig +import com.willfp.eco.core.config.BaseConfig +import com.willfp.eco.core.config.ConfigType -class EcoArmorYml(plugin: EcoPlugin) : YamlBaseConfig("ecoarmor", false, plugin) +class EcoArmorYml(plugin: EcoPlugin) : BaseConfig("ecoarmor", plugin, false, ConfigType.YAML) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/sets/ArmorSet.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/sets/ArmorSet.kt index 1481060..fe7da1f 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/sets/ArmorSet.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/sets/ArmorSet.kt @@ -165,7 +165,7 @@ class ArmorSet( if (defaultTier == null) { Bukkit.getLogger() .warning("Default tier specified in " + id + " " + slot.name.lowercase(Locale.getDefault()) + " is invalid! Defaulting to 'default'") - setTier(itemStack, Tiers.getDefaultTier()) + setTier(itemStack, Tiers.defaultTier) } else { setTier(itemStack, defaultTier) } @@ -221,7 +221,7 @@ class ArmorSet( val formattedOut = out.clone() val meta = formattedOut.itemMeta!! assert(meta.lore != null) - val lore = meta.lore.map { it.replace("%tier%", Tiers.getDefaultTier().displayName) } + val lore = meta.lore.map { it.replace("%tier%", Tiers.defaultTier.displayName) } meta.lore = lore formattedOut.itemMeta = meta Recipes.createAndRegisterRecipe( @@ -239,8 +239,8 @@ class ArmorSet( * @param slot The slot. * @return The item. */ - fun getItemStack(slot: ArmorSlot): ItemStack? { - return items[slot] + fun getItemStack(slot: ArmorSlot): ItemStack { + return items[slot]!! } /** @@ -249,8 +249,8 @@ class ArmorSet( * @param slot The slot. * @return The item. */ - fun getAdvancedItemStack(slot: ArmorSlot): ItemStack? { - return advancedItems[slot] + fun getAdvancedItemStack(slot: ArmorSlot): ItemStack { + return advancedItems[slot]!! } /** @@ -260,9 +260,9 @@ class ArmorSet( * @return The tier. */ fun getDefaultTier(slot: ArmorSlot?): Tier { - if (slot == null) return Tiers.getDefaultTier() + if (slot == null) return Tiers.defaultTier val tier = Tiers.getByID(config.getSubsection(slot.name.lowercase()).getString("defaultTier")) - return tier ?: Tiers.getDefaultTier() + return tier ?: Tiers.defaultTier } override fun equals(other: Any?): Boolean {