Skip to content

Releases: NDBlockConnect/BCDebugJavaAgent

v26.1 — GA

Choose a tag to compare

@StarsailsClover StarsailsClover released this 05 Sep 17:01
v26.1
6fac5ca

BCDebugJavaAgent v26.1 — GA

General Availability — production release of the v26.1 line.

What changed since v26.0

Universal runtime

  • One artifact for every game JVM: the entire agent is Java 8 bytecode
    (major 52 verified) — attaches to 1.12.x-era JDK 8 games through 26.x JDK
    21+ games. No per-era builds.
  • mappingsFile load failures fall back to automatic discovery (when
    network consent is given).

Secured, audited control plane

  • httpToken=<secret>: every endpoint requires the token (X-BCDebug-Token
    header or token query), constant-time compared, on both frontends.
  • Structured JSONL audit trail (bcdebug-audit.log) with caller address —
    including auth-fail records for unauthorized probes.
  • Method enforcement: GET on reads, POST on writes (both frontends).

Live diagnostics and runtime operations

  • /filters?add=&remove= — extend recording scope without restart
    (retransform-based, tracker-guarded); removal mutes (no byte surgery).
  • /hooks/add?class=&method=&desc=&level= — plant ad-hoc observation
    points into a running game; /hooks/list, /hooks/clear.
  • /logs?level=&contains=&limit= and /methods?contains=&min=&limit=
    filtering.
  • /status visibility: muted prefixes, token enabled.

Readability

  • Exports and HTTP payloads show fully deobfuscated class, method AND
    descriptor triples when mappings are active.
  • Experimental 1.12 profile (MCP-named hooks, user-supplied mapping).

GA promotion round (MC 1.21.1 dedicated server, GA jar)

Check Result
Agent init v26.1, token enabled, hooks active
Mapping auto-discovery 6148 mappings applied
Hook reload / filter add / runtime hook add Accepted (pending-state for unloaded targets)
Token enforcement 401 for unauthenticated
Log filtering 3 filtered rows
Auto-filter ServerLevel#tick (export) entryCount=43419
Export / audit Success, records captured

Combined with the Alpha.9 battery (PASS) and Alpha.10 LTS validation, the
production-testing gate is satisfied. 56 unit tests green.

Quick start

java -javaagent:bcdebug-javaagent-v26.1.jar=hookProfile=auto,mappingsAuto=true,logFile=true,exportIntervalSec=60 -jar minecraft.jar

安装说明(中文)

  1. 下载 bcdebug-javaagent-v26.1.jar —— 单制品覆盖 JDK 8+ 全部游戏 JVM。
  2. 推荐配置:hookProfile=auto,mappingsAuto=true,logFile=true,exportIntervalSec=60。
  3. 多用户主机启用令牌:httpToken=<secret>。
  4. 运行中操作:/filters、/hooks/add、/log-level、/export。

MIT License — Copyright (c) 2026 BlockConnect

v26.1-Alpha.9 — LTS regression battery

Choose a tag to compare

@StarsailsClover StarsailsClover released this 05 Sep 11:41
v26.1-Alpha.9
440dedb

BCDebugJavaAgent v26.1-Alpha.9

Pre-Release — Alpha builds are functional but unstable. This release is
the v26.1 LTS regression gate; Alpha.10 is the LTS candidate.

Regression Battery

Executed against MC 1.21.1 dedicated server (stock obfuscated jar), with
mapping auto-discovery and token protection.

Area Result
Mapping auto-discovery 6148 mappings applied
Hook reload retransformed:1, failed:0
Live filters Add/retransform, remove/mute, re-add/unmute healthy
Dynamic runtime hook Registered + retransformed on hot obfuscated target
Token enforcement Missing token = 401; authenticated requests = 200
Audit trail Hook/filter/auth/export operations captured
Logs/method filters Valid filtered response shapes
Export Success
Unit regression 56 tests green

The host intermittently terminated game processes under disk/memory pressure;
the test was split into a stateful Phase A and a fast Phase B. Every completed
control returned healthy responses. Full evidence:
docs/REGRESSION-v26.1-Alpha.9.md.

Build Information

Item Value
Artifact bcdebug-javaagent-v26.1-Alpha.9.jar (bytecode 52 — JDK 8+)
Commit 440dedb (SSH-signed, Verified)
Tag v26.1-Alpha.9 (SSH-signed, Verified)

安装说明(中文)

  1. 下载 bcdebug-javaagent-v26.1-Alpha.9.jar。
  2. Alpha.9 是 v26.1 LTS 的回归门版本;56 项单元/实机 battery 通过。
  3. Alpha 版本不稳定,请勿用于生产环境。

MIT License — Copyright (c) 2026 BlockConnect

v26.1-Alpha.8 — Dynamic hook API

Pre-release

Choose a tag to compare

@StarsailsClover StarsailsClover released this 05 Sep 09:50
v26.1-Alpha.8
031923d

BCDebugJavaAgent v26.1-Alpha.8

Pre-Release — Alpha builds are functional but unstable. Do not run in production environments.

Highlights

Dynamic hook API — plant an observation point into a RUNNING game with
one request:

POST /hooks/add?class=aqu&method=a&desc=(Ljava/util/function/BooleanSupplier;)V&level=INFO
-> {"hook":"aqu#a(...)V","retransformed":1,"failed":0}
GET  /hooks/list  -> ["aqu#a(...)V", ...]
POST /hooks/clear -> {"removed":1}
  • Hooks authored directly in RUNTIME names (no mapping translation — the
    operator speaks the runtime's language, e.g. obfuscated names obtained via
    /classes); generic callback logs invocations with argument count at the
    requested level.
  • Registration retransform-classes the already-loaded target; the existing
    injection tracker guarantees no double injection.
  • Cleared hooks leave injected bytecode that safely no-ops (registry miss).
  • All three operations audited; available on both control-plane frontends.

Validation

Live on MC 1.21.1 dedicated server (obfuscated jar):

ADD-aqu: retransformed=1, failed=0
INFO RuntimeHook aqu#a args=1        ← firing at 20 TPS on the hot class
LIST / CLEAR: lifecycle complete

(An idle-method target — brigadier canRead on a Done-idle server —
correctly produced no fires; execution, not injection, was the limiter.)

56 unit tests green (runtime hook lifecycle + cleared-dispatch no-op).

Build Information

Item Value
Artifact bcdebug-javaagent-v26.1-Alpha.8.jar (bytecode 52 — JDK 8+)
Commit 031923d (SSH-signed, Verified)
Tag v26.1-Alpha.8 (SSH-signed, Verified)

安装说明(中文)

  1. 下载 bcdebug-javaagent-v26.1-Alpha.8.jar。
  2. 运行中植入观测点:POST /hooks/add?class=<运行时名>&method=<名>&desc=<描述符>&level=INFO。
  3. /hooks/list 查看;/hooks/clear 一键清除(旧调用点自动空转)。
  4. Alpha 版本不稳定,请勿用于生产环境。

MIT License — Copyright (c) 2026 BlockConnect

v26.1-Alpha.7 — Audit identity + log filtering

Choose a tag to compare

@StarsailsClover StarsailsClover released this 05 Sep 09:26
v26.1-Alpha.7
5070464

BCDebugJavaAgent v26.1-Alpha.7

Pre-Release — Alpha builds are functional but unstable. Do not run in production environments.

Highlights

Audit & observability hardening:

  • Audit records now carry the caller address (remote), and failed
    authorizations are audited as op=auth-fail with the probed path — every
    unauthorized touch of the control plane leaves a trace.
  • /export is audited (op=export) on both frontends.
  • /logs gains filters on both frontends: level (severity floor),
    contains (message substring), limit — newest-first output.
  • /status now exposes mutedPrefixes count and tokenEnabled visibility.

Validation

Live on MC 1.21.1 dedicated server with httpToken=tokA7:

Check Result
No token 401
Bad token 401
Good token 200 + tokenEnabled:true, mutedPrefixes:0
Auth-fail audit 31 records with remote:"/127.0.0.1:xxxxx"
/logs?level=INFO&contains=mappings mapping chain rows returned
/logs?level=WARN&contains=mappings 0 rows (correct severity floor)
/logs?contains=tick DEBUG ServerLevel tick rows

54 unit tests green.

Build Information

Item Value
Artifact bcdebug-javaagent-v26.1-Alpha.7.jar (bytecode 52 — JDK 8+)
Commit 5070464 (SSH-signed, Verified)
Tag v26.1-Alpha.7 (SSH-signed, Verified)

安装说明(中文)

  1. 下载 bcdebug-javaagent-v26.1-Alpha.7.jar。
  2. 令牌请求示例:/status?token=<secret> 或头 X-BCDebug-Token: <secret>。
  3. 鉴权失败将进入审计(含来源地址);/logs 支持 level/contains/limit。
  4. Alpha 版本不稳定,请勿用于生产环境。

MIT License — Copyright (c) 2026 BlockConnect

v26.1-Alpha.6 — Mute semantics + audit log

Choose a tag to compare

@StarsailsClover StarsailsClover released this 05 Sep 08:05
v26.1-Alpha.6
d2489db

BCDebugJavaAgent v26.1-Alpha.6

Pre-Release — Alpha builds are functional but unstable. Do not run in production environments.

Highlights

Mute semantics for filter removal — a removed prefix now goes SILENT:

  • MethodRecorder gains a muted-prefix set: already-instrumented methods
    keep calling into the recorder, but entries for muted prefixes are no
    longer recorded (exit paths self-heal via missing stats entries).
    POST /filters?remove=X mutes X; re-adding unmutes. No byte surgery —
    hot-path cost is a small startsWith scan, zero when the set is empty.
  • setFilters responses now include the muted list.

Control-plane audit log:

  • Every mutation (/log-level, /filters, /hooks/reload) appends a
    structured JSONL record — {ts, op, detail} — to
    <outputDir>/bcdebug-audit.log. Best-effort by design: audit failures
    never affect the audited operation or the game.

Validation

Live on MC 1.21.1 dedicated server (obfuscated, mappings auto):

add dcd    -> {"added":1,"retransformed":1,"muted":[]}
remove dcd -> {"removed":1,"muted":["dcd"]}
re-add dcd -> {"added":1,"muted":[]}          (recording resumes)
AUDIT: 3 JSONL records captured (filters ×3)

54 unit tests green (mute/resume/isolation + audit wiring).

Build Information

Item Value
Artifact bcdebug-javaagent-v26.1-Alpha.6.jar (bytecode 52 — JDK 8+)
Commit d2489db (SSH-signed, Verified)
Tag v26.1-Alpha.6 (SSH-signed, Verified)

安装说明(中文)

  1. 下载 bcdebug-javaagent-v26.1-Alpha.6.jar。
  2. 录制暂停:POST /filters?remove=<前缀>;恢复:POST /filters?add=<前缀>。
  3. 审计轨迹:<outputDir>/bcdebug-audit.log。
  4. Alpha 版本不稳定,请勿用于生产环境。

MIT License — Copyright (c) 2026 BlockConnect

v26.1-Alpha.5 — Live instrumentation scope

Choose a tag to compare

@StarsailsClover StarsailsClover released this 05 Sep 07:38
v26.1-Alpha.5
8311a47

BCDebugJavaAgent v26.1-Alpha.5

Pre-Release — Alpha builds are functional but unstable. Do not run in production environments.

Highlights

Live instrumentation scope — recording extends without a restart:

POST /filters?add=aqu,dcd&remove=oldprefix
-> {"added":1,"removed":0,"activeFilters":3,"retransformed":1,"failed":0}
  • InstrumentationTracker claims per-class instrumentation exactly once
    across load and retransform passes: classes OUT of scope at load time get
    instrumented on a retransform pass (their bytes are clean), while
    already-instrumented classes are left untouched — no double counting.
    Failed transforms release claims for retry.
  • POST /filters?add=&remove= (both frontends) mutates the recorder
    prefixes and retransform-classes every loaded class matching an ADDED
    prefix. AgentBootstrap retains its BCTransformer reference for the op.

Validation

Live on MC 1.21.1 dedicated server, default filters (no dcd):

POST /filters?add=dcd -> {"added":1,"retransformed":1,"failed":0}
export: "className": "net/minecraft/server/level/ServerLevel",
        "methodName": "a",
        "descriptor": "(Lnet/minecraft/world/level/ChunkPos;)Z",
        "entryCount": 34325

One record demonstrates BOTH features: hot scope extension (34325 entries
for a previously unrecorded class) and cross-class descriptor reverse
translation (dcd → ChunkPos inside the descriptor).

51 unit tests green.

Build Information

Item Value
Artifact bcdebug-javaagent-v26.1-Alpha.5.jar (bytecode 52 — JDK 8+)
Commit 8311a47 (SSH-signed, Verified)
Tag v26.1-Alpha.5 (SSH-signed, Verified)

安装说明(中文)

  1. 下载 bcdebug-javaagent-v26.1-Alpha.5.jar。
  2. 运行中扩展录制范围:POST /filters?add=<混淆前缀> —— 立即生效,无需重启。
  3. Alpha 版本不稳定,请勿用于生产环境。

MIT License — Copyright (c) 2026 BlockConnect

v26.1-Alpha.10 (LTS) — Final regression candidate

Choose a tag to compare

@StarsailsClover StarsailsClover released this 05 Sep 11:54
v26.1-Alpha.10
953d031

BCDebugJavaAgent v26.1-Alpha.10 (LTS)

Pre-Release (LTS candidate) — final Alpha of the v26.1 line. Promotion
to v26.1 GA follows the production-environment rounds required by the
BlockConnect release specification.

Final LTS Validation

Check Result
Unit gate 56 tests green
Bytecode Java 8 major 52 (single artifact for JDK 8+)
Agent init v26.1-Alpha.10, token enabled
Runtime hook RuntimeHook aqu#a args=1 at server tick rate
Late hook reload retransformed:1, failed:0
Token Missing token = 401
Export Success

The runtime hook was registered before aqu loaded, retained by the
registry, injected automatically on first class load, and then observed
firing. This proves the complete dynamic-hook lifecycle rather than only a
control-plane response.

Evidence: docs/LTS-v26.1-Alpha.10.md.

v26.1 Line Recap

Alpha Theme
1 Universal JDK 8+ artifact, mapping fallback, method enforcement
2 Descriptor reverse translation, 1.12 pipeline attach
3 Control-plane token protection, true Java 8 validation
4 Method-stat filtering, experimental 1.12 MCP hook profile
5 Live instrumentation scope (/filters)
6 Mute semantics and JSONL audit log
7 Audit caller identity, log filtering
8 Dynamic runtime hook API
9 LTS regression battery (PASS)
10 LTS candidate

Build Information

Item Value
Artifact bcdebug-javaagent-v26.1-Alpha.10.jar (bytecode 52 — JDK 8+)
Commit 953d031 (SSH-signed, Verified)
Tag v26.1-Alpha.10 (SSH-signed, Verified)

安装说明(中文)

  1. 下载 bcdebug-javaagent-v26.1-Alpha.10.jar。
  2. 这是 v26.1 线最终 Alpha / LTS 候选;GA 需完成规定生产测试轮次后提升。
  3. Alpha 版本不稳定,请勿用于生产环境。

MIT License — Copyright (c) 2026 BlockConnect

v26.1-Alpha.4 — Stat filtering + experimental 1.12

Choose a tag to compare

@StarsailsClover StarsailsClover released this 31 Aug 17:44
v26.1-Alpha.4
fd4b347

BCDebugJavaAgent v26.1-Alpha.4

Pre-Release — Alpha builds are functional but unstable. Do not run in production environments.

Highlights

/methods query filtering — automation-friendly statistics access:

GET /methods?contains=brigadier&min=100&limit=3
  • contains — class-name substring match
  • min — entry-count floor
  • limit — row cap, entries descending
  • Available on both control-plane frontends; unfiltered calls unchanged.

Experimental 1.12 profile (hookProfile=1.12):

  • New MC112HookProvider with five MCP-named hooks: Minecraft.runTick()V,
    Minecraft.loadWorld(WorldClient), WorldClient.tick()V,
    GameRenderer.render(FJ)V, MinecraftServer.tick()V.
  • Requires a user-supplied MCP-derived ProGuard mapping (mappingsFile=) —
    piston-meta publishes nothing for 1.12, so mappingsAuto correctly
    refuses; the provider logs an EXPERIMENTAL warning at registration.
  • LegacyHookProviderBase refactored: subclasses supply their hook sets via
    addHooks (per-era sets), enabling the 1.12 split.

Validation

Live on MC 1.21.1 dedicated server:

STATUS: v26.1-Alpha.4, totalHooks: 5        (1.12 profile, not the 8-hook legacy set)
METHODS: contains=brigadier&min=100&limit=3 → exactly 3 rows, entries-desc
MIRROR: MC-1.12-Hooks is EXPERIMENTAL ... (5 hooks)

49 unit tests green (provider exclusivity now covers four profiles).

Build Information

Item Value
Artifact bcdebug-javaagent-v26.1-Alpha.4.jar (bytecode 52 — JDK 8+)
Commit fd4b347 (SSH-signed, Verified)
Tag v26.1-Alpha.4 (SSH-signed, Verified)

