Skip to content

MCDxAI/meteor-addon-parser

Repository files navigation

addon-parser

Headless Java scanner for Meteor Client addons

Java Version

Extract module metadata, settings, and configuration from addon JARs without launching Minecraft.

Quick Start

Step Command
Prerequisites Java 25 JDK (Gradle wrapper is included)
Clone git clone <repo-url> && cd addon-parser
Generate stubs ./gradlew generateStubs -PparserProfile=26x
Run tests ./gradlew test -PautoGenerateStubs -PparserProfile=26x --no-daemon
Scan addons ./gradlew run -PparserProfile=26x --args="--input fixtures/addons/jars/26x --output output/26x --profile 26x"

Fixture JARs for both profiles are checked in under fixtures/addons/jars/, so the test and scan commands work out of the box.

CLI

Argument Description
--input Path to an addon JAR or a directory of JARs
--output Output directory for per-JAR JSON files (default: output)
--summary Path for the aggregate summary JSON (default: <output>/summary.json)
--mode LEGACY (in-process) or ISOLATED (forked worker JVM)
--profile 26x or legacy; falls back to addonparser.profile or -PparserProfile
./gradlew run -PparserProfile=26x --args="--input fixtures/addons/jars/26x --output output/26x --summary output/26x/summary.json --profile 26x"
./gradlew run -PparserProfile=legacy --args="--input fixtures/addons/jars/legacy --output output/legacy --summary output/legacy/summary.json --profile legacy --mode ISOLATED"

Features

Feature Description
Headless scanning No Minecraft, no GUI, no game tick loop — just the JVM
Fabric mod parsing Reads fabric.mod.json and locates MeteorAddon entrypoints
Runtime emulation Stubs for Meteor Client systems: Modules, Settings, HUD, Commands
Two scan modes In-process for speed, or a forked worker JVM for isolation
Profile support Separate compatibility shim sets for 26x Mojmap and legacy Yarn addons
Mapping normalization Resolves obfuscated and intermediary names to readable ones where possible
Sandboxed writes Addon runtime writes are confined to tmp/addon-parser-runtime and cleaned up by default

Profiles

Profile Fixtures Count Notes
26x fixtures/addons/jars/26x 9 jars Mojmap-oriented Meteor 0.6.x / Minecraft 26.x; default profile
legacy fixtures/addons/jars/legacy 24 jars 1.21.x Yarn / intermediary addons

Output

File Contents
{jarName}.json jarName / jarPath, success, errors / warnings, addons[], modules[]
summary.json Aggregate stats across every scanned JAR

Each ModuleDump includes:

Field Description
name Display name
category Meteor category (Combat, Render, Misc, ...)
description Module description
aliases Alternative command names
className Fully qualified class name
settings SettingDump[] with name, type, and default value
settingGroups Nested setting group structure

Configuration

Property Description Default
addonparser.profile Runtime mapping profile (26x or legacy) 26x
addonparser.fixtureJarsDir Override the test fixture directory fixtures/addons/jars/<profile>
addonparser.runtimeTmpDir Temp directory for sandboxed runtime artifacts tmp/addon-parser-runtime
addonparser.keepTmp Keep temp artifacts after scan for debugging false
addonparser.meteorFolder Override the emulated Meteor folder managed per scan
addonparser.yarnAutoDownload Allow the legacy resolver to download missing Yarn mappings true
addonparser.yarnMappingsVersions Specific Yarn mapping versions to use auto-detected
addonparser.mappingsDir Cached mappings directory mappings
addonparser.yarnMappingsJar Explicit list of Yarn mapping JARs unset

Development

Built with Java 25 and Gradle (Groovy DSL); bytecode analysis via ASM, JSON via Jackson/Gson.

Task Command
Build ./gradlew build -PautoGenerateStubs -PparserProfile=<profile> --no-daemon
Test ./gradlew test -PautoGenerateStubs -PparserProfile=<profile> --no-daemon
Generate stubs ./gradlew generateStubs -PparserProfile=<profile>
Format ./gradlew spotlessApply --no-daemon

About

Headless parser for Meteor Client addons

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors