Repository navigation
Conversation
- 読み込みと描画は Apache PDFBox 2.0 (Java 6 以降で動く)。配布する jar に同梱し、他の Mod とぶつからないよう dist の shadeCore でパッケージ名を marumasa.marumasa_sign.lib の下に変える (中のファイルと、それを指す文字列も)。 ログの出力先 (Commons Logging) は同梱せず、MarumaSign のロガーに書く代わりのクラスにつなぐ - ページは 1 枚ずつ、長い辺 1024 ピクセルで別のスレッドで描き、前後のページを先に描いておく - 看板の絵に照準が合っている間だけ、絵の下側に帯 (戻る・進むボタンと「現在 / 総ページ数」) を重ねて描く。 見た目は MarumaSign の画面と同じテーマ。照準が外れると消える。照準は各バージョンの Platform.crosshair で受け取る - 照準が絵に合っている間の使用キー (右クリック) はページ送りに使い、ゲームには渡さない。 ゲームの使用キーを、先に MarumaSign.useClicked を呼ぶものに置き換える (1.14 以降は KeyMapping、それより前は KeyBinding) - 画面: PDF のファイルを選んでアップロードでき、プレビューに 1 ページ目とページ数を出す - 動作確認: tools/verify に 2 ページの test-pdf.pdf を追加。SelfTest は進むボタンに照準を合わせて帯が出ること、 クリックで 2 ページ目に進むこと、照準を外すと帯が消えることを確かめ、verify.py は各場面の画面を記録して 2 ページ目の絵を判定する - :core:pdfCheck で、Minecraft を起動せずに表示とページ送りを確かめられる
malken21
added a commit
that referenced
this pull request
Oct 18, 2026
Member
Author
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.
Closes #20
できること
.pdf) を表示します。最初は 1 ページ目です。左右に戻る・進むボタン、中央に「現在のページ / 総ページ数」。照準を外すと消えます。
照準が絵に合っている間の使用キーはページ送り専用で、ブロックを置いたり看板の編集画面を開いたりしません。
ページの切り替えは自分の画面だけで、同じ URL の看板はすべて同じページになります。
仕組み
1 つの jar に同梱し、
distのshadeCoreでパッケージ名をmarumasa.marumasa_sign.lib.{pdfbox,fontbox}に変えます(中のフォントや CMap などのファイルと、それを指す文字列も)。Commons Logging は同梱せず、MarumaSign のロガーに書く代わりのクラス (
lib.logging) につなぎます。ライセンスは他の取り込んだライブラリと同じ
marumasa_sign/licensesに入れます。jar は 2.7 MB → 7.3 MB。Theme.paintPageBarで描いたテクスチャを、照準が合っている看板にだけ、追加の四角形 (SignImage.Batch) として返します。各バージョンの描画は、看板のブロックの位置を
SignImage.batchesに渡すだけです。照準の判定は、
Platform.crosshair()(目の位置・視線・照準が当たっているブロックまでの距離) と絵の四角形の交差で、裏から・壁越し・6 ブロックより遠くでは出ません。
MarumaSign.useClicked()を呼ぶもの (UseKey) に置き換えます。1.14 以降は
KeyMapping、1.7.10 - 1.12.2 はKeyBindingの子クラス。キーの割り当てはそのまま引き継ぎます。26.3 は入力が SDL になっていて GLFW のコールバックを差し替える方法が使えないため、キーの側で受けています。
動作確認の仕組み
tools/verify/test-pdf.pdf(make_test_pdf.pyで作成): 1 ページ目はテスト画像と同じ 4 色、2 ページ目はそれを 180 度回したもの。図形と標準フォント (埋め込みなし) で描いてあり、PDF の描画とフォントの代替も通ります。
matrix.pyの媒体にpdfを追加。SelfTestは、進むボタンに照準を合わせて帯が出ること、クリックで 2 ページ目に進むこと、照準を外すと帯が消えることを確かめ、
verify.pyはそれぞれの画面を記録して、2 ページ目の絵が写っているかを判定します。./gradlew :core:pdfCheck -PpdfArgs="tools/verify/test-pdf.pdf build/pdf": Minecraft なしで、読み込み・照準・クリック・裏から/壁越しで出ないことなどを確かめます。確認
./gradlew :dist:assemble: 成功。コンパイラーの警告・注意は main と同じ (この変更で増えたものはなし)python tools/check_linkage.py: 112 の組み合わせすべてで問題なしSignPdfCheck(配布用にパッケージ名を変えたクラスを、Java 8 で実行): すべて成功tools/verify): 下に追記します注意
(結果はホームフォルダの
.pdfbox.cacheに保存され、2 回目からは速い)。フォントが約 5900 個ある手元の環境では、初回に約 5 分かかりました。プレビューの「PDF、N ページ」は 115 言語すべてに追加しました。