Emperor-reborn: リーク MCP ソースを土台にした Minecraft 1.8 モジュラークライアント
MCP(Mod Coder Pack)を土台に作った Minecraft 1.8 クライアントだ。動機は単純で、ゲームクライアントの内部がどう動いているかに興味があり、1.8 は今も PvP 界隈の定番戦場だった。リークされたクライアントソースを分解し、読み、書き直すのが、その一式を理解するいちばん早い道だと判断した。Emperor-reborn は要するに、他人のリーク基盤の上に自分で組み直したモジュール式 utility client で、対象はバニラ、Hypixel、網易 HYT 系の国服だ。
どう組んだか
散らばった機能の山ではなく、フレームワークとして切った。モジュールは dev.emperor.module.modules 以下にカテゴリ分けしている。戦闘(KillAura、AutoClicker、各アンチチート向け Velocity 変種、BowAimbot、BackTrack)、移動(Fly、Speed、Strafe、Timer、NoSlow)、プレイヤー(NoFall、Blink、ChestStealer、FastEat)、描画(ESP 系、ClickGui、HUD、Chams、XRay)、ワールド(Scaffold、AutoPearl、Eagle)、その他(PingSpoof、Disabler、AntiBot)。
本当にハマったのは下層だ。カテゴリ付き module manager、各モジュールに載せる Bool / Number / Mode / Color / Text の value 系、優先度付きイベントバス(@EventTarget)、コマンド系(既定プレフィックス .、bind / toggle / config / help)。設定は ConfigManager、起動時に loadAllConfig()。多バージョンは ViaVersion / ViaBackwards / ViaRewind を ViaMCP として内蔵し、1.8 の殻で上位バージョン鯖に繋ぐ。国服向けの論理と UI は dev.emperor.hyt。描画は utils/render と utils/novoshader でカスタム shader・フォント・アニメをいじった。
技術スタックと落とし穴
言語は Java(JDK 17)、プラットフォームは MCP 下の MC 1.8。ビルドは正直に言うと Maven も Gradle もなく、IntelliJ プロジェクトとローカル lib/ の jar 手動参照。lib/minecraft に LWJGL・netty・authlib など、lib/client に Via 一式・ASM 9.3・fastjson・Lombok。入口は Start.java で、起動引数を組んで net.minecraft.client.main.Main に渡す。
Main.main(concat(new String[] {
"--version", "mcp", "--accessToken", "0",
"--assetsDir", "assets", "--assetIndex", "1.8",
"--userProperties", "{}"
}, args));
実際に動かすのが一番しんどい。デコンパイル済み MC と OptiFine が混在し、assets / natives は自分で用意、リポジトリに即動く起動スクリプトはない。読むなら Start.java → dev.emperor.Client(manager 初期化)→ module / event / config の順が素直だ。
いまの状態
アーカイブ済み。練習と構造の参照用で、ビルドや実行は保証しない。振り返ると「ゲームクライアントを頭から分解する」一通りの演習だった。module + event + config の骨格は、あとで別物を作るときにもまだ効いている。