Skip to content

Commit 48da4f7

Browse files
committed
Better field format mapping
1 parent 84352c0 commit 48da4f7

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

common/src/main/kotlin/com/lambda/util/DynamicReflectionSerializer.kt

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,11 @@ object DynamicReflectionSerializer : Loadable {
8484
.associate { it[0].split('$').last() to it[1] }
8585
}
8686

87-
private val String.remappedName get() = mappings.getOrDefault(this, this)
87+
val String.remappedName get() = mappings.getOrDefault(this, this)
8888

89-
private fun <T : Any> Class<T>.dynamicName(remap: Boolean) =
90-
if (remap) simpleName.remappedName else simpleName
91-
private fun Field.dynamicName(remap: Boolean) =
89+
fun <T : Any> Class<T>.dynamicName(remap: Boolean) =
90+
if (remap) canonicalName.remappedName else simpleName
91+
fun Field.dynamicName(remap: Boolean) =
9292
if (remap) name.remappedName else name
9393

9494
fun Any.dynamicString(
@@ -133,7 +133,7 @@ object DynamicReflectionSerializer : Loadable {
133133
}
134134
val fieldValue = field.get(this)
135135
val fieldIndent = "$indent${" ".repeat(INDENT)}"
136-
builder.appendLine("$fieldIndent${field.dynamicName(remap)}: ${fieldValue.formatFieldValue()}")
136+
builder.appendLine("$fieldIndent${field.dynamicName(remap)}: ${fieldValue.formatFieldValue(remap)}")
137137

138138
if (currentDepth < maxRecursionDepth
139139
&& fieldValue != null
@@ -153,22 +153,26 @@ object DynamicReflectionSerializer : Loadable {
153153
}
154154
}
155155

156-
private fun Any?.formatFieldValue(): String =
156+
private fun Any?.formatFieldValue(remap: Boolean): String =
157157
when (this) {
158158
is String -> "\"${this}\""
159-
is Collection<*> -> "[${joinToString(", ") { it.formatFieldValue() }}]"
160-
is Array<*> -> "[${joinToString(", ") { it.formatFieldValue() }}]"
159+
is Collection<*> -> "[${joinToString(", ") { it.formatFieldValue(remap) }}]"
160+
is Array<*> -> "[${joinToString(", ") { it.formatFieldValue(remap) }}]"
161161
is Map<*, *> -> "{${
162162
entries.joinToString(", ") { (k, v) ->
163-
"${k.formatFieldValue()}: ${v.formatFieldValue()}"
163+
"${k.formatFieldValue(remap)}: ${v.formatFieldValue(remap)}"
164164
}
165165
}}"
166166

167167
is Text -> string
168168
is Identifier -> "$namespace:$path"
169169
is NbtCompound -> asString()
170170
is RegistryEntry<*> -> "${value()}"
171-
else -> this?.toString() ?: "null"
171+
else -> {
172+
if (this?.javaClass?.canonicalName?.contains("minecraft") == true)
173+
"${this.javaClass.dynamicName(remap).substringAfterLast('.')}@${Integer.toHexString(hashCode())}"
174+
else this?.toString() ?: "null"
175+
}
172176
}
173177

174178
override fun load() = "Loaded ${mappings.size} deobfuscated qualifier"

0 commit comments

Comments
 (0)