mirror of
https://github.com/5vl/Staff.git
synced 2025-05-23 22:06:58 +00:00
late night coding ftw
This commit is contained in:
parent
5a2c10d7fd
commit
487b84418d
@ -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
|
@ -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")!!)
|
||||
|
@ -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)
|
||||
*/
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
||||
}
|
||||
}
|
@ -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)))
|
74
src/main/java/me/fivevl/staff/listeners/StaffmodeListener.kt
Normal file
74
src/main/java/me/fivevl/staff/listeners/StaffmodeListener.kt
Normal 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)))
|
||||
}
|
||||
}
|
||||
}
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user