mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-08-28 08:25:56 +02:00
This commit is contained in:
parent
fcbe6ba3fb
commit
965ee33325
5 changed files with 140 additions and 2 deletions
|
|
@ -71,21 +71,35 @@ open class CustomAnvil : JavaPlugin() {
|
|||
|
||||
var latestVer: String? = null
|
||||
|
||||
// Debug
|
||||
val debugStorageQueue = ArrayDeque<String>()
|
||||
|
||||
private fun addToLogQueue(message: String) {
|
||||
if(debugStorageQueue.size >= 200) {
|
||||
// Let not store infinite debug logs lol
|
||||
debugStorageQueue.removeFirst()
|
||||
}
|
||||
|
||||
debugStorageQueue.addLast(message)
|
||||
}
|
||||
|
||||
/**
|
||||
* Logging handler
|
||||
*/
|
||||
@JvmStatic fun log(message: String) {
|
||||
if (ConfigOptions.debugLog) {
|
||||
instance.logger.info(message)
|
||||
addToLogQueue(message)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vebose Logging handler
|
||||
*/
|
||||
fun verboseLog(message: String) {
|
||||
@JvmStatic fun verboseLog(message: String) {
|
||||
if (ConfigOptions.verboseDebugLog) {
|
||||
instance.logger.info(message)
|
||||
addToLogQueue(message)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -128,6 +128,9 @@ object ConfigOptions {
|
|||
private const val DEFAULT_DEBUG_LOG = false
|
||||
private const val DEFAULT_VERBOSE_DEBUG_LOG = false
|
||||
|
||||
var OVERRIDE_DEBUG_LOG: Boolean? = null
|
||||
var OVERRIDE_VERBOSE_DEBUG_LOG: Boolean? = null
|
||||
|
||||
// Dialog menu rename
|
||||
const val DEFAULT_DIALOG_RENAME_ENABLED = false
|
||||
const val DEFAULT_DIALOG_MAX_SIZE = 256
|
||||
|
|
@ -436,6 +439,9 @@ object ConfigOptions {
|
|||
*/
|
||||
val debugLog: Boolean
|
||||
get() {
|
||||
val overrider = OVERRIDE_DEBUG_LOG
|
||||
if(overrider != null) return overrider
|
||||
|
||||
return ConfigHolder.DEFAULT_CONFIG
|
||||
.config
|
||||
.getBoolean(DEBUG_LOGGING, DEFAULT_DEBUG_LOG)
|
||||
|
|
@ -446,6 +452,9 @@ object ConfigOptions {
|
|||
*/
|
||||
val verboseDebugLog: Boolean
|
||||
get() {
|
||||
val overrider = OVERRIDE_VERBOSE_DEBUG_LOG
|
||||
if(overrider != null) return overrider
|
||||
|
||||
return ConfigHolder.DEFAULT_CONFIG
|
||||
.config
|
||||
.getBoolean(VERBOSE_DEBUG_LOGGING, DEFAULT_VERBOSE_DEBUG_LOG)
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ class CustomAnvilCommand(plugin: CustomAnvil) : CommandExecutor, TabCompleter {
|
|||
"gui", editConfigCommand,
|
||||
"reload", ReloadExecutor(),
|
||||
"diagnostic", DiagnosticExecutor(),
|
||||
"debug", DebugToggleExecutor(),
|
||||
"help", helpCommand,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,114 @@
|
|||
package xyz.alexcrea.cuanvil.command
|
||||
|
||||
import io.delilaheve.CustomAnvil
|
||||
import io.delilaheve.util.ConfigOptions
|
||||
import net.md_5.bungee.api.chat.ClickEvent
|
||||
import net.md_5.bungee.api.chat.HoverEvent
|
||||
import net.md_5.bungee.api.chat.TextComponent
|
||||
import net.md_5.bungee.api.chat.hover.content.Text
|
||||
import org.bukkit.ChatColor
|
||||
import org.bukkit.command.Command
|
||||
import org.bukkit.command.CommandSender
|
||||
import xyz.alexcrea.cuanvil.command.DiagnosticExecutor.Companion.NO_DIAG_PERM
|
||||
|
||||
class DebugToggleExecutor : CASubCommand() {
|
||||
|
||||
override fun description(): String {
|
||||
return "Used to toggle debug logs and retrieve it"
|
||||
}
|
||||
|
||||
override fun allowed(sender: CommandSender): Boolean {
|
||||
return sender.hasPermission(CustomAnvil.diagnosticPermission)
|
||||
}
|
||||
|
||||
override fun executeCommand(
|
||||
sender: CommandSender,
|
||||
cmd: Command,
|
||||
cmdstr: String,
|
||||
args: Array<out String>
|
||||
): Boolean {
|
||||
if (!allowed(sender)) {
|
||||
sender.sendMessage(NO_DIAG_PERM)
|
||||
return false
|
||||
}
|
||||
|
||||
if (args.isEmpty()) {
|
||||
sender.sendMessage("Need to specify a subcommand: \"toggle\" or \"get\"")
|
||||
return true
|
||||
}
|
||||
when (args[0].lowercase()) {
|
||||
"toggle" -> executeToggle(sender, args)
|
||||
"get" -> executeGet(sender)
|
||||
"get-and-clear" -> {
|
||||
executeGet(sender)
|
||||
CustomAnvil.debugStorageQueue.clear()
|
||||
}
|
||||
|
||||
"clear" -> {
|
||||
CustomAnvil.debugStorageQueue.clear()
|
||||
sender.sendMessage("Log Cleared")
|
||||
}
|
||||
|
||||
else -> return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
private fun executeToggle(sender: CommandSender, args: Array<out String>) {
|
||||
if (args.size < 2) {
|
||||
sender.sendMessage("Need to specify which type of debug to toggle: \"default\" or \"verbose\"")
|
||||
return
|
||||
}
|
||||
when (args[1].lowercase()) {
|
||||
"default" -> {
|
||||
ConfigOptions.OVERRIDE_DEBUG_LOG = !ConfigOptions.debugLog
|
||||
sender.sendMessage("Debug toggle to: ${ConfigOptions.debugLog}")
|
||||
}
|
||||
|
||||
"verbose" -> {
|
||||
ConfigOptions.OVERRIDE_VERBOSE_DEBUG_LOG = !ConfigOptions.verboseDebugLog
|
||||
sender.sendMessage("Debug toggle to: ${ConfigOptions.verboseDebugLog}")
|
||||
}
|
||||
|
||||
else -> sender.sendMessage("Invalid debug type: ${args[1]}")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun executeGet(sender: CommandSender) {
|
||||
val stb = StringBuilder("Debug Log data:")
|
||||
if (CustomAnvil.debugStorageQueue.isEmpty()) {
|
||||
sender.sendMessage("No log to show ? make sure you tried with debug log toggled (/ca debug toggle)")
|
||||
return
|
||||
}
|
||||
|
||||
stb.append("\nFound ${CustomAnvil.debugStorageQueue.size} lines\n")
|
||||
for (log in CustomAnvil.debugStorageQueue) {
|
||||
stb.append('\n').append(log)
|
||||
}
|
||||
|
||||
val message = TextComponent(ChatColor.GREEN.toString() + "Click to copy log data")
|
||||
|
||||
message.clickEvent = ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, stb.toString())
|
||||
message.hoverEvent = HoverEvent(HoverEvent.Action.SHOW_TEXT, Text("§7Click to copy"))
|
||||
|
||||
sender.spigot().sendMessage(message);
|
||||
}
|
||||
|
||||
override fun tabCompleter(sender: CommandSender, args: Array<out String>, list: MutableList<String>) {
|
||||
if (!allowed(sender)) return
|
||||
|
||||
list.addAll(
|
||||
when (args.size) {
|
||||
1 -> listOf("toggle", "get", "get-and-clear", "clear")
|
||||
2 -> when (args[0].lowercase()) {
|
||||
"toggle" -> listOf("default", "verbose")
|
||||
else -> listOf()
|
||||
}
|
||||
|
||||
else -> listOf()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -36,7 +36,7 @@ import java.util.stream.Collectors
|
|||
class DiagnosticExecutor: CASubCommand() {
|
||||
|
||||
companion object{
|
||||
private const val NO_DIAG_PERM = "You do not have permission to diagnostic this server"
|
||||
const val NO_DIAG_PERM = "You do not have permission to diagnostic this server"
|
||||
|
||||
fun fetchNMSType(): String {
|
||||
val packetManager = DependencyManager.packetManager
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue