Перейти к содержимому
Mineforgian

Preloading Tricks

A developer tool for early loader access, class transformation, and preloading hacks.

Загрузки
360K
Подписчики
20
Обновлён
29 июня 2026 г.
Лицензия
Apache-2.0

Опубликован 4 августа 2023 г.

Overview

Preloading Tricks is a developer-only mod that enables advanced operations during the very early stage of the mod loader. It provides early hooks, Java Instrumentation-based class transformation, and SPI-driven callbacks for loader extension.

Supported environments:

  • Fabric – 1.20.1, 1.21+
  • Forge (LexForge) – 1.20.1
  • NeoForge – 1.20.6, 1.21+

You can test on more versions since it depends on the loader version instead of the Minecraft version.


Features

  • Early loader entrypoint via PreloadingEntrypoint (SPI-based)

    • Register callbacks using PreloadingTricksCallbacks events:
      • SETUP_LANGUAGE_ADAPTER – early language adapter setup stage
      • COLLECT_MOD_CANDIDATES – dynamically add mod candidate paths before discovery
      • SETUP_MODS – modify mod list (add/remove/query via ModManager API)
  • Instrumentation-powered ClassTransform Can transform already-loaded classes, including Java core and classloader classes. Configure via MANIFEST.MF on all platforms (see below).

  • Forge variant detection (Forge-like only)

    • Access ForgeVariants to detect specific Forge/NeoForge versions at runtime

Usage (Gradle)

Add the Maven repository and dependency to your build:

Kotlin DSL:

repositories {
    maven("https://raw.githubusercontent.com/settingdust/maven/main/repository/")
}

dependencies {
  // Recommended: use the base artifact (no classifier).
  // Gradle variant matching / cloche will resolve the correct platform artifact automatically.
  implementation("settingdust.preloading_tricks:PreloadingTricks:VERSION")

  // Optional: pin to a specific classifier when you want to avoid accidentally using APIs
  // from other platforms.
  // implementation("settingdust.preloading_tricks:PreloadingTricks:VERSION:fabric")
  // implementation("settingdust.preloading_tricks:PreloadingTricks:VERSION:forge-service")
  // implementation("settingdust.preloading_tricks:PreloadingTricks:VERSION:neoforge-modlauncher")
  // implementation("settingdust.preloading_tricks:PreloadingTricks:VERSION:neoforge-fancy-mod-loader")
}

Replace VERSION with the latest release (e.g. 3.5.9).

If you are using cloche, the corresponding variant is selected automatically based on loader/minecraft attributes.


ClassTransform Configuration

For all platforms, add the following attribute to your MANIFEST.MF:

ClassTransformConfig: xxxx.classtransform.json

Multiple configs can be specified as comma-separated values:

ClassTransformConfig: first.classtransform.json,second.classtransform.json

Example config (xxxx.classtransform.json):

{
  "package": "settingdust.preloading_tricks.neoforge.transformer",
  "transformers": [
    "mod_setup_hook.FMLLoaderTransformer"
  ]
}

Forge Variant Detection (Forge-like only)

Allows a mod to load only on a specific Forge-like loader variant. This enables bundling both LexForge and NeoForge JARs together via jar-in-jar in a single mod file.

Configuration:

Specify your mod's target variant in MANIFEST.MF:

ForgeVariant: LexForge

or

ForgeVariant: NeoForge

Mods with a ForgeVariant specified will only load when running on the matching loader variant, allowing safe coexistence of variant-specific implementations.


For developers who need to reach into the earliest moments of Minecraft’s loading process.

Ченджлог

3.7.3Релиз26.1, 26.1.1, 26.1.2 · 29 июня 2026 г.

:bug: Bug Fixes

  • 9285f5d - transformer error (commit by @SettingDust)
3.7.1Релиз26.1, 26.1.1, 26.1.2 · 26 мая 2026 г.

:bug: Bug Fixes

  • 7c3f059 - build: correct embed configuration attributes and resource inclusion for jar tasks (commit by @SettingDust)

:recycle: Refactors

  • 3d8e46a - build: reconcile copier topology (commit by @SettingDust)
3.7.0Релиз26.1, 26.1.1, 26.1.2 · 24 мая 2026 г.

:sparkles: New Features

  • 6bc4e54 - add NeoForgeAdapter to use right java version on older NF (commit by @SettingDust)
3.6.3Релиз26.1, 26.1.1, 26.1.2 · 21 мая 2026 г.

:bug: Bug Fixes

  • 155757b - wrong resolver transformer 2 (commit by @SettingDust)
3.6.2Релиз26.1, 26.1.1, 26.1.2 · 21 мая 2026 г.

:bug: Bug Fixes

  • dd19a79 - wrong resolver transformer (commit by @SettingDust)
3.6.0Релиз26.1, 26.1.1, 26.1.2 · 11 мая 2026 г.

:bug: Bug Fixes

  • 80ece07 - restore module injector api files (commit by @SettingDust)

:recycle: Refactors

  • 089c55e - restore build topology after copier update (commit by @SettingDust)
  • 03196c6 - obsolete NeoForge callback artifacts (commit by @SettingDust)
  • 9f25b22 - share list-backed mod manager logic (commit by @SettingDust)
  • 4c719ff - restructure sources into api core shared platform targets (commit by @SettingDust)
  • 058d9ef - extract shared target/version constants in build script (commit by @SettingDust)
  • caaf03e - deduplicate neoforge dependency excludes and rename run regions (commit by @SettingDust)
  • eec2d95 - extract run target MOD_CLASSES env setup (commit by @SettingDust)
  • 5a8bc34 - align forge modlauncher package naming (commit by @SettingDust)
  • ae282c0 - remove unused entrypoint and module injector leftovers (commit by @SettingDust)

:wrench: Chores

  • ee23367 - copier update checkpoint B (commit by @SettingDust)
  • 5a333b4 - plans: add copier update execution artifacts and reconciliation gates (commit by @SettingDust)
  • 83bd560 - remove obsolete copier gate and NeoForge 21.10 setup (commit by @SettingDust)
  • 6757863 - remove plans (commit by @SettingDust)
  • 0a66459 - remove unused files (commit by @SettingDust)
3.5.15Релиз26.1, 26.1.1, 26.1.2 · 9 мая 2026 г.

:bug: Bug Fixes

  • af9ee68 - build output duplicated classes (commit by @SettingDust)
3.5.14Релиз26.1, 26.1.1, 26.1.2 · 8 мая 2026 г.

:bug: Bug Fixes

  • 60cc575 - resolver transformer passing wrong arg (commit by @SettingDust)

Комментарии

Загружаем…