Skip to content

Commit 1cb9e99

Browse files
CandiceyCandicey
authored andcommitted
Fix null stuff
1 parent 2434bd6 commit 1cb9e99

File tree

3 files changed

+32
-12
lines changed

3 files changed

+32
-12
lines changed

loader/src/main/kotlin/net/weavemc/loader/impl/InjectionHandler.kt

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,18 @@ import kotlin.io.path.createDirectories
1818
import kotlin.random.Random
1919
import kotlin.random.nextUInt
2020

21-
internal object InjectionHandler : SafeTransformer {
21+
public object InjectionHandler : SafeTransformer {
2222
/**
2323
* JVM argument to dump bytecode to disk. Can be enabled by adding
2424
* `-DdumpBytecode=true` to your JVM arguments when launching with Weave.
2525
*
2626
* Defaults to `false`.
2727
*/
28-
val dumpBytecode = System.getProperty("dumpBytecode")?.toBoolean() ?: false
28+
public val dumpBytecode: Boolean = System.getProperty("dumpBytecode")?.toBoolean() ?: false
2929

3030
private val modifiers = mutableListOf<Modifier>()
3131

32-
fun registerModifier(modifier: Modifier) {
32+
public fun registerModifier(modifier: Modifier) {
3333
modifiers += modifier
3434
}
3535

@@ -60,7 +60,20 @@ internal object InjectionHandler : SafeTransformer {
6060
inverseConflictsMapping["${node.name}.${tempName}${m.desc}"] = m.name
6161
}
6262

63-
node.remap(SimpleRemapper(conflictsMapping))
63+
// Hack: SimpleRemapper.map() can return null, and that breaks remap()
64+
node.remap(object : SimpleRemapper(conflictsMapping) {
65+
override fun map(key: String): String {
66+
return super.map(key) ?: key.run {
67+
// for an unknown reason, `key` isn't just internal name only
68+
// for example, <owner>.<name><descriptor> is sometimes passed to this method
69+
70+
if (contains('.')) {
71+
if (contains('(')) substringAfter('.').substringBefore('(')
72+
else substringAfter('.')
73+
} else this
74+
}
75+
}
76+
})
6477

6578
val hookConfig = AssemblerConfigImpl()
6679
val modNs = groupedModifiers.keys
@@ -91,24 +104,24 @@ internal object InjectionHandler : SafeTransformer {
91104
}
92105
}
93106

94-
internal interface Modifier {
95-
val namespace: String
96-
val targets: Set<String>
97-
fun apply(node: ClassNode, cfg: Hook.AssemblerConfig)
107+
public interface Modifier {
108+
public val namespace: String
109+
public val targets: Set<String>
110+
public fun apply(node: ClassNode, cfg: Hook.AssemblerConfig)
98111
}
99112

100113
/**
101114
* @param hook Hook class
102115
*/
103-
internal data class ModHook(
116+
public data class ModHook(
104117
override val namespace: String,
105118
val hook: Hook,
106119
// TODO: jank
107120
override val targets: Set<String> = hook.targets.mapTo(hashSetOf()) {
108121
MappingsHandler.mapper(namespace, MappingsHandler.environmentNamespace).map(it)
109122
}
110123
): Modifier {
111-
override fun apply(node: ClassNode, cfg: Hook.AssemblerConfig) = hook.transform(node, cfg)
124+
override fun apply(node: ClassNode, cfg: Hook.AssemblerConfig): Unit = hook.transform(node, cfg)
112125
}
113126

114127
public class AssemblerConfigImpl : Hook.AssemblerConfig {

loader/src/main/kotlin/net/weavemc/loader/impl/WeaveLoader.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ public class WeaveLoader(
193193

194194
loadAccessWidener(res.readBytes().decodeToString().trim().lines())
195195
.remap(MappingsHandler.mergedMappings.mappings, MappingsHandler.environmentNamespace)
196-
}.join().toTree()
196+
}.reduceOrNull { acc, curr -> acc + curr }?.toTree() ?: return
197197

198198
InjectionHandler.registerModifier(object : Modifier {
199199
override val namespace = MappingsHandler.environmentNamespace

loader/src/main/kotlin/net/weavemc/loader/impl/util/Mappings.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import org.objectweb.asm.commons.SimpleRemapper
1313
import java.io.File
1414
import java.util.*
1515
import java.util.jar.JarFile
16+
import kotlin.system.measureTimeMillis
1617

1718
public object MappingsHandler {
1819
private val logger by klog
@@ -22,7 +23,13 @@ public object MappingsHandler {
2223
public val mergedMappings: WeaveMappings by lazy {
2324
logger.info("Loading merged mappings for ${GameInfo.version.versionName}")
2425
logger.debug("Vanilla jar: $vanillaJar")
25-
MappingsRetrieval.loadMergedWeaveMappings(GameInfo.version.versionName, vanillaJar)
26+
27+
val mappings: WeaveMappings
28+
measureTimeMillis {
29+
mappings = MappingsRetrieval.loadMergedWeaveMappings(GameInfo.version.versionName, vanillaJar)
30+
}.let { logger.info("Took ${it}ms to load mappings") }
31+
32+
mappings
2633
}
2734

2835
public val environmentNamespace: String by lazy {

0 commit comments

Comments
 (0)