マイクラ統合版 JSON UIのおぼえがき

 


はじめに

ひっさびさにJSON UIのこと書く。
もうあれから当分書いてなかった。
どこまで書いたか正確におぼえてないので改めて書こうと思います。

そもそもUIってなんぞや

UIというのは、「ユーザー インターフェース (User Interface)」の略で、
アプリケーションとユーザーが対話することができます。

UIにある特定のボタンをユーザーが押すと処理が実行されます。

パソコンならこんな感じのやつもUIです。(GUIとも言うよ)

マイクラのUIは2種類ある

※これより先「マイクラ」は「マイクラ統合版」を意味します。
「マイクラJava」と混合しないようにご注意
現在、マイクラには「JSON UI」と「Ore UI」の2種類が存在しています。

JSON UIは昔から存在する親しまれたUIです。

JSON UI

Ore UI


JSON UIはリソースパックで改造できますが
Ore UIはリソースパックで改造できません。

今のところOreUIは実績画面や新規作成画面で実装されてますが、
今後遊ぶ画面や死亡画面なども順次展開していくそうです。

UIの小技的な

ここからはマイナーなところが出てくるから初心者の方は気をつけて(?)

変数

変数とは、「変わる数」という意味で「変数」です。
ドルマークから始まるやつが変数です。

変数には、マイクラ側が提供するグローバル変数があります。
これらの変数の情報をもとに、UIの表示内容を変えることができます。

例えば...

{
  "sample_label": {
    "type": "label",
    "text": "Hello!",
    "ignored": "$is_desktop"
  }
}

こんなかんじに ignored を "$is_desktop" に設定した場合、
パソコン版のマイクラ統合版だったらHello!文字は表示されません。

以下が知られているグローバル変数の一覧です。
より引用。

正確に用途がよくわかっていないものや最新バージョンで機能しなくなったものもあるので注意。
変数用途
$game_padコントローラーで操作中であるか。
$mouseマウスで操作中であるか。
$touchタッチで操作中であるか。
$is_desktopパソコン版であるか。
$pocket_editionモバイル版であるか。
$console_editionコンソール版(スイッチやPS4)であるか。
$win10_editionWindows10版であるか。
$is_windows_10_mobileWin10モバイルを使用しているか。
$is_iosiOSまたはiPadOSを使用しているか。
$is_androidAndroidを使用しているか。
$nx_osNintendo Switchを使用しているか。
$is_ps4PS4またはPS5を使っているか。
$xbox_oneXbox Oneを使用しているか。
$osx_edition不明 MacOS関係かも?
$apple_tvサポート終了機種。最新版では使用不可。
$microsoft_osMicrosoft製OS (例えばWindows) であるか。
$apple_osApple製OS (例えばiOS) であるか。
$google_osGoogle製OS (例えばAndroid) であるか。
$education_edition教育版であるか。
$trial試用版であるか。
$is_publish製品版であるか。
$pre_releasePreview版またはBeta版であるか。
$education_edition_china中国版の教育版であるか。
$desktop_screenUIプロフィールが「クラシック」になっているか。
$pocket_screenUIプロフィールが「ポケット」になっているか。
$can_splitscreen分割画面を使用できる機種であるか。
$is_secondary_client分割画面で参加したプレイヤーの画面であるか。
$is_pregameワールドに入る前の状態であるか。
$is_editor_mode_enabledエディターモードであるか。
$is_xboxlive_enabledXboxLiveが使えるかどうか。
$is_mobile_vr不明 VR関係かも?
$is_holographic不明 VR関係かも?
$gear_vr不明 VR関係かも?
$oculus_rift不明 VR関係かも?
$is_living_room_mode不明 VR関係かも?
$is_reality_mode不明 VR関係かも?
$is_on_3p_server不明
$ignore_3rd_party_servers不明
$fire_tv不明
$image_picking_not_supported不明
$multiplayer_requires_live_gold不明
$device_must_be_removed_for_xbl_signin不明
$is_win10_arm不明 Win10の腕ってなんぞや...?()
$is_berwick最新版で使用不可。

こんな感じです。 ほかにもあるかもしれないです。

画像のファイルソース

通常、UIで画像を表示する際、リソースパックから画像を取得します。

{
  "sample_image": {
    "type": "image",
    "texture": "textures/blocks/dirt",
    "size": [ 20, 20 ]
  }
}

しかし、実は他の場所からも取得ができます!
これは割とよく知られていなかったりします。
しかし、通常はリソースパックから画像を取得することをおすすめします。

「へぇこんなところからも表示できるんだぁ」程度で見てってください。

「texture_file_system」というプロパティを使用することで、
どこから画像を取得するかを指定できます。
指定名用途
InUserPackageデフォルト値。リソースパックから画像を取得。
InAppPackageマイクラの内部ファイルから画像を取得。
RawPath完全パスで画像を取得。

InUserPackageは、デフォルト値で、いつものようにリソースパックから画像を取得できます。
InAppPackageは、マイクラの内部ファイルから画像を取得できます。

例えば...

{
  "sample_image": {
    "type": "image",
    "texture": "resource_packs/vanilla/textures/blocks/dirt",
    "texture_file_system": "InAppPackage",
    "size": [ 20, 20 ]
  }
}

このコードでは、マイクラの内部ファイルから参照して土ブロックのテクスチャを
表示しています。

ポイントは、内部ファイルから取得しているので、
土ブロックのテクスチャを変更するリソースパックを適用していても、
バニラの土ブロックのテクスチャが表示される点です。

覚えておくと便利かもです。


一方、RawPathは、完全パスで画像を取得します。
完全パスと言うのは、 C:\Users\ ...とかの完全なファイルパスです。

例えば...

{
  "sample_image": {
    "type": "image",
    "texture": "C:/Users/<ユーザー名>/AppData/Local/Packages/Microsoft.MinecraftUWP_8wekyb3d8bbwe/LocalState/games/com.mojang/aaa.png",
    "texture_file_system": "RawPath",
    "size": [ 20, 20 ]
  }
}

このコードはcom.mojang直下にあるaaa.pngを表示させます。(Windowsの場合)
ちなみにユーザー名にはユーザー名フォルダが入ります。
大抵の場合登録してるメールアドレスの最初の5文字になってると思います。
わからない場合は実際にC:\Users\にアクセスして確認しましょう。

ちなみに...

{
  "sample_image": {
    "type": "image",
    "texture": "F:/DCIM/今日の思い出写真/IMG_1003.JPG",
    "texture_file_system": "RawPath",
    "size": [ 20, 20 ]
  }
}

この状態で表示させようとしても表示されません。
たとえ F:/DCIM/今日の思い出写真/IMG_1003JPG が本当に存在していてもです。

Windowsの場合、RawPathで参照できる場所は制限されていて、基本
「Microsoft.MinecraftUWP_8wekyb3d8bbwe」のフォルダ
(Previewの場合「Microsoft.MinecraftWindowsBeta_8wekyb3d8bbwe」)

の中しか参照できません。

ちなみにスマホの場合どこでも表示できるっぽい。

おわりに

今後も増やすかも。

UIは奥が深いからみんなもやってみよう()
大丈夫! 私もよくわかってない部分あるから()

コメント

コメントを投稿

このブログの人気の投稿

Gote-Supporter - マイクラ統合版 リソースパック

WiiUやPS3版マイクラにあった「バトルミニゲーム」を再現したワールド