Minecraft リソースパック UI解析 6日目

UIの検証

前回はファイルのコメントの削除をしたので、改めて検索プログラムを活用して検証を進めていきたいと思います。また、この回は検証のみをするのでまとめ回は次回行います。

 

結局プログラム

MinecraftのWin10版を持っていれば必要なかったのですが、iOS版しかもっていなかったので作業を効率化するために自動でパックを作るプログラムを書きます。

 今まで使ってきたファイルとは別のファイルに書きました。

流れ:manifest書き換え・ZIP化・名前変更

これをiOS端末から共有する... まあまあ時短にはなった。

 

鍛冶台のUIをいじったときの挙動の変化の記録

それぞれの検証は初期状態から一つだけ動かした対照実験になっている。あくまでもiOS版の検証である。機種によって動作が異なる場合がある。

プロパティを一つずつ削除したりして検証をしています。中には検証の必要がないということで飛ばしているものもあります。検証の記録が読者の方々の役に立てば幸いです。

Minecraftのバージョン:v1.16.201

  1. ui/smithing_table_screen.jsonのみで動作するか -> 問題なく動作
  2. 継承をつなぎ合わせて元を調べる -> smithing_table_screenが元
  3. (2)よりファイル名が元になる可能性あり -> ファイル名が正しく、かつ元の名称が正しくないと実行されない。
  4. (3)より元もまたどこからか継承されている可能性あり -> 元を継承するものはなかった。
  5. ファイル名は_ui_defs.jsonからインポートしている可能性あり -> _ui_defsを書き換えて(3)と同様に試してみたが実行されなかった。
  6. smithing_table_screen@common.inventory_screenの話
  7. $close_on_player_hurt|defaultの値をfalseに変更 -> ダメージ時にuiが閉じなくなる
  8. close_on_player_hurtの値をfalseに変更 -> 上と同様
  9. (7),(8)より$~|default変数は変更しない方がよい、かつ初期値は普通の変数は$~|defaultが代入される
  10. requiresを削除 -> uiがすべて消えた状態になる 他のファイルよりUIプロフィール(pocketかクラシック)の二種類だけではない
  11. $screen_contentを削除 -> uiなし、影のみで操作不能
  12. $screen_contentの値をpocket版に変更 -> pocket版になる
  13. $screen_bg_contentを削除 -> ui周りの影が消える
  14. smithing_table_panelの話
  15. typeを削除、typeの値をimageに変更 -> 変化なし(見やすさ? もしくは特定の部品にしか必要ない?)
  16. container_gamepad_helpersを削除 -> 変化なし(継承元の確認が必要)
  17. flying_item_rendererを削除 -> アイテムの移動アニメーションが消えた
  18. selected_item_details_factoryを削除 -> アイテム説明欄が消えた
  19. root_panelを削除 -> (11)と同様 uiなし、影のみで操作不能
  20. flying_item_renderer内layerを1に変更 -> アイテムの移動アニメーションが消えた(uiのwindowの後ろに隠れた可能性大)
  21. flying_item_renderer内layerを2に変更 -> アイテムの移動アニメーションがインベントリやホットバーの後ろで存在 (20)の仮定は正しかった また、controls内は上から順に表示される可能性あり -> 順番を変えても変化なし
  22. root_panel内common_panelを削除 -> uiのwindow部分のみ消えた 機能は存在 
  23.   smithing_table_screen_inventoryを削除 -> uiのwindow部分のみになる 機能なし 
  24.   inventory_selected_icon_buttonを削除 -> 変化なし(継承元の確認が必要)
  25.   gamepad_cursorを削除 -> 変化なし(その他の機種用?)
  26.   smithing_table_screen_inventory内top_half_panelを削除 -> インベントリ、ホットバーのみになる
  27.     inventory_panel_bottom_half_with_labelを削除 -> インベントリが消える ホットバーは存在
  28.     hotbar_gridを削除 -> ホットバーが消える インベントリは存在
  29.     inventory_take_progress_icon_buttonを削除 -> 変化なし(継承元の確認が必要)
  30. top_half_pannelの話
  31. anchor_fromの値を変更(値は他のファイルから収集) ->
  32. anchor_toの値を変更(値は他のファイルから収集) ->
  33. sizeの値を[ "50% - 14px", "25% - 14px" ]に変更 -> 
  34. sizeの値を[ "100% - 0px", "50% - 0px" ]に変更 -> 
  35. offsetの値を[ 0, 0 ]に変更 -> 
  36. sizeの値を[ "100%", "100%" ]、offsetの値を[ 0, 0 ]に変更 -> 
  37. レイアウトの話
  38. size, offset, anchorの値から検証 -> 
  39. (38)について 赤はsize,青はoffset、upgrade_labelの位置が少しずれているように見える
  40. upgrade_labelのanchorをtop_leftに、offsetを[ 0, 0 ]に変更 -> 
  41. よって、(40)は正しい
  42. upgrade_labelのtext -> リソースパックのtextsに記述あり
  43. bindingsとは -> Minecraftの内部パラメータと別のパラメータを結び付けるもの?(推測) bindingsの中にoverrideの記述があるため
  44. ボタン(ネザライトツールの出てくるところ)と動作の話
  45. ※再掲 iOS版での仕様なのでWin10版とは違う可能性あり
  46. 通常状態の挙動
  47. クリック(長押しから離すものも含む):アイテムの取り出し、アイテム説明欄の表示
  48. ダブルクリック:できない(一回目で動作が始まるため)
  49. 長押し:アイテム説明欄の表示
  50. smithing_table_output_slot_buttonについて ブロックを一つだけ残すと順に
  51. 通常通り, 反応なし×7, ダブルクリックで同様の動作, 反応なし×2
  52. iOSで必要な部分は一つ目ということが分かった。ただ、他のUIではスタックアイテムなど鍛冶台とは異なる部分が多いので要検証。

 

次回やること

今回の検証でuiがどのように構築されているかがある程度理解できました。次回は今回の検証のまとめを書こうを思います。