安装说明(中文)

  1. 下载 bcdebug-javaagent-v26.1-Alpha.4.jar。
  2. 统计过滤:/methods?contains=net/minecraft/server&min=500&limit=20。
  3. 1.12 实验档需自备 MCP 派生映射:hookProfile=1.12,mappingsFile=<转换后的proguard.txt>。
  4. Alpha 版本不稳定,请勿用于生产环境。

MIT License — Copyright (c) 2026 BlockConnect

v26.1-Alpha.3 — Control-plane security token

Choose a tag to compare

@StarsailsClover StarsailsClover released this 31 Aug 03:10
v26.1-Alpha.3
f07123f

BCDebugJavaAgent v26.1-Alpha.3

Pre-Release — Alpha builds are functional but unstable. Do not run in production environments.

Highlights

Control-plane security token:

  • New httpToken=<secret> config: when set, every control-plane endpoint
    requires the token — presented as the X-BCDebug-Token header or the
    token query parameter. Empty keeps the loopback-only open default.
  • Constant-time comparison (MessageDigest.isEqual); enforced on BOTH
    frontends (JDK HttpServer + raw socket — the raw frontend now parses
    request headers).
  • TokenGuard unit tests cover open/required/trim semantics; 46 tests green.

True-Java-8 validation

Portable Temurin 8u504 JRE (zip extraction, no system install) ran the
1.12.2/Forge instance via mdl launch --java-path:

Check Result
Attach on real Java 8 banner v26.1-Alpha.3, 8 hooks, init complete
Instrumentation launchwrapper + com.mojang classes recorded
Lifecycle graceful shutdown export (31 method records)
A/B isolation game's LaunchClassLoader failure reproduces identically without the agent — mdl 1.12.2 instance issue, agent innocent

Token live-proof awaits a stable 1.12.2 game session (instance issue above);
guard logic is covered by unit tests.

Build Information

Item Value
Artifact bcdebug-javaagent-v26.1-Alpha.3.jar (bytecode 52 — JDK 8+)
Commit f07123f (SSH-signed, Verified)
Tag v26.1-Alpha.3 (SSH-signed, Verified)

安装说明(中文)

  1. 下载 bcdebug-javaagent-v26.1-Alpha.3.jar。
  2. 多用户主机建议启用令牌:httpToken=<secret>,请求携带
    X-BCDebug-Token: <secret> 头或 ?token=<secret>。
  3. Alpha 版本不稳定,请勿用于生产环境。

MIT License — Copyright (c) 2026 BlockConnect

v26.1-Alpha.2 — Descriptor reverse translation

Choose a tag to compare

@StarsailsClover StarsailsClover released this 31 Aug 02:32
v26.1-Alpha.2
f6cbb88

BCDebugJavaAgent v26.1-Alpha.2

Pre-Release — Alpha builds are functional but unstable. Do not run in production environments.

Highlights

Fully readable exports — the last obfuscation residue is gone:

  • RuntimeMappings.toDeobfDescriptor: every L...; reference inside JVM
    method descriptors is reverse-translated to Mojang names (arrays,
    primitives and unmapped classes pass through). Method statistics in JSONL
    export and /methods payloads now show complete
    class + method + descriptor triples in readable form.

Legacy-pipeline attach validation

Live on the 1.12.2/Forge (LaunchWrapper) pipeline via MDL:

BCDebugJavaAgent v26.1-Alpha.2
Loaded hook provider: MC-26-Hooks (8 hooks)
BCDebugJavaAgent initialization complete
Class loaded: net.minecraft.launchwrapper.Launch
Class loaded: net.minecraft.launchwrapper.LaunchClassLoader
Export complete. Total method records: 2

The agent self-bootstrapped, instrumented the legacy launch classes and
exported cleanly. The game itself crashed on the well-known
Forge-1.12-vs-modern-JVM URLClassLoader cast — unrelated to the agent;
on a true Java 8 runtime this path completes. 43 unit tests green.

Build Information

Item Value
Artifact bcdebug-javaagent-v26.1-Alpha.2.jar (bytecode 52 — JDK 8+)
Commit f6cbb88 (SSH-signed, Verified)
Tag v26.1-Alpha.2 (SSH-signed, Verified)

安装说明(中文)

  1. 下载 bcdebug-javaagent-v26.1-Alpha.2.jar(JDK 8+ 单制品)。
  2. 导出统计现含完整反混淆三元组(类/方法/描述符)。
  3. Alpha 版本不稳定,请勿用于生产环境。

MIT License — Copyright (c) 2026 BlockConnect