A Minecraft Forge mod: stand on the Firework Launcher, give it a redstone signal, and you are launched into the sky — at the top of the arc you burst into a firework shaped like your own skin's face.
It adds very very very random things.
If you want some more details, you should read the sentence below.
Japanese Desc
| Minecraft | 1.20.1 |
| Loader | Forge 47.4.22+ |
| Side | クライアント・サーバー両方に必要 |
レシピ
花火ランチャー(火薬8+スライムブロック1)
| 火薬 | 火薬 | 火薬 |
| 火薬 | スライムブロック | 火薬 |
| 火薬 | 火薬 | 火薬 |
ヘッドコレクター(鉄4+ハサミ1)
| 鉄 | ||
| 鉄 | ハサミ | 鉄 |
| 鉄 |
使い方 1 : 自分が花火になる
- 花火ランチャーを設置する
- その上に立つ
- レッドストーン信号を入れる
約50ブロック上空まで打ち上げられ、頂点で爆発します。花火が開くと同時に、
<プレイヤー名> は打ち上げ花火になった
というデスメッセージとともに死にます。約50ブロック上空で死ぬのでアイテムが散らばります。
keepInventory を有効にしておくのがおすすめです。
使い方 2 : 頭を置いて打ち上げる(誰も死なない)
花火ランチャーの上にプレイヤーの頭を置くと、レッドストーン信号でその頭の持ち主の花火が 打ち上がります。頭は消費されず、誰も死にません。 何度でも撃てるので、花火大会の装置に使えます。
打ち上げから約1.6秒で、50ブロック上空に開きます。
頭の持ち主がオフラインでも、そのサーバーに来たことがなくても動きます。
プレイヤーの頭の入手
ヘッドコレクターを使います。
| 操作 | 結果 |
|---|---|
| 左手に mob の頭を持って、プレイヤーを右クリック | そのプレイヤーの頭 |
| 左手に mob の頭を持って、スニーク+右クリック | 自分の頭 |
材料になる mob の頭は、スケルトン・ウィザースケルトン・ゾンビ・クリーパー・ピグリン・ドラゴンの
6種類(アイテムタグ playerfireworksyeah:mob_heads。データパックで追加できます)。
mob の頭は1個消費されますが、ヘッドコレクター自体は消耗しません。
仕組み
- スキンの取得はすべてクライアント側で行います。サーバーは「誰が・どこで爆発したか」だけを送り、 各クライアントが手元のスキンからピクセルを読んで花火を組み立てます。外部APIへの通信は一切ありません
- 頭から撃つ場合は、エンティティIDの代わりに
GameProfileを送ります。持ち主がワールドに居なくても スキンを引けるようにするためで、これによりオフラインのプレイヤーの花火も打ち上がります - スキンのピクセルは、まず
ResourceManagerから(デフォルトスキン・リソースパック差し替え用)、 取れなければ GPU からテクスチャを読み戻して取得します(実際にダウンロードされたスキン用) - 花火の絵は見ている人それぞれのカメラ位置に合わせて向きが決まるので、誰から見ても正面を向き、 左右も反転しません
- パーティクルはバニラの花火スパーク(
spark_0〜spark_7)を使用。1スキンピクセルあたり 3×3 = 9粒、計576粒で顔を描きます
ビルド
./gradlew build
build/libs/ に jar が出力されます。開発環境で動かす場合は ./gradlew runClient。
調整
数値はすべて定数として切り出してあります。
| 項目 | 場所 |
|---|---|
| 打ち上げの初速(3.5 ≒ 50ブロック、上限3.9) | LaunchManager.LAUNCH_POWER |
| 花火の大きさ・粒の密度・散らばり | ClientBurstHandler 冒頭 |
| 顔を保持する時間・寿命・垂れ下がり | SkinSparkParticle |
ライセンス
MIT License. LICENSE を参照してください。

