ワッ…!!空中に……画像が浮かぶ……ってコト!?!? しかも、ずっとこっちを見てくる……!!ヤハーーーッ!!!
Paper 1.21.11 用のプラグイン!!Java 21 で動く!! 前提プラグインはいらない!!ひとりで立てる……えらい……!!
- ソースコード … AzisabaNetwork/FloatingImage !!ここ!!
- リソースパックたち … azisaba/resourcepacks !!画像はこっちに置く!!
- azisaba/resourcepacks に画像を置いて push する!!
- GitHub Actions がリソースパックに変換してくれる!!なんか……勝手にやってくれる……!!
- いつも通りリソースパックを更新する!!(sha1 とか)
- サーバーで
/fimg reload!! /fimg place <ID>で、目の前にドン!!ウラ!!
置いた画像はワールドに保存される!!再起動しても消えない!!やったーーッ!!
ファイル名がそのまま画像 ID になる!!
大文字は小文字になって、英数字と _ . - 以外は _ になる……ってコト!?
Server Logo.png→server_logo!!- 長辺が 512px より大きい画像は、自動で縮む!!ちいさくなっちゃった……!!
- PNG の透明なところは、ちゃんと透明!!スケスケ……!!
| 値 | どうなる!? |
|---|---|
center |
上下左右、ずっとこっちを見てくる!!(最初はこれ) 見てる……!! |
vertical |
左右だけこっちを向く!!看板っぽい……!! |
horizontal |
上下だけこっちを向く!!使いどころ……ある……? |
fixed |
動かない!!置いたときにこっちを向いて、そのまま……フ…… |
権限は floatingimage.admin !!(OP には自動で付く)
別名で /floatingimage も使える!!長い……!!
| コマンド | 内容 |
|---|---|
/fimg place <ID> [大きさ] [billboard] |
目の前に画像を置く!!大きさは長辺のブロック数!!デカい……!! |
/fimg remove [半径] |
近くの画像を 1 つ消す!!(半径の初期値は 5 ブロック) 討伐ーーーッ!! |
/fimg list |
読み込んである画像の一覧!!いっぱいある……!! |
/fimg reload |
設定と画像の一覧を読み直す!! |
place と remove はプレイヤーだけ!!コンソールからは……できない……泣いちゃった……!!
floatingimage/images/ 画像 (PNG / JPG) を置くところ!!
<パックのフォルダ>/ いつものパック!!ここの assets/floatingimage/ に変換結果が入る!!
floatingimage/にはpack.mcmetaがないから、zip が勝手に増えたりしない!!安心……!!- jar は置かなくていい!!CI が毎回、最新版を取ってくる!!(下の「リリース!!」を見てね)
- 変換結果はコミットしない!!
<パックのフォルダ>/assets/floatingimage/は.gitignoreに入れておくと安全!!
いまのワークフローの actions/checkout のすぐあとに、これを 3 つ足すだけ!!
(全体の例は examples/resourcepack-ci.yml !!)
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '21'
- name: FloatingImage の最新版を取得する
run: curl -fsSL -o "$RUNNER_TEMP/FloatingImage.jar" https://github.com/AzisabaNetwork/FloatingImage/releases/latest/download/FloatingImage.jar
- name: FloatingImage の画像をリソースパックに変換する
run: java -jar "$RUNNER_TEMP/FloatingImage.jar" generate --images floatingimage/images --out <パックのフォルダ>jar は $RUNNER_TEMP に置くから、パックの zip には入らない!!まぎれこまない……!!
zip を作る前に画像が組み込まれるから、そのあとの zip 化と Release はそのまま!!なんとかなれーーーッ!!!
Release の FloatingImage.jar を plugins/ に入れて起動する!!
画像の一覧は、server.properties の resource-pack の zip から読む!!
別の URL から読みたいときは plugins/FloatingImage/config.yml に書く!!
source: remote
remote:
pack-url: https://github.com/<owner>/<repo>/releases/latest/download/<パック名>.zipAzisabaNetwork/FloatingImage
main に push → Actions がビルドして、Release に FloatingImage.jar を付ける!!
│
▼ CI が最新版を取ってくる!!
azisaba/resourcepacks
floatingimage/images/*.png を push!!
│ Actions が CLI で変換して、パックの assets/floatingimage/ に出す!!
│ → いつもの zip 化と Release!!
▼
サーバー (このプラグイン)
Release の zip から assets/floatingimage/index.json を読んで、画像 ID を覚える!!
▼
/fimg place <ID> でドン!!
- 画像 …
item_modelを付けた紙をItemDisplayで浮かせてる!!紙……!? - モデル … 画像の縦横比に合わせた、厚みゼロの板!!ペラペラ……!!
- 明るさ … いつでも最大!!夜でも洞窟でも、くっきり見える!!まぶしい……!!
- パックの配布 … プラグインはやらない!!今まで通り
server.propertiesとかでやる!!
他のプラグインからも画像を置ける!!メインスレッドから呼んでね!!
FloatingImageAPI.spawn("server_logo", location, 3f)FloatingImageAPI.spawn("server_logo", location, 3f, Display.Billboard.CENTER);| メソッド | 内容 |
|---|---|
ids() |
読み込んである画像 ID の一覧!! |
exists(id) |
その画像 ID ある!? |
spawn(id, location, size, billboard) |
画像を置いて、ItemDisplay を返す!! |
isImageDisplay(display) |
このプラグインが置いた画像!? |
config.yml を見てね!!
| キー | 初期値 | 内容 |
|---|---|---|
source |
remote |
remote: 配布中のパックから画像の一覧を読む!! / local: サーバーでパックを作る!! |
load-on-enable |
true |
起動したときに画像の一覧を読む!! |
remote.pack-url |
"" |
画像を組み込んだパックの zip の URL!!空なら server.properties の resource-pack !! |
display.default-size |
2.0 |
大きさを省略したときの長辺のブロック数!! |
display.default-billboard |
CENTER |
billboard を省略したときの向き!! |
display.view-range |
1.0 |
見える距離の倍率!!(1.0 で 64 ブロックくらい) 遠い……!! |
display.place-distance |
2.0 |
/fimg place で目の前の何ブロック先に置くか!! |
GitHub を使わないで、plugins/FloatingImage/images/ の画像からサーバーでパックを作る!!
できた pack/ をいつものパックに混ぜるか、pack.zip を自分で配る!!プラグインは配らない……!!フ……
| キー | 初期値 | 内容 |
|---|---|---|
pack.output-dir |
pack |
出力先!!(プラグインフォルダからの相対パスか、絶対パス) |
pack.create-zip |
true |
zip にもまとめる!! |
pack.zip-file |
pack.zip |
zip の出力先!! |
pack.pack-format |
75 |
pack.mcmeta がないときに書き込む値!! |
pack.max-texture-size |
512 |
テクスチャの長辺の最大ピクセル数!! |
jar はひとりでも動く!!Paper がなくても、画像をリソースパックに変換できる!!えらい……!!
java -jar FloatingImage.jar generate --images <画像フォルダ> --out <出力先> [--max-size 512] [--pack-format 75]出力先にできるもの!!assets/floatingimage/ は毎回作り直す!!
もともとある pack.mcmeta は上書きしない!!さわらない……!!
pack.mcmeta (ないときだけ)
assets/floatingimage/index.json 画像 ID の一覧!!サーバーが読む!!
assets/floatingimage/items/<ID>.json item_model の定義!!
assets/floatingimage/models/item/<ID>.json 縦横比に合わせた板のモデル!!
assets/floatingimage/textures/item/<ID>.png テクスチャ!!
AzisabaNetwork/FloatingImage の main に push すると、
Actions がビルドして Release を作る!!タグは action-v<番号> !!勝手にできる……!!
Release には FloatingImage.jar が付く!!名前はいつも同じ!!
だから releases/latest/download/FloatingImage.jar で、いつでも最新版が取れる……ってコト!?!?
- サーバーに入れるプラグインも、resourcepacks の CI が使う CLI も、この同じ jar !!
- 壊れた版を main に push すると、resourcepacks のビルドも一緒に壊れる!!ヤダーーーッ!!! push する前に、手元でビルドと動作を確かめてね!!
./gradlew buildbuild/libs/FloatingImage-<version>-all.jar が、プラグインにも CLI にもなる!!一石二鳥……ってコト!?!?
プルルルル……ヤハ!!!