Add a reload command for Config
This commit is contained in:
@@ -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