Add a reload command for Config
This commit is contained in:
@@ -5,7 +5,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "xyz.lncvrt"
|
group = "xyz.lncvrt"
|
||||||
version = "1.0.1"
|
version = "1.0.2"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
@@ -20,6 +20,8 @@ repositories {
|
|||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT")
|
compileOnly("io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT")
|
||||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
||||||
|
implementation("org.incendo:cloud-paper:2.0.0-beta.10")
|
||||||
|
implementation("org.incendo:cloud-kotlin-extensions:2.0.0")
|
||||||
}
|
}
|
||||||
|
|
||||||
val targetJavaVersion = 17
|
val targetJavaVersion = 17
|
||||||
|
|||||||
@@ -3,26 +3,42 @@ package xyz.lncvrt.galaxytab
|
|||||||
import net.kyori.adventure.text.Component
|
import net.kyori.adventure.text.Component
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage
|
import net.kyori.adventure.text.minimessage.MiniMessage
|
||||||
import org.bukkit.configuration.file.FileConfiguration
|
import org.bukkit.configuration.file.FileConfiguration
|
||||||
|
import org.bukkit.entity.Player
|
||||||
import org.bukkit.event.EventHandler
|
import org.bukkit.event.EventHandler
|
||||||
import org.bukkit.event.Listener
|
import org.bukkit.event.Listener
|
||||||
import org.bukkit.event.player.PlayerJoinEvent
|
import org.bukkit.event.player.PlayerJoinEvent
|
||||||
import org.bukkit.plugin.java.JavaPlugin
|
import org.bukkit.plugin.java.JavaPlugin
|
||||||
|
import xyz.lncvrt.galaxytab.commands.GalaxyTabCommand
|
||||||
import java.lang.String
|
import java.lang.String
|
||||||
|
|
||||||
class GalaxyTab : JavaPlugin(), Listener {
|
class GalaxyTab : JavaPlugin(), Listener {
|
||||||
private val miniMessage = MiniMessage.miniMessage()
|
private val miniMessage = MiniMessage.miniMessage()
|
||||||
private var configFile: FileConfiguration? = null
|
var configFile: FileConfiguration? = null
|
||||||
|
|
||||||
override fun onEnable() {
|
override fun onEnable() {
|
||||||
|
instance = this
|
||||||
saveDefaultConfig()
|
saveDefaultConfig()
|
||||||
configFile = config
|
configFile = config
|
||||||
server.pluginManager.registerEvents(this, this)
|
server.pluginManager.registerEvents(this, this)
|
||||||
|
GalaxyTabCommand()
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
fun onPlayerJoinEvent(event: PlayerJoinEvent) {
|
fun onPlayerJoinEvent(event: PlayerJoinEvent) {
|
||||||
val header: Component = miniMessage.deserialize(String.join("\n", config.getStringList("header")))
|
setTab(event.player)
|
||||||
val footer: Component = miniMessage.deserialize(String.join("\n", config.getStringList("footer")))
|
}
|
||||||
event.getPlayer().sendPlayerListHeaderAndFooter(header, footer)
|
|
||||||
|
fun setTab(player: Player) {
|
||||||
|
val header: Component = miniMessage.deserialize(String.join("\n", configFile?.getStringList("header")))
|
||||||
|
val footer: Component = miniMessage.deserialize(String.join("\n", configFile?.getStringList("footer")))
|
||||||
|
player.sendPlayerListHeaderAndFooter(header, footer)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private lateinit var instance: GalaxyTab
|
||||||
|
|
||||||
|
fun getInstance(): GalaxyTab {
|
||||||
|
return instance
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package xyz.lncvrt.galaxytab.commands
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage
|
||||||
|
import org.incendo.cloud.kotlin.MutableCommandBuilder
|
||||||
|
import xyz.lncvrt.galaxytab.GalaxyTab
|
||||||
|
import xyz.lncvrt.galaxytab.commands.api.BukkitCommand
|
||||||
|
import xyz.lncvrt.galaxytab.commands.api.BukkitSender
|
||||||
|
|
||||||
|
class GalaxyTabCommand : BukkitCommand(GalaxyTab.getInstance(), "galaxytab", arrayOf("tab")) {
|
||||||
|
override fun rootBuilder(builder: MutableCommandBuilder<BukkitSender>) {
|
||||||
|
builder.handler { context ->
|
||||||
|
val sender = context.sender().platformSender()
|
||||||
|
val miniMessage = MiniMessage.miniMessage()
|
||||||
|
|
||||||
|
sender.sendMessage(miniMessage.deserialize("<rainbow>GalaxyTab</rainbow> <light_purple>by Lncvrt</light_purple>"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
rawCommandBuilder().registerCopy {
|
||||||
|
literal("reload")
|
||||||
|
permission("${GalaxyTab.getInstance().name.lowercase()}.reload")
|
||||||
|
handler { context ->
|
||||||
|
val sender = context.sender().platformSender()
|
||||||
|
val miniMessage = MiniMessage.miniMessage()
|
||||||
|
val instance = GalaxyTab.getInstance()
|
||||||
|
|
||||||
|
instance.saveDefaultConfig()
|
||||||
|
instance.reloadConfig()
|
||||||
|
instance.configFile = instance.config
|
||||||
|
for (player in instance.server.onlinePlayers) instance.setTab(player)
|
||||||
|
|
||||||
|
sender.sendMessage(miniMessage.deserialize("<rainbow>GalaxyTab</rainbow> <light_purple>has been reloaded!</light_purple>"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package xyz.lncvrt.galaxytab.commands.api
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin
|
||||||
|
import org.incendo.cloud.SenderMapper
|
||||||
|
import org.incendo.cloud.description.Description
|
||||||
|
import org.incendo.cloud.execution.ExecutionCoordinator
|
||||||
|
import org.incendo.cloud.kotlin.MutableCommandBuilder
|
||||||
|
import org.incendo.cloud.kotlin.extension.buildAndRegister
|
||||||
|
import org.incendo.cloud.kotlin.extension.commandBuilder
|
||||||
|
import org.incendo.cloud.paper.LegacyPaperCommandManager
|
||||||
|
import org.incendo.cloud.setting.ManagerSetting
|
||||||
|
|
||||||
|
abstract class BukkitCommand(
|
||||||
|
plugin: JavaPlugin,
|
||||||
|
private val name: String,
|
||||||
|
private val aliases: Array<String>
|
||||||
|
) {
|
||||||
|
private val manager = LegacyPaperCommandManager(
|
||||||
|
plugin,
|
||||||
|
ExecutionCoordinator.simpleCoordinator(),
|
||||||
|
SenderMapper.create({ commandSender: CommandSender -> BukkitSender(commandSender) }, { bukkitSender: BukkitSender -> bukkitSender.platformSender() })
|
||||||
|
)
|
||||||
|
private val command: MutableCommandBuilder<BukkitSender>
|
||||||
|
|
||||||
|
init {
|
||||||
|
manager.settings().set(ManagerSetting.OVERRIDE_EXISTING_COMMANDS, true)
|
||||||
|
// manager.registerAsynchronousCompletions()
|
||||||
|
|
||||||
|
command = manager.buildAndRegister(name, Description.empty(), aliases) {
|
||||||
|
rootBuilder(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun rawCommandBuilder() = manager.commandBuilder(name, Description.empty(), aliases) { }
|
||||||
|
|
||||||
|
open fun rootBuilder(builder: MutableCommandBuilder<BukkitSender>) { }
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package xyz.lncvrt.galaxytab.commands.api
|
||||||
|
|
||||||
|
import net.kyori.adventure.audience.Audience
|
||||||
|
import net.kyori.adventure.text.Component
|
||||||
|
import net.kyori.adventure.text.format.TextColor
|
||||||
|
import org.bukkit.command.CommandSender
|
||||||
|
import org.bukkit.entity.Player
|
||||||
|
|
||||||
|
open class BukkitSender(
|
||||||
|
private var commandSender: CommandSender,
|
||||||
|
) {
|
||||||
|
private var onlinePlayersMessage = Component.text("Only players can use this command.")
|
||||||
|
.color(TextColor.color(192, 32, 16))
|
||||||
|
.asComponent()
|
||||||
|
|
||||||
|
fun player(): Player? {
|
||||||
|
if (commandSender is Player) return (commandSender as Player)
|
||||||
|
|
||||||
|
if (onlinePlayersMessage != Component.empty()) {
|
||||||
|
commandSender.sendMessage(onlinePlayersMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
fun audience(): Audience {
|
||||||
|
return commandSender
|
||||||
|
}
|
||||||
|
|
||||||
|
fun platformSender(): CommandSender {
|
||||||
|
return commandSender
|
||||||
|
}
|
||||||
|
|
||||||
|
fun platformSender(commandSender: CommandSender) {
|
||||||
|
this.commandSender = commandSender
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onlyPlayersComponent(onlinePlayersMessage: Component) {
|
||||||
|
this.onlinePlayersMessage = onlinePlayersMessage
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user