nicer banning ; and some effects ; spectating ; generally overhauled!
All checks were successful
Maven Build / build (push) Successful in 10m43s

This commit is contained in:
rattatwinko
2025-05-10 20:15:40 +02:00
parent 02cc5d5f70
commit 23196525bf

View File

@@ -5,22 +5,29 @@ package org.easyadmin.easyadmin
import org.bukkit.Bukkit
import org.bukkit.ChatColor
import org.bukkit.Material
import org.bukkit.Particle
import org.bukkit.Sound
import org.bukkit.FireworkEffect
import org.bukkit.command.Command
import org.bukkit.command.CommandSender
import org.bukkit.entity.Firework
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.player.PlayerChatEvent
import org.bukkit.event.EventPriority
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.ItemMeta // Don't remove!
import org.bukkit.plugin.java.JavaPlugin // Don't remove!
import org.bukkit.inventory.meta.ItemMeta
import org.bukkit.inventory.meta.FireworkMeta
import org.bukkit.plugin.java.JavaPlugin
import java.util.*
@Suppress("DEPRECATION")
class Easyadmin : JavaPlugin(), Listener {
private val menuName = "${ChatColor.DARK_PURPLE}${ChatColor.BOLD}EasyAdmin"
private val banReasons = mutableMapOf<UUID, Pair<String, Player>>()
override fun onEnable() {
// Register events and commands
server.pluginManager.registerEvents(this, this)
logger.info("${ChatColor.GREEN}EasyAdmin plugin enabled!")
}
@@ -51,31 +58,24 @@ class Easyadmin : JavaPlugin(), Listener {
private fun openAdminMenu(player: Player) {
val inventory = Bukkit.createInventory(null, 27, menuName)
// Time control
inventory.setItem(10, createGuiItem(Material.CLOCK, "${ChatColor.YELLOW}Time Control",
"${ChatColor.GRAY}Click to cycle time"))
// Weather control
inventory.setItem(11, createGuiItem(Material.WATER_BUCKET, "${ChatColor.BLUE}Weather Control",
"${ChatColor.GRAY}Click to cycle weather"))
// Kick all players
inventory.setItem(12, createGuiItem(Material.IRON_BOOTS, "${ChatColor.RED}Kick All",
"${ChatColor.GRAY}Kick all non-admin players"))
// Player management
inventory.setItem(13, createGuiItem(Material.PLAYER_HEAD, "${ChatColor.GREEN}Player Management",
"${ChatColor.GRAY}Manage online players"))
// World management
inventory.setItem(14, createGuiItem(Material.GRASS_BLOCK, "${ChatColor.GOLD}World Management",
"${ChatColor.GRAY}Manage worlds"))
// Server properties
inventory.setItem(15, createGuiItem(Material.COMMAND_BLOCK, "${ChatColor.LIGHT_PURPLE}Server Settings",
"${ChatColor.GRAY}View and modify server properties"))
// Plugin management
inventory.setItem(16, createGuiItem(Material.BOOK, "${ChatColor.AQUA}Plugin Management",
"${ChatColor.GRAY}Enable/disable plugins"))
@@ -85,17 +85,100 @@ class Easyadmin : JavaPlugin(), Listener {
private fun createGuiItem(material: Material, name: String, vararg lore: String): ItemStack {
val item = ItemStack(material, 1)
val meta = item.itemMeta!!
meta.setDisplayName(name)
if (lore.isNotEmpty()) {
meta.lore = lore.toList()
}
if (lore.isNotEmpty()) meta.lore = lore.toList()
item.itemMeta = meta
return item
}
private fun getRandomKickMessage(playerName: String): String {
val messages = listOf(
/*
Schema:
"$playerName, blalblalblsalablsbl",
"nexte",
"ende"
*/
"$playerName wurde von Marians Hund getreten",
"$playerName wurde rausgeschmissen",
"$playerName wurde von Temu versandt"
)
return "${ChatColor.GOLD}${messages.random()}"
}
private fun getRandomBanMessage(playerName: String): String {
val messages = listOf(
/*
Schema:
"$playerName, blalblalblsalablsbl",
"nexte",
"ende"
*/
"$playerName, Salvete Servus!",
"$playerName wurde von Marians Hund gegessen!",
"$playerName ist Analgefickt worden"
)
return "${ChatColor.RED}${messages.random()}"
}
private fun spawnFireworks(player: Player) {
val loc = player.location
val firework = player.world.spawn(loc, Firework::class.java)
val meta = firework.fireworkMeta
val effect = FireworkEffect.builder()
.with(FireworkEffect.Type.BURST)
.withColor(org.bukkit.Color.RED)
.withFade(org.bukkit.Color.ORANGE)
.withFlicker()
.build()
meta.addEffect(effect)
meta.power = 1
firework.fireworkMeta = meta
player.world.playSound(loc, Sound.ENTITY_FIREWORK_ROCKET_BLAST, 1f, 1f)
player.world.spawnParticle(Particle.FIREWORK, loc, 100, 0.5, 0.5, 0.5, 0.1)
}
@EventHandler(priority = EventPriority.HIGH)
fun onPlayerChat(event: PlayerChatEvent) {
val player = event.player
val banData = banReasons[player.uniqueId] ?: return
event.isCancelled = true
val reason = event.message
val targetPlayer = banData.second
val targetName = targetPlayer.name
if (reason.equals("cancel", ignoreCase = true)) {
player.sendMessage("${ChatColor.RED}Cancelled ban for $targetName")
} else {
val banMessage = getRandomBanMessage(targetName)
Bukkit.broadcastMessage(banMessage)
if (targetPlayer.isOnline) spawnFireworks(targetPlayer)
targetPlayer.banPlayer("${ChatColor.RED}You have been banned by ${player.name}\n" +
"${ChatColor.RED}Reason: $reason")
player.sendMessage("${ChatColor.RED}Banned $targetName for: $reason")
if (targetPlayer.isOnline) {
targetPlayer.kickPlayer("${ChatColor.RED}You have been banned by ${player.name}\n" +
"${ChatColor.RED}Reason: $reason")
}
}
banReasons.remove(player.uniqueId)
}
@EventHandler
fun onInventoryClick(event: InventoryClickEvent) {
val title = event.view.title
@@ -103,10 +186,9 @@ class Easyadmin : JavaPlugin(), Listener {
if (!player.hasPermission("easyadmin.use")) return
// Handle clicks in the main menu
// Main menu
if (title == menuName) {
event.isCancelled = true
when (event.slot) {
10 -> handleTimeControl(player)
11 -> handleWeatherControl(player)
@@ -119,44 +201,39 @@ class Easyadmin : JavaPlugin(), Listener {
return
}
// Handle player management menu
// Player management
if (title == "${ChatColor.GREEN}${ChatColor.BOLD}Player Management") {
event.isCancelled = true
if (event.slot == 53) { openAdminMenu(player); return }
val clickedItem = event.currentItem ?: return
if (clickedItem.type != Material.PLAYER_HEAD) return
if (clickedItem.type != Material.PLAYER_HEAD && clickedItem.type != Material.ARROW) return
if (clickedItem.type == Material.ARROW) { openAdminMenu(player); return }
val itemMeta = clickedItem.itemMeta ?: return
val displayName = itemMeta.displayName
val targetPlayerName = ChatColor.stripColor(displayName) ?: return
val targetPlayer = Bukkit.getPlayerExact(ChatColor.stripColor(itemMeta.displayName) ?: return) ?: return
val targetPlayer = Bukkit.getPlayerExact(targetPlayerName) ?: return
// Left click: teleport to player
if (event.isLeftClick) {
player.teleport(targetPlayer.location)
player.sendMessage("${ChatColor.GREEN}Teleported to ${targetPlayer.name}!")
player.closeInventory()
}
// Right click: open player options menu
else if (event.isRightClick) {
} else if (event.isRightClick) {
openPlayerOptionsMenu(player, targetPlayer)
}
return
}
// Handle world management menu
// World management
if (title == "${ChatColor.GOLD}${ChatColor.BOLD}World Management") {
event.isCancelled = true
if (event.slot == 26) { openAdminMenu(player); return }
val clickedItem = event.currentItem ?: return
if (clickedItem.type !in listOf(Material.GRASS_BLOCK, Material.NETHERRACK, Material.END_STONE)) return
if (clickedItem.type !in listOf(Material.GRASS_BLOCK, Material.NETHERRACK, Material.END_STONE, Material.ARROW)) return
if (clickedItem.type == Material.ARROW) { openAdminMenu(player); return }
val itemMeta = clickedItem.itemMeta ?: return
val displayName = itemMeta.displayName
val worldName = ChatColor.stripColor(displayName) ?: return
val world = Bukkit.getWorld(worldName) ?: return
val world = Bukkit.getWorld(ChatColor.stripColor(itemMeta.displayName) ?: return) ?: return
player.teleport(world.spawnLocation)
player.sendMessage("${ChatColor.GREEN}Teleported to ${world.name}'s spawn point!")
@@ -164,9 +241,10 @@ class Easyadmin : JavaPlugin(), Listener {
return
}
// Handle server settings menu
// Server settings
if (title == "${ChatColor.LIGHT_PURPLE}${ChatColor.BOLD}Server Settings") {
event.isCancelled = true
if (event.slot == 26) { openAdminMenu(player); return }
when (event.slot) {
10 -> cycleDifficulty(player)
@@ -177,24 +255,21 @@ class Easyadmin : JavaPlugin(), Listener {
15 -> saveAllWorlds(player)
16 -> player.sendMessage("${ChatColor.YELLOW}Server restart requires additional configuration.")
}
// Refresh the menu to show updated settings
openServerSettings(player)
return
}
// Handle plugin management menu
// Plugin management
if (title == "${ChatColor.AQUA}${ChatColor.BOLD}Plugin Management") {
event.isCancelled = true
if (event.slot == 53) { openAdminMenu(player); return }
val clickedItem = event.currentItem ?: return
if (clickedItem.type !in listOf(Material.LIME_DYE, Material.GRAY_DYE)) return
if (clickedItem.type !in listOf(Material.LIME_DYE, Material.GRAY_DYE, Material.ARROW)) return
if (clickedItem.type == Material.ARROW) { openAdminMenu(player); return }
val itemMeta = clickedItem.itemMeta ?: return
val displayName = itemMeta.displayName
val pluginName = ChatColor.stripColor(displayName) ?: return
val plugin = Bukkit.getPluginManager().getPlugin(pluginName) ?: return
val plugin = Bukkit.getPluginManager().getPlugin(ChatColor.stripColor(itemMeta.displayName) ?: return) ?: return
if (plugin.name == "EasyAdmin") {
player.sendMessage("${ChatColor.RED}You cannot disable the EasyAdmin plugin from within itself!")
@@ -208,16 +283,13 @@ class Easyadmin : JavaPlugin(), Listener {
Bukkit.getPluginManager().enablePlugin(plugin)
player.sendMessage("${ChatColor.GREEN}Enabled plugin: ${plugin.name}")
}
// Refresh the plugin management menu
openPluginManagement(player)
return
}
// Handle player options menu
// Player options
if (title.startsWith("${ChatColor.YELLOW}Player: ")) {
event.isCancelled = true
val targetPlayerName = title.substring("${ChatColor.YELLOW}Player: ".length)
val targetPlayer = Bukkit.getPlayerExact(targetPlayerName) ?: return
@@ -236,11 +308,22 @@ class Easyadmin : JavaPlugin(), Listener {
13 -> healPlayer(player, targetPlayer)
14 -> kickPlayer(player, targetPlayer)
15 -> {
// Open ban interface (simplified for this example)
player.sendMessage("${ChatColor.YELLOW}Use /ban ${targetPlayer.name} <reason> to ban this player.")
banReasons[player.uniqueId] = Pair("", targetPlayer)
player.closeInventory()
player.sendMessage("${ChatColor.YELLOW}Please enter a ban reason in chat.")
player.sendMessage("${ChatColor.YELLOW}Type 'cancel' to cancel the ban.")
}
16 -> {
if (targetPlayer == player) {
player.sendMessage("${ChatColor.RED}You can't spectate yourself!")
return
}
player.gameMode = org.bukkit.GameMode.SPECTATOR
player.teleport(targetPlayer)
player.sendMessage("${ChatColor.GREEN}Now spectating ${targetPlayer.name}!")
player.closeInventory()
}
26 -> openPlayerManagement(player) // Back button
26 -> openPlayerManagement(player)
}
return
}
@@ -249,10 +332,10 @@ class Easyadmin : JavaPlugin(), Listener {
private fun handleTimeControl(player: Player) {
val world = player.world
when (world.time) {
in 0..6000 -> world.time = 6000 // Set to noon
in 6001..12000 -> world.time = 12000 // Set to sunset
in 12001..18000 -> world.time = 18000 // Set to midnight
else -> world.time = 0 // Set to sunrise
in 0..6000 -> world.time = 6000
in 6001..12000 -> world.time = 12000
in 12001..18000 -> world.time = 18000
else -> world.time = 0
}
player.sendMessage("${ChatColor.GREEN}Time changed in ${world.name}!")
}
@@ -283,6 +366,8 @@ class Easyadmin : JavaPlugin(), Listener {
for (onlinePlayer in Bukkit.getOnlinePlayers()) {
if (!onlinePlayer.hasPermission("easyadmin.exempt") && onlinePlayer != player) {
Bukkit.broadcastMessage(getRandomKickMessage(onlinePlayer.name))
spawnFireworks(onlinePlayer)
onlinePlayer.kickPlayer(kickMessage)
kickCount++
}
@@ -296,60 +381,59 @@ class Easyadmin : JavaPlugin(), Listener {
var slot = 0
for (onlinePlayer in Bukkit.getOnlinePlayers()) {
if (slot >= 54) break
if (slot >= 53) break
val playerHead = ItemStack(Material.PLAYER_HEAD, 1)
val meta = playerHead.itemMeta!!
meta.setDisplayName("${ChatColor.YELLOW}${onlinePlayer.name}")
val lore = mutableListOf<String>()
lore.add("${ChatColor.GRAY}Health: ${ChatColor.RED}${onlinePlayer.health}")
lore.add("${ChatColor.GRAY}Gamemode: ${ChatColor.GOLD}${onlinePlayer.gameMode}")
lore.add("${ChatColor.GRAY}World: ${ChatColor.GREEN}${onlinePlayer.world.name}")
lore.add("")
lore.add("${ChatColor.GREEN}Left-click: ${ChatColor.WHITE}Teleport to player")
lore.add("${ChatColor.RED}Right-click: ${ChatColor.WHITE}More options")
val lore = mutableListOf(
"${ChatColor.GRAY}Health: ${ChatColor.RED}${onlinePlayer.health}",
"${ChatColor.GRAY}Gamemode: ${ChatColor.GOLD}${onlinePlayer.gameMode}",
"${ChatColor.GRAY}World: ${ChatColor.GREEN}${onlinePlayer.world.name}",
"",
"${ChatColor.GREEN}Left-click: ${ChatColor.WHITE}Teleport to player",
"${ChatColor.RED}Right-click: ${ChatColor.WHITE}More options"
)
meta.lore = lore
playerHead.itemMeta = meta
inventory.setItem(slot, playerHead)
slot++
}
inventory.setItem(53, createGuiItem(Material.ARROW, "${ChatColor.YELLOW}Back",
"${ChatColor.GRAY}Return to main menu"))
player.openInventory(inventory)
}
private fun openPlayerOptionsMenu(player: Player, targetPlayer: Player) {
val inventory = Bukkit.createInventory(null, 27, "${ChatColor.YELLOW}Player: ${targetPlayer.name}")
// Teleport to player
inventory.setItem(10, createGuiItem(Material.ENDER_PEARL, "${ChatColor.GREEN}Teleport to Player",
"${ChatColor.GRAY}Teleport to ${targetPlayer.name}"))
// Teleport player to you
inventory.setItem(11, createGuiItem(Material.ENDER_EYE, "${ChatColor.BLUE}Teleport Player to You",
"${ChatColor.GRAY}Teleport ${targetPlayer.name} to your location"))
// Change player gamemode
inventory.setItem(12, createGuiItem(Material.DIAMOND_SWORD, "${ChatColor.GOLD}Change Gamemode",
"${ChatColor.GRAY}Current: ${ChatColor.WHITE}${targetPlayer.gameMode}",
"${ChatColor.GRAY}Click to cycle"))
// Heal player
inventory.setItem(13, createGuiItem(Material.GOLDEN_APPLE, "${ChatColor.LIGHT_PURPLE}Heal Player",
"${ChatColor.GRAY}Health: ${ChatColor.RED}${targetPlayer.health}/${targetPlayer.maxHealth}",
"${ChatColor.GRAY}Click to restore health and hunger"))
// Kick player
inventory.setItem(14, createGuiItem(Material.IRON_BOOTS, "${ChatColor.RED}Kick Player",
"${ChatColor.GRAY}Kick ${targetPlayer.name} from the server"))
// Ban player
inventory.setItem(15, createGuiItem(Material.BARRIER, "${ChatColor.DARK_RED}Ban Player",
"${ChatColor.GRAY}Ban ${targetPlayer.name} from the server"))
// Back button
inventory.setItem(16, createGuiItem(Material.ENDER_EYE, "${ChatColor.AQUA}Spectate Player",
"${ChatColor.GRAY}Spectate ${targetPlayer.name}"))
inventory.setItem(26, createGuiItem(Material.ARROW, "${ChatColor.YELLOW}Back",
"${ChatColor.GRAY}Return to player list"))
@@ -357,9 +441,7 @@ class Easyadmin : JavaPlugin(), Listener {
}
private fun cycleGamemode(player: Player, targetPlayer: Player) {
val currentGamemode = targetPlayer.gameMode
val newGamemode = when (currentGamemode) {
val newGamemode = when (targetPlayer.gameMode) {
org.bukkit.GameMode.SURVIVAL -> org.bukkit.GameMode.CREATIVE
org.bukkit.GameMode.CREATIVE -> org.bukkit.GameMode.ADVENTURE
org.bukkit.GameMode.ADVENTURE -> org.bukkit.GameMode.SPECTATOR
@@ -369,8 +451,6 @@ class Easyadmin : JavaPlugin(), Listener {
targetPlayer.gameMode = newGamemode
player.sendMessage("${ChatColor.GREEN}Set ${targetPlayer.name}'s gamemode to $newGamemode.")
targetPlayer.sendMessage("${ChatColor.GREEN}Your gamemode was set to $newGamemode by ${player.name}.")
// Refresh the player options menu
openPlayerOptionsMenu(player, targetPlayer)
}
@@ -382,20 +462,22 @@ class Easyadmin : JavaPlugin(), Listener {
player.sendMessage("${ChatColor.GREEN}Healed ${targetPlayer.name}.")
targetPlayer.sendMessage("${ChatColor.GREEN}You were healed by ${player.name}.")
// Refresh the player options menu
openPlayerOptionsMenu(player, targetPlayer)
}
private fun kickPlayer(player: Player, targetPlayer: Player) {
private fun kickPlayer(admin: Player, targetPlayer: Player) {
if (targetPlayer.hasPermission("easyadmin.exempt")) {
player.sendMessage("${ChatColor.RED}You cannot kick ${targetPlayer.name} as they are exempt!")
admin.sendMessage("${ChatColor.RED}You cannot kick ${targetPlayer.name} as they are exempt!")
return
}
val kickMessage = getRandomKickMessage(targetPlayer.name)
Bukkit.broadcastMessage(kickMessage)
spawnFireworks(targetPlayer)
targetPlayer.kickPlayer("${ChatColor.RED}You have been kicked by an administrator.")
player.sendMessage("${ChatColor.GREEN}Kicked ${targetPlayer.name} from the server.")
player.closeInventory()
admin.sendMessage("${ChatColor.GREEN}Kicked ${targetPlayer.name} from the server.")
admin.closeInventory()
}
private fun openWorldManagement(player: Player) {
@@ -403,100 +485,91 @@ class Easyadmin : JavaPlugin(), Listener {
var slot = 0
for (world in Bukkit.getWorlds()) {
if (slot >= 27) break
if (slot >= 26) break
val worldIcon = ItemStack(Material.GRASS_BLOCK, 1)
if (world.environment == org.bukkit.World.Environment.NETHER) {
worldIcon.type = Material.NETHERRACK
} else if (world.environment == org.bukkit.World.Environment.THE_END) {
worldIcon.type = Material.END_STONE
}
val worldIcon = ItemStack(when (world.environment) {
org.bukkit.World.Environment.NETHER -> Material.NETHERRACK
org.bukkit.World.Environment.THE_END -> Material.END_STONE
else -> Material.GRASS_BLOCK
}, 1)
val meta = worldIcon.itemMeta!!
meta.setDisplayName("${ChatColor.YELLOW}${world.name}")
val lore = mutableListOf<String>()
lore.add("${ChatColor.GRAY}Players: ${ChatColor.WHITE}${world.players.size}")
lore.add("${ChatColor.GRAY}Time: ${ChatColor.WHITE}${world.time}")
lore.add("${ChatColor.GRAY}Weather: ${ChatColor.WHITE}${if (world.hasStorm()) "Raining" else "Clear"}")
lore.add("")
lore.add("${ChatColor.GREEN}Click: ${ChatColor.WHITE}Teleport to world spawn")
meta.lore = listOf(
"${ChatColor.GRAY}Players: ${ChatColor.WHITE}${world.players.size}",
"${ChatColor.GRAY}Time: ${ChatColor.WHITE}${world.time}",
"${ChatColor.GRAY}Weather: ${ChatColor.WHITE}${if (world.hasStorm()) "Raining" else "Clear"}",
"",
"${ChatColor.GREEN}Click: ${ChatColor.WHITE}Teleport to world spawn"
)
meta.lore = lore
worldIcon.itemMeta = meta
inventory.setItem(slot, worldIcon)
slot++
}
inventory.setItem(26, createGuiItem(Material.ARROW, "${ChatColor.YELLOW}Back",
"${ChatColor.GRAY}Return to main menu"))
player.openInventory(inventory)
}
private fun openServerSettings(player: Player) {
val inventory = Bukkit.createInventory(null, 27, "${ChatColor.LIGHT_PURPLE}${ChatColor.BOLD}Server Settings")
// Difficulty setting
inventory.setItem(10, createGuiItem(Material.ZOMBIE_HEAD, "${ChatColor.RED}Difficulty",
"${ChatColor.GRAY}Current: ${ChatColor.WHITE}${player.world.difficulty}",
"${ChatColor.GRAY}Click to cycle"))
// Gamemode setting
inventory.setItem(11, createGuiItem(Material.DIAMOND_SWORD, "${ChatColor.BLUE}Default Gamemode",
"${ChatColor.GRAY}Current: ${ChatColor.WHITE}${Bukkit.getDefaultGameMode()}",
"${ChatColor.GRAY}Click to cycle"))
// Toggle mob spawning
val spawnMobs = player.world.getGameRuleValue(org.bukkit.GameRule.DO_MOB_SPAWNING) ?: true
inventory.setItem(12, createGuiItem(Material.SPAWNER, "${ChatColor.GREEN}Mob Spawning",
"${ChatColor.GRAY}Current: ${if (spawnMobs) "${ChatColor.GREEN}Enabled" else "${ChatColor.RED}Disabled"}",
"${ChatColor.GRAY}Click to toggle mob spawning"))
// PVP toggle
inventory.setItem(13, createGuiItem(Material.GOLDEN_SWORD, "${ChatColor.GOLD}PVP",
"${ChatColor.GRAY}Current: ${if (player.world.pvp) "${ChatColor.GREEN}Enabled" else "${ChatColor.RED}Disabled"}",
"${ChatColor.GRAY}Click to toggle PVP"))
// Whitelist
inventory.setItem(14, createGuiItem(Material.PAPER, "${ChatColor.WHITE}Whitelist",
"${ChatColor.GRAY}Current: ${if (Bukkit.hasWhitelist()) "${ChatColor.GREEN}Enabled" else "${ChatColor.RED}Disabled"}",
"${ChatColor.GRAY}Click to toggle whitelist"))
// Save all worlds
inventory.setItem(15, createGuiItem(Material.FLOWER_POT, "${ChatColor.AQUA}Save All",
"${ChatColor.GRAY}Click to save all worlds"))
// Restart server (placeholder)
inventory.setItem(16, createGuiItem(Material.REDSTONE_BLOCK, "${ChatColor.DARK_RED}Restart Server",
"${ChatColor.GRAY}Click to restart server",
"${ChatColor.RED}This requires additional setup"))
inventory.setItem(26, createGuiItem(Material.ARROW, "${ChatColor.YELLOW}Back",
"${ChatColor.GRAY}Return to main menu"))
player.openInventory(inventory)
}
private fun cycleDifficulty(player: Player) {
val world = player.world
val difficulty = world.difficulty
world.difficulty = when (difficulty) {
world.difficulty = when (world.difficulty) {
org.bukkit.Difficulty.PEACEFUL -> org.bukkit.Difficulty.EASY
org.bukkit.Difficulty.EASY -> org.bukkit.Difficulty.NORMAL
org.bukkit.Difficulty.NORMAL -> org.bukkit.Difficulty.HARD
org.bukkit.Difficulty.HARD -> org.bukkit.Difficulty.PEACEFUL
}
player.sendMessage("${ChatColor.GREEN}Difficulty set to ${world.difficulty} in ${world.name}.")
}
private fun cycleDefaultGamemode(player: Player) {
val currentGamemode = Bukkit.getDefaultGameMode()
val newGamemode = when (currentGamemode) {
val newGamemode = when (Bukkit.getDefaultGameMode()) {
org.bukkit.GameMode.SURVIVAL -> org.bukkit.GameMode.CREATIVE
org.bukkit.GameMode.CREATIVE -> org.bukkit.GameMode.ADVENTURE
org.bukkit.GameMode.ADVENTURE -> org.bukkit.GameMode.SPECTATOR
org.bukkit.GameMode.SPECTATOR -> org.bukkit.GameMode.SURVIVAL
}
Bukkit.setDefaultGameMode(newGamemode)
player.sendMessage("${ChatColor.GREEN}Default gamemode set to $newGamemode.")
}
@@ -504,7 +577,6 @@ class Easyadmin : JavaPlugin(), Listener {
private fun toggleMobSpawning(player: Player) {
val world = player.world
val currentValue = world.getGameRuleValue(org.bukkit.GameRule.DO_MOB_SPAWNING) ?: true
world.setGameRule(org.bukkit.GameRule.DO_MOB_SPAWNING, !currentValue)
player.sendMessage("${ChatColor.GREEN}Mob spawning ${if (!currentValue) "enabled" else "disabled"} in ${world.name}.")
}
@@ -512,22 +584,17 @@ class Easyadmin : JavaPlugin(), Listener {
private fun togglePvP(player: Player) {
val world = player.world
world.pvp = !world.pvp
player.sendMessage("${ChatColor.GREEN}PvP ${if (world.pvp) "enabled" else "disabled"} in ${world.name}.")
}
private fun toggleWhitelist(player: Player) {
val currentValue = Bukkit.hasWhitelist()
Bukkit.setWhitelist(!currentValue)
player.sendMessage("${ChatColor.GREEN}Whitelist ${if (!currentValue) "enabled" else "disabled"}.")
}
private fun saveAllWorlds(player: Player) {
for (world in Bukkit.getWorlds()) {
world.save()
}
Bukkit.getWorlds().forEach { it.save() }
player.sendMessage("${ChatColor.GREEN}All worlds have been saved.")
}
@@ -536,22 +603,25 @@ class Easyadmin : JavaPlugin(), Listener {
var slot = 0
for (plugin in Bukkit.getPluginManager().plugins) {
if (slot >= 54) break
if (slot >= 53) break
val enabled = plugin.isEnabled
val material = if (enabled) Material.LIME_DYE else Material.GRAY_DYE
val pluginItem = createGuiItem(material,
val pluginItem = createGuiItem(
if (enabled) Material.LIME_DYE else Material.GRAY_DYE,
"${if (enabled) ChatColor.GREEN else ChatColor.RED}${plugin.name}",
"${ChatColor.GRAY}Version: ${ChatColor.WHITE}${plugin.description.version}",
"${ChatColor.GRAY}Status: ${if (enabled) "${ChatColor.GREEN}Enabled" else "${ChatColor.RED}Disabled"}",
"",
"${ChatColor.YELLOW}Click to ${if (enabled) "disable" else "enable"}")
"${ChatColor.YELLOW}Click to ${if (enabled) "disable" else "enable"}"
)
inventory.setItem(slot, pluginItem)
slot++
}
inventory.setItem(53, createGuiItem(Material.ARROW, "${ChatColor.YELLOW}Back",
"${ChatColor.GRAY}Return to main menu"))
player.openInventory(inventory)
}
}