Skip to content

About

Put anything, not just swords and axes, on a Sword Display (Forge 1.20.1)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Sword Display Anything

Sword Displays の剣立て・壁掛け・ケースに 「剣・斧」以外も置けるようにする 1クラスの MOD。

  • 対象: Minecraft 1.20.1 / Forge 47 系。side=BOTH(判定自体はサーバ側で走るが、構成を揃えるため両方に置く)
  • 前提: sworddisplay(Sword Displays 2.1.0 以降)。無ければ読み込まれない
  • ビルド: Git Bash から export JAVA_HOME=/path/to/jdk-17 && ./gradlew build --no-daemon(JDK 17) → build/libs/sworddisplay_anything-1.0.0.jar(4KB・ビルド確認済み / 実機は未確認)

なぜ作ったか

Sword Displays が受け付けるのはタグ照合3つだけ:

見ているタグ 実体
MOD 独自 sworddisplay:swords
ItemTags.SWORDS minecraft:swords
ItemTags.AXES minecraft:axes

個別に増やすだけなら datapack でタグに足せば済む。 ただしタグにワイルドカードが無いので「何でも置ける」は datapack では書けない。 部の要望は「クリーバーも本も飾りたい=何を飾るかはプレイヤーの気持ち」なので、判定ごと外した。

この MOD を入れるなら datapack sword_display_extra は不要(入れっぱなしでも二重に効くだけで害はない)。 逆に「MOD は増やしたくない」なら datapack だけ入れて、飾れる範囲を列挙で決める。

何をしているか

SwordDisplayBlock#use(SRG m_6227_)の中の ItemStack.is(TagKey) 3か所を @Redirect で置き換え、 空でないアイテムなら常に true を返す。

  • 3か所しかないことは bytecode で確認済み。いずれも「置けるか」の判定にしか使われていない
  • 壁掛けとケースも一緒に効く: SwordWallDisplayBlock と SwordCaseBlock は SwordDisplayBlock を継承し use を上書きしていない → 1本で全78ブロック
  • 取り出し(スニーク+空手)には触れない。その分岐は判定より前にあるため

壊れないと言える根拠

  • 表示物は SwordDisplayTile の NBT キー displayed_item に ただの ItemStack として入る
  • 描画は ItemStack をそのまま描くだけ
  • SwordItem へのキャストがどこにも無い(ブロック3種・タイル・描画クラスを逆アセンブルして確認)

→ 任意アイテムでも型では落ちない。 ⚠ ただし 見え方は保証されない(台座の回転・拡大は薄い剣モデル向け)。 ブロック系はめり込む・浮く可能性がある。これは実機で撮って判断する。

⚠ 当て先は SRG 名で書く必要がある

method = "use" と書くと、Mixin の注釈プロセッサが Unable to determine descriptor for @Redirect target method と警告し、 refmap に写像が入らない(配布 jar の SwordDisplayBlock は既に m_6227_ で持っているため)。 そのまま出すと実行時に当たらない。m_6227_ +完全な descriptor で書くと警告が消える。 ItemStack.is の方は refmap に m_204117_ として入る(jar の sworddisplayanything.refmap.json で確認済み)。

未確認(実機で見ること)

  1. クリーバー・本・ブロックが実際に置けること(現状は「ビルドが通った」までしか言えない)
  2. 置いたときの見え方(スクショ)
  3. 起動時に mixin エラーが出ないこと(Docker ブートテスト+クライアント)

About

Put anything, not just swords and axes, on a Sword Display (Forge 1.20.1)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages