Skip to content

Repository files navigation

BCDebugJavaAgent

Internally | BlockConnect uses a Minecraft‑debug‑level JavaAgent, which is suitable for bytecode‑level analysis and log retention for Minecraft in environments where AprismJDK is not used or unavailable.

Overview

BCDebugJavaAgent is a JVM-level Java Agent for Minecraft Java Edition (1.12.2–26.2) that performs:

  • Bytecode analysis & recording — instruments methods at class-load time using ASM, records entry/exit counts and timing
  • JVM-level hook debugging — injects hooks into MC lifecycle methods (tick, render, world load) via SPI-discovered providers
  • Log behavior export — exports JSONL logs and method statistics on JVM shutdown

Project Structure

BCDebugJavaAgent/
├── bc-agent-core/ # Core: ASM bytecode analysis, hook registry, logging, export
├── bc-agent/ # Agent: premain/agentmain entry, config, HTTP control server
├── bc-hooks-26/ # MC 26.x specific hooks (26.2, 26.1.2)
├── build.gradle # Root build + fatJar task
├── gradle.properties # Version config
└── settings.gradle # Multi-project settings

Build

$env:JAVA_HOME="C:\Program Files\Eclipse Adoptium\jdk-21.0.11.10-hotspot"
.\gradlew.bat fatJar

Output: build/libs/bcdebug-javaagent-v26.0-Alpha.1.jar

Usage

# With Minecraft (via mdl — needs -Xbootclasspath/a to avoid duplicate class loading)
java -Xbootclasspath/a:bcdebug-javaagent.jar -javaagent:bcdebug-javaagent.jar=logLevel=DEBUG -jar minecraft.jar
# Standalone test
java -Xbootclasspath/a:bcdebug-javaagent.jar -javaagent:bcdebug-javaagent.jar=logLevel=DEBUG,classfilters=dev.blockconnect.bcagent.test -cp test-classes dev.blockconnect.bcagent.test.TestTarget

Configuration Keys

KeyDefaultDescription
outputDirbcdebug-outputOutput directory for logs and exports
logLevelINFOTRACE, DEBUG, INFO, WARN, ERROR
classFiltersnet.minecraft.;com.mojang.Semicolon-separated class name prefixes to match
excludeFiltersnet.minecraft.client.main.MainSemicolon-separated class name prefixes to exclude
logMethodEntrytrueLog method entries
logMethodExitfalseLog method exits
enableHookstrueEnable MC-specific hook injection
hookProfileautoHook set: 26, 1.21, 1.20, 1.12, auto
exportOnShutdowntrueExport JSONL logs on JVM exit
enableHttpfalseEnable HTTP control server
httpPort25595HTTP server port

HTTP API (when enableHttp=true)

EndpointMethodDescription
/statusGETAgent status and record counts
/methodsGETMethod statistics summary
/logsGETRecent log entries (last 100)
/exportPOSTTrigger immediate export to disk

Supported MC Versions

MC RangeJDKHook Profile
26.1–26.221+26
1.21.x211.21 (planned)
1.20.x171.20 (planned)
1.12.281.12 (planned)

License

MIT License — Copyright (c) 2026 BlockConnect

About

Internally | BlockConnect uses a Minecraft‑debug‑level JavaAgent, which is suitable for bytecode‑level analysis and log retention for Minecraft in environments where AprismJDK is not used or unavailable.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages