Skip to content

RuskEocssar/DisplayUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

323 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DisplayUI

DisplayUIとは、ディスプレイエンティティ(minecraft:item_display,minecraft:block_display,minecraft:text_display)を使って、ゲーム内で使えるGUIを作れるデータパック。

目次

用語

用語 意味
ディスプレイUIエンティティ ディスプレイを構成するエンティティのまとまり、およびディスプレイUIを見かけ上ひとつのエンティティとして扱うためのくくり。狭義には、一番下層にいるディスプレイエンティティを乗せたエンティティのこと。
ディスプレイ レイヤーのまとまりのこと。設定画面や対話GUI、魔法選択GUIなど、目的に準じた大きなくくり。
オブジェクト ディスプレイエンティティにボタンなどの機能を持たせたもの。あるいはユニットのまとまりのこと。
レイヤー オブジェクトのまとまりのこと。表示非表示の切り替えができたりする。キーボードみたいに閉じたり開いたりさせたいものや、オブジェクトのまとまりをわかりやすくしておきたいときに使う。
ユニット ディスプレイエンティティそのもの。
グループ オブジェクトをまとめたオブジェクト。id(group.id)で紐づけされる。
イベント ユニットをクリックしたときやホバーしたときなどに実行されるコマンドのこと。あらかじめユニットに設定したデータを参照して様々なイベントを行うことができる。
コンパイル ユーザーが設定したデータを、内部的に使用しやすいデータに変換すること。
オペレーター/操作者 ディスプレイを操作できるプレイヤーのこと。

explain_display.png

トップに戻る

使い方

1. デザインを設定する

ストレージのdisplay_ui:design displayにディスプレイのデザインデータを設定する。

data modify storage display_ui:design displays.sample set value {\
    operator:"everyone",\
    billboard:"fixed", view_range:10, area:[3f,3f],\
    from_back:0b, negative_ray:0b,\
    pos:[0f,0f,0f],\
    cursor:{type:"player_head",size:[0.2f,0.2f,0.001f],offset:[0f,0.05f,0.05f],duration:1,nbt:{transformation:{right_rotation:{axis:[0f,1f,0f],angle:3.14f}}}},\
    objects:[\
        {type:"interaction",width:2f,height:1f},\
        {type:"interaction",width:2f,height:-1f},\
        {type:"item", pos:[0f, 0.00f, 0.00f], size:[2f,2f,0.001f], tags:["item"], item:{id:"black_stained_glass_pane"}},\
        {type:"button_bg_d", pos:[-0.9f,0.9f,0.001f], width:0.24f, height:0.24f, tags:["x"], text:{text:"☓",color:"white",bold:true,font:"uniform"},events:{click:"function display_ui:kill"}},\
        {type:"button_push_a", pos:[-0.5f,0.6f,0.001f], element:{type:"text",text:{text:"DONE",color:"white",bold:true,font:"uniform"}}},\
        {type:"toggle_push_a", pos:[0.5f,0.6f,0.001f],value:{type:"owner_score","objective":"dpuS."},element:{type:"text",text:{text:"DONE",color:"white",bold:true,font:"uniform"}}},\
        {type:"slot_a", pos:[0f,0.6f,0.001f]},\
        {type:"int_input_step",pos:[0f,0.2f,0.002f],value:{type:storage,"path":"a","namespace":"debug:",min:-99999,max:99999},tags:["test"]},\
        {type:"list_input", pos:[0f,-0.2f,0.002f],value:{list:["steve","alex","rusk","jeb"]}},\
        {type:"layer",name:"layer_1",  pos:[0f,-0.7f,0.001f], mode:"open",\
            open:{animation:[{scale:[0f,0f,0f],type:"v_scale"},{delay:5,duration:5,type:"v_reset"}]},\
            objects:[\
                {type:"item", pos:[ 0f,0f,0f], size:[1f,0.4f,0.001f], item:{id:"blue_concrete"}},\
                {type:"button_item_a", events:{click:"execute on vehicle run function display_ui:execute {func:\"transform/rotate\",in:{angle:30f}}"}, width:0.7f, pos:[0f,0f,0.004f], element:{type:"text",text:{text:"Button",color:"gold",bold:true,font:"uniform"}}},\
            ]\
        },\
    ]\
}

その他の具体的な設定例については使用例を参照。

2. コンパイルする

設定したディスプレイの名前でコンパイル用のファンクションdisplay_ui:compileを実行する。

data modify storage display_ui: in set value {display:"sample"}
function display_ui:compile

または

function display_ui:execute {func:"compile",in:{display:"sample"}}

3. ディスプレイUIエンティティを召喚する

ディスプレイUIエンテイテイの召喚用のファンクションdisplay_ui:summonを実行する。開きたいディスプレイの名前を設定すれば、それを開いた状態で召喚される。

data modify storage display_ui: in set value {display:"sample"}
execute anchored eyes positioned ^ ^ ^2 run function display_ui:summon

または

execute anchored eyes positioned ^ ^ ^2 run function display_ui:execute {func:"summon",in:{display:"sample"}}

▲召喚されるディスプレイ

4. ディスプレイを開く

召喚用ファンクションでディスプレイも開かれるが、別のディスプレイを開く場合は専用のファンクションdisplay_ui:openを実行する。

data modify storage display_ui: in set value {display:"sample_2"}
execute as @e[tag=display_ui,sort=nearest,limit=1] run function display_ui:open

または

execute as @e[tag=display_ui,sort=nearest,limit=1] run function display_ui:execute {func:"open",in:{display:"sample_2"}}

5. 操作

操作者はディスプレイ上にカーソルが表示されるので、自由に動かしてクリックをすればボタンの操作ができる。
▲操作のようす

6. 移動

ディスプレイのベースにいるエンテイテイを指定してテレポートをすればディスプレイUIを任意に動かすことができる。

execute as @e[tag=display_ui,sort=nearest,limit=1] at @s run tp @s ~5 ~ ~ ~ ~
execute as @e[tag=display_ui,sort=nearest,limit=1] at @s run tp @s ~ ~ ~ ~40 ~

7. ディスプレイを閉じる

ディスプレイUIエンテイテイを削除せずにディスプレイを閉じる場合は、専用のファンクションdisplay_ui:closeを実行する。 save:trueにすれば、現在のディスプレイの状態は保存される(デフォルトはfalse)。

data modify storage display_ui: in set value {save:true}
execute as @e[tag=display_ui,sort=nearest,limit=1] run function display_ui:close

または

execute as @e[tag=display_ui,sort=nearest,limit=1] run function display_ui:execute {func:"close",in:{save:true}}

8. ディスプレイUIエンティティを削除する

ディスプレイUIエンテイテイを削除する場合は削除用のファンクションdisplay_ui:killを実行する。

execute as @e[tag=display_ui,sort=nearest,limit=1] run function display_ui:kill

トップに戻る

About

Datapack provides custom UI with display entities.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors