diff --git a/src/main/java/me/fivevl/staff/Config.kt b/src/main/java/me/fivevl/staff/Config.kt index 221b15f..2fb1b6a 100644 --- a/src/main/java/me/fivevl/staff/Config.kt +++ b/src/main/java/me/fivevl/staff/Config.kt @@ -3,14 +3,17 @@ package me.fivevl.staff import org.bukkit.configuration.file.FileConfiguration object Config { - var config: FileConfiguration? = null - val mustBePlayer = config?.getString("must-be-player") - val noPermission = config?.getString("no-permission") - val toggleStaffmode = config?.getString("toggle-staffmode") + private fun getConfig(): FileConfiguration { + return Utils.getConfig() + } + val mustBePlayer = getConfig().getString("must-be-player")!! + val noPermission = getConfig().getString("no-permission")!! + val toggleStaffmode = getConfig().getString("toggle-staffmode")!! + val toggleVanish = getConfig().getString("toggle-vanish")!! val staffmodeHotbar = HashMap().apply { - config?.getConfigurationSection("staffmode-hotbar")?.getKeys(false)?.forEach { - put(it.toInt(), config?.getString("staffmode-hotbar.$it")!!) + getConfig().getConfigurationSection("staffmode-hotbar")?.getKeys(false)?.forEach { + put(it.toInt(), getConfig().getString("staffmode-hotbar.$it")!!) } } - val toggleVanish = config?.getString("toggle-vanish") + val disableStaffmodeItem = getConfig().getString("disable-staffmode-item")!! } \ No newline at end of file diff --git a/src/main/java/me/fivevl/staff/Items.kt b/src/main/java/me/fivevl/staff/Items.kt new file mode 100644 index 0000000..69601b1 --- /dev/null +++ b/src/main/java/me/fivevl/staff/Items.kt @@ -0,0 +1,19 @@ +package me.fivevl.staff + +import org.bukkit.Material +import org.bukkit.inventory.ItemStack + +enum class Items(val item: ItemStack) { + DISABLE_STAFFMODE(getStaffmodeItem()), + FREEZE_WAND(ItemStack(Material.STICK)), + INVENTORY_WAND(ItemStack(Material.STICK)), + KB_STICK(ItemStack(Material.STICK)), + VANISH_ITEM(ItemStack(Material.STICK)), +} +@Suppress("deprecation") +private fun getStaffmodeItem(): ItemStack { + val item = ItemStack(Material.LIME_DYE) + val meta = item.itemMeta + meta.setDisplayName(Utils.hex(Utils.getPlaceholders(null, Config.disableStaffmodeItem))) + return item +} \ No newline at end of file diff --git a/src/main/java/me/fivevl/staff/Main.kt b/src/main/java/me/fivevl/staff/Main.kt index 399c218..7c5cf70 100644 --- a/src/main/java/me/fivevl/staff/Main.kt +++ b/src/main/java/me/fivevl/staff/Main.kt @@ -11,7 +11,6 @@ class Main : JavaPlugin() { Utils.instance = this saveDefaultConfig() - Config.config = config getCommand("staffmode")!!.setExecutor(StaffModeCommand()) getCommand("vanish")!!.setExecutor(VanishCommand()) diff --git a/src/main/java/me/fivevl/staff/Utils.kt b/src/main/java/me/fivevl/staff/Utils.kt index c1f8b2f..493f13a 100644 --- a/src/main/java/me/fivevl/staff/Utils.kt +++ b/src/main/java/me/fivevl/staff/Utils.kt @@ -4,6 +4,7 @@ import me.clip.placeholderapi.PlaceholderAPI import net.md_5.bungee.api.ChatColor import org.bukkit.Bukkit import org.bukkit.Material +import org.bukkit.configuration.file.FileConfiguration import org.bukkit.entity.Player import org.bukkit.inventory.ItemStack import org.bukkit.inventory.PlayerInventory @@ -11,7 +12,7 @@ import java.util.regex.Pattern object Utils { var instance: Main? = null - private val inStaffmode = HashMap() + val inStaffmode = HashMap() val inVanish = ArrayList() @Suppress("deprecation") fun hex(s: String): String { @@ -20,7 +21,7 @@ object Utils { var match = pattern.matcher(s) while (match.find()) { val color = s.substring(match.start(), match.end()) - s2 = s2.replace(color, ChatColor.of(color).toString() + "") + s2 = s2.replace(color, ChatColor.of(color).toString()) match = pattern.matcher(s2) } return ChatColor.translateAlternateColorCodes('&', s2) @@ -39,31 +40,33 @@ object Utils { for (i: Int in Config.staffmodeHotbar.keys) { var item = ItemStack(Material.AIR) when (Config.staffmodeHotbar[i]) { - "DISABLE_STAFFMODE" -> item = ItemStack(Material.AIR) - "FREEZE_WAND" -> item = ItemStack(Material.AIR) - "INVENTORY_WAND" -> item = ItemStack(Material.AIR) - "KB_STICK" -> item = ItemStack(Material.AIR) - "VANISH_ITEM" -> item = ItemStack(Material.AIR) + "DISABLE_STAFFMODE" -> item = Items.DISABLE_STAFFMODE.item + "FREEZE_WAND" -> item = Items.FREEZE_WAND.item + "INVENTORY_WAND" -> item = Items.INVENTORY_WAND.item + "KB_STICK" -> item = Items.KB_STICK.item + "VANISH_ITEM" -> item = Items.VANISH_ITEM.item } p.inventory.setItem(i - 1, item) } } - p.sendMessage(hex(getPlaceholders(p, Config.toggleStaffmode!!))) + p.sendMessage(hex(getPlaceholders(p, Config.toggleStaffmode))) } - fun toggleVanish(p: Player) { if (inVanish.contains(p)) { for (ps in Bukkit.getOnlinePlayers()) { ps.showPlayer(instance!!, p) } inVanish.remove(p) - p.sendMessage(hex(getPlaceholders(p, Config.toggleVanish!!))) } else { for (ps in Bukkit.getOnlinePlayers()) { ps.hidePlayer(instance!!, p) } inVanish.add(p) - p.sendMessage(hex(getPlaceholders(p, Config.toggleVanish!!))) } + p.sendMessage(hex(getPlaceholders(p, Config.toggleVanish))) + } + + fun getConfig(): FileConfiguration { + return instance!!.config } } \ No newline at end of file diff --git a/src/main/java/me/fivevl/staff/commands/StaffModeCommand.kt b/src/main/java/me/fivevl/staff/commands/StaffModeCommand.kt index d62953a..231cd1a 100644 --- a/src/main/java/me/fivevl/staff/commands/StaffModeCommand.kt +++ b/src/main/java/me/fivevl/staff/commands/StaffModeCommand.kt @@ -10,12 +10,12 @@ import org.bukkit.entity.Player class StaffModeCommand : CommandExecutor { override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array): Boolean { if (sender !is Player) { - sender.sendMessage(Utils.hex(Utils.getPlaceholders(null, Config.mustBePlayer!!))) + sender.sendMessage(Utils.hex(Utils.getPlaceholders(null, Config.mustBePlayer))) return true } val p = sender.player!! if (!p.hasPermission("staff.staffmode")) { - p.sendMessage(Utils.hex(Utils.getPlaceholders(p, Config.noPermission!!))) + p.sendMessage(Utils.hex(Utils.getPlaceholders(p, Config.noPermission))) return true } Utils.toggleStaffmode(p) diff --git a/src/main/java/me/fivevl/staff/commands/VanishCommand.kt b/src/main/java/me/fivevl/staff/commands/VanishCommand.kt index 0d86dab..ad8def5 100644 --- a/src/main/java/me/fivevl/staff/commands/VanishCommand.kt +++ b/src/main/java/me/fivevl/staff/commands/VanishCommand.kt @@ -1,11 +1,24 @@ package me.fivevl.staff.commands +import me.fivevl.staff.Config +import me.fivevl.staff.Utils import org.bukkit.command.Command import org.bukkit.command.CommandExecutor import org.bukkit.command.CommandSender +import org.bukkit.entity.Player class VanishCommand : CommandExecutor { override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array): Boolean { + if (sender !is Player) { + sender.sendMessage(Utils.hex(Utils.getPlaceholders(null, Config.mustBePlayer))) + return true + } + val p = sender.player!! + if (!p.hasPermission("staff.vanish")) { + p.sendMessage(Utils.hex(Utils.getPlaceholders(p, Config.noPermission))) + return true + } + Utils.toggleVanish(p) return true } diff --git a/src/main/java/me/fivevl/staff/listeners/JoinListener.kt b/src/main/java/me/fivevl/staff/listeners/JoinListener.kt index 17c5a51..132e377 100644 --- a/src/main/java/me/fivevl/staff/listeners/JoinListener.kt +++ b/src/main/java/me/fivevl/staff/listeners/JoinListener.kt @@ -4,13 +4,30 @@ import me.fivevl.staff.Utils import org.bukkit.event.EventHandler import org.bukkit.event.Listener import org.bukkit.event.player.PlayerJoinEvent +import org.bukkit.event.player.PlayerQuitEvent class JoinListener : Listener { + @Suppress("deprecation") @EventHandler fun onJoin(e: PlayerJoinEvent) { + e.joinMessage = null val p = e.player for (ps in Utils.inVanish) { p.hidePlayer(Utils.instance!!, ps) } } + @Suppress("deprecation") + @EventHandler + fun onLeave (e: PlayerQuitEvent) { + e.quitMessage = null + val p = e.player + if (Utils.inVanish.contains(p)) { + Utils.inVanish.remove(p) + } + if (Utils.inStaffmode.contains(p)) { + p.inventory.clear() + p.inventory.contents = Utils.inStaffmode[p]!!.contents + Utils.inStaffmode.remove(p) + } + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 2484f2d..56a5b25 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -16,3 +16,4 @@ staffmode-hotbar: # List of items to give the player when they toggle staffmode, 7: "AIR" 8: "AIR" 9: "AIR" +disable-staffmode-item: "&aDisable staffmode" # Item name of the item that disables staffmode \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 77e96fe..0059a41 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,6 +4,8 @@ main: me.fivevl.staff.Main api-version: 1.18 authors: [ 5vl ] description: A staffing plugin. +depend: + - PlaceholderAPI commands: staffmode: description: The command to go into staffmode.