Compare commits

..

No commits in common. "965ee333257be8b6f9d4a06c1b65364c8de1581b" and "8447233b1e15966fb03503cb1cb9b3ae2d8ded43" have entirely different histories.

9 changed files with 15 additions and 186 deletions

View file

@ -22,7 +22,7 @@ plugins {
}
group = "xyz.alexcrea"
version = "1.17.6"
version = "1.17.5"
val isDevBuild = System.getenv("SMALL_COMMIT_HASH") != null
val isPreRelease = System.getenv("IS_GITHUB_PRERELEASE") == "true"

View file

@ -71,35 +71,21 @@ 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
*/
@JvmStatic fun verboseLog(message: String) {
fun verboseLog(message: String) {
if (ConfigOptions.verboseDebugLog) {
instance.logger.info(message)
addToLogQueue(message)
}
}

View file

@ -128,9 +128,6 @@ 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
@ -439,9 +436,6 @@ 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)
@ -452,9 +446,6 @@ 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)

View file

@ -22,7 +22,6 @@ class CustomAnvilCommand(plugin: CustomAnvil) : CommandExecutor, TabCompleter {
"gui", editConfigCommand,
"reload", ReloadExecutor(),
"diagnostic", DiagnosticExecutor(),
"debug", DebugToggleExecutor(),
"help", helpCommand,
)

View file

@ -1,114 +0,0 @@
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()
}
)
}
}

View file

@ -36,7 +36,7 @@ import java.util.stream.Collectors
class DiagnosticExecutor: CASubCommand() {
companion object{
const val NO_DIAG_PERM = "You do not have permission to diagnostic this server"
private const val NO_DIAG_PERM = "You do not have permission to diagnostic this server"
fun fetchNMSType(): String {
val packetManager = DependencyManager.packetManager

View file

@ -107,17 +107,12 @@ class AnvilResultListener : Listener {
if (canMerge) {
val result = AnvilMergeLogic.doMerge(view, inventory, player, leftItem, rightItem)
val worked = extractAnvilResult(
extractAnvilResult(
event, player, inventory,
null, 0,
null, 0,
result
)
if(!worked) {
CustomAnvil.verboseLog("Merge extract failed. reset the displayed price")
// Reset the price
AnvilXpUtil.setAnvilResult(inventory, view, player, result)
}
return
}
@ -281,20 +276,11 @@ class AnvilResultListener : Listener {
val cost = result.cost
if (cost.isMonetary) {
val result = EconomyManager.economy!!.remove(player, cost.asMonetaryCost())
if (!result) {
CustomAnvil.verboseLog("Could not remove monetary cost ${cost.asMonetaryCost()}")
return false
}
if (!result) return false
} else {
val xpCost = cost.filteredXpCost()
if (xpCost > AnvilXpUtil.maximumXpCost(result.ignoreXpRules)) {
CustomAnvil.verboseLog("Cost above maximum $xpCost > ${AnvilXpUtil.maximumXpCost(result.ignoreXpRules)}")
return false
}
if (player.level < xpCost) {
CustomAnvil.verboseLog("Player do not have enough xp ${player.level} < $xpCost")
return false
}
if (xpCost > AnvilXpUtil.maximumXpCost(result.ignoreXpRules)) return false
if (player.level < xpCost) return false
player.level -= xpCost
}
@ -312,10 +298,7 @@ class AnvilResultListener : Listener {
rightRemoveCount: Int,
result: AnvilResult
): Boolean {
if (result.isEmpty()) {
CustomAnvil.verboseLog("Merge result is empty")
return false
}
if (result.isEmpty()) return false
// To avoid vanilla, we cancel the event
event.result = Event.Result.DENY
@ -323,10 +306,7 @@ class AnvilResultListener : Listener {
val cost = result.cost
processCost(inventory, player, cost)
if (!cost.valid && player.gameMode != GameMode.CREATIVE) {
CustomAnvil.verboseLog("Player cannot afford the cost")
return false
}
if (!cost.valid && player.gameMode != GameMode.CREATIVE) return false
// Where should we get the item
val slotDestination = getActionSlot(event, player)

View file

@ -171,7 +171,11 @@ class PrepareAnvilListener : Listener {
private fun applyResult(event: PrepareAnvilEvent, player: Player, result: AnvilResult) {
event.result = result.item
AnvilXpUtil.setAnvilResult(event.inventory, event.view, player, result)
if(result.item == null) {
AnvilXpUtil.onNoResult(player, event.view)
return
}
AnvilXpUtil.setAnvilInvCost(event.inventory, event.view, player, result.cost, result.ignoreXpRules)
}
}

View file

@ -15,7 +15,6 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.Repairable
import org.bukkit.persistence.PersistentDataType
import xyz.alexcrea.cuanvil.anvil.AnvilCost
import xyz.alexcrea.cuanvil.anvil.AnvilMergeLogic.AnvilResult
import xyz.alexcrea.cuanvil.anvil.AnvilUseType
import xyz.alexcrea.cuanvil.config.ConfigHolder
import xyz.alexcrea.cuanvil.dependency.DependencyManager
@ -29,23 +28,7 @@ object AnvilXpUtil {
const val EXCLUSIVE_PENALTY_PREFIX = "repair_cost"
/**
* Display the required cost (either as xp or as money) or reset anvil price depending on result
*/
fun setAnvilResult(
inventory: AnvilInventory,
view: InventoryView,
player: Player,
result: AnvilResult) {
if(result.item == null) {
onNoResult(player, view)
return
}
setAnvilInvCost(inventory, view, player, result.cost, result.ignoreXpRules)
}
/**
* Display the required cost (either as xp or as money)
* Display the required cost (either as xp or as )
*/
fun setAnvilInvCost(
inventory: AnvilInventory,