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
|
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
|
* Logging handler
|
||||||
*/
|
*/
|
||||||
@JvmStatic fun log(message: String) {
|
@JvmStatic fun log(message: String) {
|
||||||
if (ConfigOptions.debugLog) {
|
if (ConfigOptions.debugLog) {
|
||||||
instance.logger.info(message)
|
instance.logger.info(message)
|
||||||
|
addToLogQueue(message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vebose Logging handler
|
* Vebose Logging handler
|
||||||
*/
|
*/
|
||||||
fun verboseLog(message: String) {
|
@JvmStatic fun verboseLog(message: String) {
|
||||||
if (ConfigOptions.verboseDebugLog) {
|
if (ConfigOptions.verboseDebugLog) {
|
||||||
instance.logger.info(message)
|
instance.logger.info(message)
|
||||||
|
addToLogQueue(message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,9 @@ object ConfigOptions {
|
||||||
private const val DEFAULT_DEBUG_LOG = false
|
private const val DEFAULT_DEBUG_LOG = false
|
||||||
private const val DEFAULT_VERBOSE_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
|
// Dialog menu rename
|
||||||
const val DEFAULT_DIALOG_RENAME_ENABLED = false
|
const val DEFAULT_DIALOG_RENAME_ENABLED = false
|
||||||
const val DEFAULT_DIALOG_MAX_SIZE = 256
|
const val DEFAULT_DIALOG_MAX_SIZE = 256
|
||||||
|
|
@ -436,6 +439,9 @@ object ConfigOptions {
|
||||||
*/
|
*/
|
||||||
val debugLog: Boolean
|
val debugLog: Boolean
|
||||||
get() {
|
get() {
|
||||||
|
val overrider = OVERRIDE_DEBUG_LOG
|
||||||
|
if(overrider != null) return overrider
|
||||||
|
|
||||||
return ConfigHolder.DEFAULT_CONFIG
|
return ConfigHolder.DEFAULT_CONFIG
|
||||||
.config
|
.config
|
||||||
.getBoolean(DEBUG_LOGGING, DEFAULT_DEBUG_LOG)
|
.getBoolean(DEBUG_LOGGING, DEFAULT_DEBUG_LOG)
|
||||||
|
|
@ -446,6 +452,9 @@ object ConfigOptions {
|
||||||
*/
|
*/
|
||||||
val verboseDebugLog: Boolean
|
val verboseDebugLog: Boolean
|
||||||
get() {
|
get() {
|
||||||
|
val overrider = OVERRIDE_VERBOSE_DEBUG_LOG
|
||||||
|
if(overrider != null) return overrider
|
||||||
|
|
||||||
return ConfigHolder.DEFAULT_CONFIG
|
return ConfigHolder.DEFAULT_CONFIG
|
||||||
.config
|
.config
|
||||||
.getBoolean(VERBOSE_DEBUG_LOGGING, DEFAULT_VERBOSE_DEBUG_LOG)
|
.getBoolean(VERBOSE_DEBUG_LOGGING, DEFAULT_VERBOSE_DEBUG_LOG)
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ class CustomAnvilCommand(plugin: CustomAnvil) : CommandExecutor, TabCompleter {
|
||||||
"gui", editConfigCommand,
|
"gui", editConfigCommand,
|
||||||
"reload", ReloadExecutor(),
|
"reload", ReloadExecutor(),
|
||||||
"diagnostic", DiagnosticExecutor(),
|
"diagnostic", DiagnosticExecutor(),
|
||||||
|
"debug", DebugToggleExecutor(),
|
||||||
"help", helpCommand,
|
"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() {
|
class DiagnosticExecutor: CASubCommand() {
|
||||||
|
|
||||||
companion object{
|
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 {
|
fun fetchNMSType(): String {
|
||||||
val packetManager = DependencyManager.packetManager
|
val packetManager = DependencyManager.packetManager
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue