CodeOrigin

object CodeOrigin

Who put each compile-classpath jar there, for the access-widen overlay to shard by.

User space (mods, plugins, and the libraries they carry) gets one shard per jar, so updating one rebuilds one. Everything else — the loader, its dependencies, the server libraries, our own jar-in-jar, mc-symbols — is the environment: rarely touched, and when it is touched every shard's bytes change anyway, so it is one merged shard whose staleness forces a full rebuild.

Filled by the collectors as they resolve; read by widenClasspath. Must stay in ...repl, not repl.impl: the collectors are game-loader owned and the overlay runs on the masking loader.

Properties

Link copied to clipboard

jar -> the loader's own id for it. Absent for anything the loaders don't name; the overlay falls back to a type-set key, which is stable across a version bump the same way an id is.

Link copied to clipboard
val self: File?

Our own jar. Located off Constants — root package, so the masking loader delegates and both sides answer with one value — and through JarLocator, since a Forge union URI is not a file: one.

Link copied to clipboard

Jars a user installs and updates. self is deliberately NOT one: the widen logic ships in it, so a change there invalidates every shard, which is exactly what the environment shard already does.

Functions

Link copied to clipboard

A cache file named after id. Prefix sanitized and capped — a JPMS module name is neither [a-z0-9_-] nor bounded. Hash over the ORIGINAL case: it is what keeps MixinExtras and mixinextras two files on a case-insensitive filesystem.

Link copied to clipboard
fun mark(jar: File, id: String?)

Record a resolved user-space jar and, where the loader named it, its id.