レイアウト、フレーム、スロット
レイアウトは、メニューの名前付きブロックです。Open GUI エントリの layoutPool で作成し、id を付けます。他のレイアウトは、その id を通じて参照します。
レイアウトを選ぶ
| レイアウト | 用途 | フィールド |
|---|---|---|
simple | 静的なメニュー、枠線、固定ボタン。 | items |
flex | 行に自動配置されるアイテム。 | items, justifyContent, alignItems, wrap, virtualHeight |
paginated | ページに分割されたリスト。 | itemsPerPage, slots, items, navigationButtons |
scrollable | ウィンドウより大きなコンテンツ。 | innerId, virtualWidth, virtualHeight, buttons |
frame | 独立した矩形領域。 | frames |
composite | 重ねて描画されるレイヤー。 | children |
book | 記入済みの本。 | pages |
merchant | 村人の取引。 | trades |
storage | 永続的なアイテムスロット。 | entry, groupKey, slots |
leaderboard | ファクトのランキング。 | leaderboard, x, y, width, height, previousButton, nextButton |
simple
すべてのアイテムには、x(列、0〜8)と y(行、一番上が 0)があります。最初に使うレイアウトです。
dropOnClose は、メニューを閉じるとき(別のメニューに置き換えられる場合も含む)に、レイアウトのスロットに残っているものを返します:プレイヤーが取らなかった戦利品や、そこに置いたアイテムです。返されるのは allowPickup のあるアイテムだけで、1 回限りです。装飾は返されません。closeDelivery は返し方を選びます:GIVE_OR_DROP(既定)はインベントリに入れ、あふれた分をプレイヤーの足元に落とし、DROP はすべて足元に落とします。既定ではオフで、有効なのに取り出せるアイテムが 1 つもない場合はエディタが警告します。
flex
flex はアイテムの x と y を無視し、メニューの幅いっぱいに、左から右へ、行ごとに流し込みます。justifyContent は行の配分方法(START、CENTER、END、SPACE_BETWEEN)を、alignItems は virtualHeight の中でブロックを縦方向のどこに置くかを、wrap は行がいっぱいになったときに次の行へ続けるかどうかを決めます。wrap がない場合、最後の列を超えたアイテムは破棄され、ログに記録されます。
paginated
アイテムは itemsPerPage ごとのページに分割され、物理的な slots(スロット番号は y * 9 + x)に流し込まれます。slots が空の場合は、インベントリの左上から順に埋まります。ボタンは navigationButtons に、role ごとに 1 つずつ追加します。
NEXTとPREVIOUSは、移動先のページがある場合にのみ表示されます。BACKは常に表示され、前のメニューに戻ります。INDICATORはクリックできず、2 ページ以上のときにのみ表示されます。名前とロアでは{page}、{total_pages}、{next_page}、{prev_page}、{page_indicator}が使えます。
ボタンのマスは確保しておいてください。ページは slots に列挙されたスロットを埋めるだけで、ボタンを避けてはくれません。
scrollable
scrollable レイアウトは、innerId で指定したレイアウトに対するウィンドウを表示します。virtualWidth と virtualHeight は、全体の領域のサイズです。direction(UP、DOWN、LEFT、RIGHT)と、1 クリックあたりのスロット数である step を指定して、buttons を追加します。各ボタンは、その方向にスクロールできる内容がある場合にのみ表示されます。
showDefaultButtons が有効(デフォルト)の場合、buttons にエントリがない方向ごとに矢印が 1 つ追加されます。defaultStep(最小 1)は、これらの矢印が 1 クリックでスクロールするスロット数です。独自のボタンは自身の step を保ちます。無効にすると、既定の矢印は追加されません。
既定の矢印は、独自の矢印と同じルールに従います。その方向にコンテンツをスクロールできる間だけ表示されます。設定しない場合は、▲、▼、◀、▶ という名前の単純な矢印アイテムで、上と下は右の列(列 8)、左と右は最下行に配置されます。矢印は何も覆いません。セルにすでにコンテンツのアイテム、ボタン、装飾がある場合、矢印は表示されず、コンソールにもメッセージは出ません。矢印のアイテム、名前、位置は、GUI Settings の scrollArrows リストで変更できます。
showDefaultButtons はデフォルトで有効なため、既存の scrollable レイアウトにも矢印が追加されます。メニューを以前とまったく同じに保つには、無効にするか、矢印を別の場所に配置してください。
メニューを開いている間、マウスホイールでも、フォーカスされているスクロール可能なレイアウトが縦方向にスクロールします。位置は id ごとに管理されるため、スクロール可能なレイアウトとページ付きレイアウトには、それぞれ一意の id を付けてください。
frame
frame レイアウトは矩形の一覧です。id、x、y、width、height、そしてそれを埋めるレイアウトの layoutId を指定します。フレームの内容は、その左上の角を基準に配置されます。解決できる layoutId がないフレームはスキップされます。layoutId に @view を指定すると、アクティブなビューがそのフレームを埋めます。
典型的なダッシュボードは、固定のタブ列、スクロール可能なコンテンツフレーム、フッターフレームで構成されます。
composite
composite は children(レイアウト ID)を順に描画し、後のものが上に重なります。背景を最初に、コンテンツを中間に、ボタンを最後に置きます。存在しない子はスキップされ、レイアウト同士のループは空のレイアウトになります。
レイアウトを接続する
レイアウトは、参照されたときに使われます。参照元は、mainLayoutId、composite の子、scrollable の innerId、frame の layoutId です。誰にも参照されないレイアウトは、単に描画されません。
アイテムとスロット
アイテムのフィールドについては、GUI のページの Menus セクションを参照してください。