late night coding ftw

This commit is contained in:
5vl 2022-04-17 01:37:48 +02:00
parent 5a2c10d7fd
commit 487b84418d
No known key found for this signature in database
GPG Key ID: DA8938F22548E4D5
8 changed files with 114 additions and 27 deletions

View File

@ -4,18 +4,18 @@ I made this plugin by request of a friend, and because I didn't have anything to
- PlaceholderAPI support
- Staffmode
- Freezing (through command or freeze wand in staffmode)
- Open inventory (through command or inventory wand in staffmode)
- Open inventory (through command or inventory wand in staffmode) - To move items in someone elses inventory, you need the permission "staff.invsee.move"
- Knockback Stick (in staffmode)
# Commands and permissions:
- /staffmode - staff.staffmode
- /freeze - staff.freeze
- /openinv - staff.openinv
- /invsee - staff.invsee
- /vanish - /v - staff.vanish
# Staff mode items:
- Disable staffmode item - staff.staffmode
- Freeze wand - staff.freeze.wand
- Inventory wand - staff.openinv.wand
- Inventory wand - staff.invsee.wand
- Knockback Stick - staff.kbstick
- Vanish item - staff.vanish.item

View File

@ -3,10 +3,14 @@ package me.fivevl.staff
object Config {
val mustBePlayer = Utils.instance!!.config.getString("must-be-player")!!
val noPermission = Utils.instance!!.config.getString("no-permission")!!
val playerNotFound = Utils.instance!!.config.getString("player-not-found")!!
val toggleStaffmodeOn = Utils.instance!!.config.getString("toggle-staffmode-on")!!
val toggleStaffmodeOff = Utils.instance!!.config.getString("toggle-staffmode-off")!!
val toggleVanishOn = Utils.instance!!.config.getString("toggle-vanish-on")!!
val toggleVanishOff = Utils.instance!!.config.getString("toggle-vanish-off")!!
val toggleFreezeOn = Utils.instance!!.config.getString("toggle-freeze-on")!!
val toggleFreezeOff = Utils.instance!!.config.getString("toggle-freeze-off")!!
val currentlyFrozen = Utils.instance!!.config.getString("currently-frozen")!!
val staffmodeHotbar = HashMap<Int, String>().apply {
Utils.instance!!.config.getConfigurationSection("staffmode-hotbar")?.getKeys(false)?.forEach {
put(it.toInt(), Utils.instance!!.config.getString("staffmode-hotbar.$it")!!)

View File

@ -1,9 +1,10 @@
package me.fivevl.staff
import me.fivevl.staff.commands.InvseeCommand
import me.fivevl.staff.commands.StaffModeCommand
import me.fivevl.staff.commands.StaffmodeCommand
import me.fivevl.staff.commands.VanishCommand
import me.fivevl.staff.listeners.JoinListener
import me.fivevl.staff.listeners.StaffmodeListener
import org.bukkit.Bukkit
import org.bukkit.plugin.java.JavaPlugin
@ -13,29 +14,16 @@ class Main : JavaPlugin() {
saveDefaultConfig()
getCommand("staffmode")!!.setExecutor(StaffModeCommand())
getCommand("staffmode")!!.setExecutor(StaffmodeCommand())
getCommand("vanish")!!.setExecutor(VanishCommand())
getCommand("invsee")!!.setExecutor(InvseeCommand())
Bukkit.getPluginManager().registerEvents(JoinListener(), this)
Bukkit.getPluginManager().registerEvents(StaffmodeListener(), this)
logger.info("Staff plugin enabled.")
}
override fun onDisable() {
logger.info("Staff plugin disabled.")
}
/*
FEATURES:
DONE:
- PlaceholderAPI support
- Config
- Vanish command
NOT DONE:
- Staff mode (Invisibility/vanish, fly, items)
- Freeze (Command and freeze wand in staff mode)
- Open inventory (Command and wand in staff mode) with permission for being able to edit it
- Knockback Stick (Extra, useful to check if the player has no kb)
*/
}

View File

@ -14,6 +14,8 @@ object Utils {
var instance: Main? = null
val inStaffmode = HashMap<Player, Inventory>()
val inVanish = ArrayList<Player>()
val inOtherInv = ArrayList<Player>()
val frozen = ArrayList<Player>()
@Suppress("deprecation")
fun mm(s: String): Component {
return MiniMessage.miniMessage().deserialize(s)
@ -36,11 +38,11 @@ object Utils {
for (i: Int in Config.staffmodeHotbar.keys) {
var item = ItemStack(Material.AIR)
when (Config.staffmodeHotbar[i]) {
"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
"DISABLE_STAFFMODE" -> if (p.hasPermission("staff.staffmode")) item = Items.DISABLE_STAFFMODE.item
"FREEZE_WAND" -> if (p.hasPermission("staff.freeze.wand")) item = Items.FREEZE_WAND.item
"INVENTORY_WAND" -> if (p.hasPermission("staff.invsee.wand")) item = Items.INVENTORY_WAND.item
"KB_STICK" -> if (p.hasPermission("staff.kbstick")) item = Items.KB_STICK.item
"VANISH_ITEM" -> if (p.hasPermission("staff.vanish.item")) item = Items.VANISH_ITEM.item
}
p.inventory.setItem(i - 1, item)
}
@ -62,4 +64,13 @@ object Utils {
p.sendMessage(mm(getPlaceholders(p, Config.toggleVanishOn)))
}
}
fun toggleFreeze(p: Player) {
if (frozen.contains(p)) {
p.sendMessage(mm(getPlaceholders(p, Config.toggleFreezeOff)))
frozen.remove(p)
} else {
p.sendMessage(mm(getPlaceholders(p, Config.toggleFreezeOn)))
frozen.add(p)
}
}
}

View File

@ -2,6 +2,7 @@ package me.fivevl.staff.commands
import me.fivevl.staff.Config
import me.fivevl.staff.Utils
import org.bukkit.Bukkit
import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
@ -22,6 +23,13 @@ class InvseeCommand : CommandExecutor {
p.sendMessage(Utils.mm("<red><hover:show_text:Click me to insert command!><click:suggest_command:/invsee >Usage: /invsee <player></click></hover></red>"))
return true
}
val target = Bukkit.getPlayer(args[0])
if (target == null) {
p.sendMessage(Utils.mm(Utils.getPlaceholders(p, Config.playerNotFound)))
return true
}
p.openInventory(target.inventory)
Utils.inOtherInv.add(p)
return true
}
}

View File

@ -7,7 +7,7 @@ import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
class StaffModeCommand : CommandExecutor {
class StaffmodeCommand : CommandExecutor {
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
if (sender !is Player) {
sender.sendMessage(Utils.mm(Utils.getPlaceholders(null, Config.mustBePlayer)))

View File

@ -0,0 +1,74 @@
package me.fivevl.staff.listeners
import me.fivevl.staff.Config
import me.fivevl.staff.Items
import me.fivevl.staff.Utils
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.inventory.InventoryClickEvent
import org.bukkit.event.inventory.InventoryCloseEvent
import org.bukkit.event.player.PlayerDropItemEvent
import org.bukkit.event.player.PlayerInteractAtEntityEvent
import org.bukkit.event.player.PlayerInteractEvent
import org.bukkit.event.player.PlayerMoveEvent
class StaffmodeListener : Listener {
@EventHandler
fun onDrop(e: PlayerDropItemEvent) {
if (Utils.inStaffmode.containsKey(e.player)) {
e.isCancelled = true
}
}
@EventHandler
fun onInvClick(e: InventoryClickEvent) {
if (Utils.inOtherInv.contains(e.whoClicked) && !e.whoClicked.hasPermission("staff.invsee.move")) {
e.isCancelled = true
}
if (!Utils.inStaffmode.containsKey(e.whoClicked)) {return}
if (!e.whoClicked.hasPermission("staff.inventory")) {
e.isCancelled = true
}
}
@EventHandler
fun onInvClose(e: InventoryCloseEvent) {
Utils.inOtherInv.remove(e.player)
}
@EventHandler
fun onInteract(e: PlayerInteractEvent) {
if (!Utils.inStaffmode.containsKey(e.player)) {
return
}
val p = e.player
if (p.inventory.itemInMainHand.equals(Items.DISABLE_STAFFMODE)) {
Utils.toggleStaffmode(p)
}
if (p.inventory.itemInMainHand.equals(Items.VANISH_ITEM)) {
Utils.toggleVanish(p)
}
}
@EventHandler
fun onEntityInteract(e: PlayerInteractAtEntityEvent) {
if (!Utils.inStaffmode.containsKey(e.player)) {
return
}
if (e.rightClicked !is Player) return
val p = e.player
val target = e.rightClicked as Player
if (p.inventory.itemInMainHand.equals(Items.INVENTORY_WAND)) {
p.openInventory(target.inventory)
Utils.inOtherInv.add(p)
}
if (p.inventory.itemInMainHand.equals(Items.FREEZE_WAND)) {
Utils.toggleFreeze(target)
}
}
@EventHandler
fun onMove(e: PlayerMoveEvent) {
if (Utils.frozen.contains(e.player)) {
e.isCancelled = true
e.player.sendMessage(Utils.mm(Utils.getPlaceholders(e.player, Config.currentlyFrozen)))
}
}
}

View File

@ -2,12 +2,14 @@
# For messages please use the minimessage formatting, see https://docs.adventure.kyori.net/minimessage/format.html#minimessage-format
must-be-player: "<red>You must be a player to use this command!</red>" # Message shown when a player tries to use a command that requires them to be a player
no-permission: "<red>You do not have permission to use this command!</red>" # Message shown when a player tries to use a command that they don't have permission to use
player-not-found: "<red>Player not found!</red>" # Message shown when a player does not exist
toggle-staffmode-on: "<green>Toggled staffmode on!</green>" # Message shown when a player toggles staffmode on
toggle-staffmode-off: "<red>Toggled staffmode off!</red>" # Message shown when a player toggles staffmode off
toggle-vanish-on: "<green>Toggled vanish on!</green>" # Message shown when a player toggles vanish on
toggle-vanish-off: "<red>Toggled vanish off!</red>" # Message shown when a player toggles vanish off
toggle-fly-on: "<green>Toggled fly on!</green>" # Message shown when a player toggles fly on
toggle-fly-off: "<red>Toggled fly off!</red>" # Message shown when a player toggles fly off
toggle-freeze-on: "<red>You have been frozen! Do not log out.</red>" # Message shown when a player gets frozen.
toggle-freeze-off: "<green>You have been unfrozen!</green>" # Message shown when a player gets unfrozen.
currently-frozen: "<red>You are currently frozen! Do not log out.</red>" # Message shown when a player tries to use a move while they are frozen.
# In this section of the config you can change the items given to you in staffmode. Please do not use colors here.
staffmode-hotbar: # List of items to give the player when they toggle staffmode, available items: "DISABLE_STAFFMODE", "FREEZE_WAND", "INVENTORY_WAND", "KB_STICK", "VANISH_ITEM"