Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions plugin/src/main/kotlin/trplugins/menu/module/conf/Loader.kt
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ object Loader {
true
}

val errors = mutableListOf<String>()

val files = mutableListOf<File>().also {
it.addAll(filterMenuFiles(folder))
it.addAll(TrMenu.SETTINGS.getStringList("Loader.Menu-Files").flatMap { filterMenuFiles(File(it)) })
Expand All @@ -82,15 +80,15 @@ object Loader {
result = MenuSerializer.serializeMenu(it)
} catch (t: Throwable) {
return@start SerialzeResult(SerialzeResult.Type.MENU, SerialzeResult.State.FAILED).also {
t.message?.let { msg -> it.errors.add(msg) }
it.submitError(t)
}
}
if (result.state == SerialzeResult.State.IGNORE) {
return@start result
}
if (result.succeed() && TrMenu.SETTINGS.getBoolean("Loader.Listen-Files", true)) {
listen(it)
} else errors.addAll(result.errors)
}
result
},
// success
Expand All @@ -113,7 +111,7 @@ object Loader {
result.first.nameWithoutExtension,
result.second.type.name
)
result.second.errors.forEach { console().sendMessage(" §8$it") }
result.second.printStackTrace()
console().sendMessage("")
}
Menu.menus.add(menu)
Expand All @@ -139,7 +137,7 @@ object Loader {
file.nameWithoutExtension,
it.type.name
)
it.errors.forEach { console().sendMessage(" §8$it") }
it.printStackTrace()
console().sendMessage("")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,20 +85,20 @@ object MenuSerializer : ISerializer {
// 读取菜单设置
val settings = serializeSetting(conf, languages)
if (!settings.succeed()) {
result.errors.addAll(settings.errors).also {
result.submitErrors(settings).also {
return result
}
}

// 读取菜单布局
val layout = serializeLayout(conf)
if (!layout.succeed()) {
result.errors.addAll(layout.errors).also { return result }
result.submitErrors(layout).also { return result }
}
// 读取菜单图标
val icons = serializeIcons(conf, languages, layout.asLayout())
if (!icons.succeed()) {
result.errors.addAll(icons.errors).also {
result.submitErrors(icons).also {
return result
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package trplugins.menu.module.conf.prop

import taboolib.common.platform.function.console
import taboolib.common.util.replaceWithOrder
import trplugins.menu.module.display.icon.Icon
import trplugins.menu.module.display.layout.MenuLayout
Expand All @@ -11,17 +12,45 @@ import trplugins.menu.module.display.layout.MenuLayout
class SerialzeResult(
val type: Type,
var state: State = State.SUCCESS,
val errors: MutableList<String> = mutableListOf(),
val errors: MutableList<Throwable> = mutableListOf(),
var result: Any? = null
) {

fun succeed(): Boolean {
return state == State.SUCCESS && result != null
}

fun submitError(error: Throwable) {
errors.add(error)
}

fun submitError(error: SerializeError, vararg args: Any) {
state = State.FAILED
errors.add(SerializeError.formatInfo(error).replaceWithOrder(*args))
errors.add(RuntimeException(SerializeError.formatInfo(error).replaceWithOrder(*args)))
}

fun submitErrors(result: SerialzeResult): Boolean {
return errors.addAll(result.errors)
}

fun printStackTrace() {
errors.forEach { printStackTrace(it) }
}

fun printStackTrace(t: Throwable) {
printStackTrace(t, " §8")
}

fun printStackTrace(t: Throwable, prefix: String) {
console().sendMessage(prefix + t)

t.stackTrace.forEach { console().sendMessage("$prefix\tat $it") }

val cause = t.cause
if (cause != null) {
console().sendMessage(prefix + "Caused by:")
printStackTrace(cause)
}
}

@Suppress("UNCHECKED_CAST")
Expand Down