Repository navigation
多バージョン対応版 (4.0.0) と CI / 自動リリース - #13
Merged
Merged
Conversation
- core: Minecraft に依存しない共通ロジック (看板フォーマット、画像の取得とデコード、 アップロード、設定、ゲーム内 GUI) を Java 8 で実装 - adapters/v1_12: Minecraft 1.12 系向けの実装 (Forge / LiteLoader) - bootstrap: 実行中のバージョンに合った実装を選んで起動する入口 - dist: 全ローダー共通の jar と LiteLoader 用 .litemod の組み立て - tools/verify: バニラサーバーと実クライアントで動作確認を自動で行うスクリプト ブラウザの WebUI はゲーム内の画面に置き換える。 Forge 1.12.2 でバニラサーバーに参加し、サバイバルモードで看板に画像を 書き込んで表示できることを実機で確認済み。
- チャットのメッセージを Minecraft のほぼすべての言語に対応 (翻訳がない言語は近い言語に割り当てる) - チャットは Mod の名前をオレンジ、本文を黄緑で表示する - URL 短縮サービスを複数用意し、失敗したら次を試す - 検証スクリプト: LiteLoader の起動プロファイル作成、 Mod なしの基準ログとの差分による警告の判定を追加 Forge 1.12.2 と LiteLoader 1.12.2 で、基準と比べて新しい警告やエラーが 出ないことを実機で確認済み。
- 1.7.10 - 1.12.2 の実装を共通部分 (adapters/legacy) と バージョンごとの差分 (Mc, SignRenderer) に分割 - 画像は看板のレンダラーではなくワールド描画の最後に描く。 看板のブロックが視界の外にあるときや遠いときでも表示される - 画像の読み込み中に起きた想定外のエラーを必ず記録する - 検証スクリプト: 対応表にある組み合わせを順に確認する matrix.py を追加し、 スクリーンショットにテスト画像が正しい向きで写っているかも判定する Forge と LiteLoader の 1.7.10 / 1.12.2 を実機で確認済み。
- 1.8, 1.8.8 - 1.8.9, 1.9 - 1.9.4, 1.10 - 1.10.2, 1.11 - 1.11.2 の差分ファイルを追加 - 対応表 (targets.json) は tools/gen_targets.py から生成する - 検証スクリプト: LiteLoader のリリース版とスナップショット版の両方に対応
ローダーの API や Mixin を使わず、タイマーからメインスレッドへ処理を渡し、看板のレンダラーは既存のものを包んで差し替える。Fabric 用はバージョンごとの jar を入れ子にして同梱し、Fabric Loader に選ばせる。キーの名前は翻訳に頼らない固定の文字列にした。
- 1.21.9 以降: 文字用の描画設定を使い、画像の色がそのまま見えるようにした - 検証スクリプト: NeoForge は公式インストーラーで導入、ランチャーの通信にタイムアウトと再試行を追加、スクリーンショットの判定を明るさに左右されない方式に変更 - README を新しい構成に合わせて書き直し、確認結果の一覧を生成する report.py を追加
- modern (共通)、classic / renderstate (入力とレンダラーの方式)、tex_* (テクスチャの作り方)、バージョンごとの差分に分け、組み合わせて各バージョンを構成する - 1 つのビルドが API の同じ複数のバージョンを受け持てるようにした - 保存済みのキー割り当ては options.txt から個別に読む (設定全体の再読み込みで出るバニラのエラーを避ける) - 検証スクリプト: 26.3 のサーバーでホワイトリストを無効化、実行ごとに変わるハッシュ値を正規化
- FFmpeg を別のプロセスとして動かし、映像の生フレームと音声の PCM を TCP で受け取って再生する。読める形式と GPU でのデコードは FFmpeg に任せる - URL の先頭だけを読んで画像かどうかを判定し、画像でなければ動画や音声として再生する - 誰も見ていない間は再生を止め、距離に応じて音量を変える。音量は設定画面で変更できる - 画面: 動画・音声ファイルの選択、サムネイルの表示、200MB までのファイルのアップロードに対応 - FFmpeg がない場合は、最初の 1 回だけチャットで知らせる (全言語分の翻訳を追加) - 1.15 - 1.19.4 と 1.14 向けの実装を追加 (ビルドの確認はこれから) - 検証: 看板そのものが消えていることも画面から判定する。範囲指定に対応したテスト用 HTTP サーバーを追加
…けの実装を追加 - glTF 2.0 の読み込み、アニメーション、スキニング、モーフィング、材質の陰影の計算を core に追加 - 法線マップなどの細かい表現は、読み込み時にテクスチャへ焼き込む - 描画を「テクスチャごとの頂点と色」のまとまりで行う形に変更 - 設定画面で 3D モデルのプレビューとアップロード (.gltf は .glb にまとめる) に対応 - 実機での確認を、1 回の起動で画像・3D モデル・動画の順に行うように変更 - 看板アイテムを描くための共通部分 (アイテム用の描画データ、保存された文字の読み取り) を追加 - バージョンごとに細部が違うファイルの生成スクリプトを tools/gen_adapters.py として追加
- 1.7.10: Forge はアイテム用のレンダラーの登録、LiteLoader はレンダラーの差し替えで対応 - 1.8 - 1.8.9: アイテムのモデルを選ぶ部分と、専用の描画を行う部分を包む - 1.9 - 1.12.2: アイテムを描く共通の部分を差し替える - 1.17 - 1.21.3: アイテムのモデルを選ぶ部分と、専用の描画を行う部分を包む - 1.21.4 以降: アイテムのモデルの表にある看板アイテムのモデルを包む - 実機での確認に、看板アイテムの見た目の確認を追加
… の一部の組み合わせ用) し、確認ツールのバージョン比較の誤りを修正
…を少し後で消すようにした) し、確認ツールで OpenGL のエラーも検出するように変更
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
Minecraft 1.7.10 から 26.3 までを 1 つの jar にまとめた多バージョン対応版 (4.0.0) を main に入れます。
tools/verify) と、全バージョンの確認結果ドキュメントを追加.github/workflows/ci.yml): PR とブランチへのプッシュでビルドし、jar を成果物として保存.github/workflows/release.yml): main に入ったとき、gradle.propertiesのmod_versionのタグ (v4.0.0など) がまだなければ、ビルドして GitHub Release を作る.github/scripts/check-no-ffmpeg.shで、jar と Fabric 用の中の jar に実行ファイルが無いことを CI とリリースの両方で確認する (利用者が自分で用意する)確認
./gradlew :dist:assembleでビルドできる (手元で確認済み)Ffmpeg.classだけ)