メインコンテンツまでスキップ

GUI

GUI 拡張は Typewriter の中核メニューシステムです。9 つの設定可能なレイアウトエンジン(加えて API 専用コンポーネント)、23 のインベントリタイプ、キーボード/マウス操作、永続的なアイテムストレージ、完全な MiniMessage 書式に対応します。他のほぼすべての拡張が、メニューのためにこれに依存しています。

近日公開:ドラッグ&ドロップ、ゲーム内忠実なライブプレビュー、CSS-flexbox 自動レイアウト、メニュー状態、タイルマップ、複数プロバイダーのリソースパック対応を備えた Web ベースの WYSIWYG エディター。

機能

  • 9 つのレイアウトエンジン — Simple、Composite、Scrollable、Paginated、Frame、Flex、Storage、Book、Merchant —— 加えて Kotlin API 経由の Iterator、Slider、ReactiveSlot。
    • 23 のインベントリタイプ — チェスト、かまど、金床、エンチャントテーブル、鍛冶台、行商人、本など。
    • スクロールとナビゲーション — 設定可能な上/下/左/右ボタンを備えたスクロール可能なレイアウト。スクロールボタンはビューポートに固定されます。独立したゾーンを持つマルチフレーム。
    • 永続ストレージ — アーティファクトに支えられたアイテムストレージ —— プレイヤー単位またはグループ単位。進捗追跡のための累積モード。設定可能なクリックアクション。
    • ストレージプレースホルダー — スロット名や Lore 内の動的プレースホルダー {stored_name}{stored_amount}{stored_max}
    • MiniMessage — タイトル、アイテム名、Lore を完全に MiniMessage 対応。色、グラデーション、ホバー/クリックイベント。
    • クリック操作 — LEFT、RIGHT、SHIFT、DOUBLE_CLICK、DROP、SWAP_OFFHAND、NUMBER_KEY、SCROLL —— スロット単位またはグローバル。
    • アニメーション — 設定可能なイージング(linear、ease-in、ease-out)を備えた滑らかなスロット遷移。
    • 入力ダイアログ — Paper のダイアログ API により、メニュー操作中にテキスト入力を求めます。

アーキテクチャ

エントリーライブラリ

アクション

  • Open GUI — 主要な入口。タイトル、レイアウト、アイテム、操作、ストレージを備えたインベントリ GUI を定義します。

設定

  • GUI Settings — グローバルな既定値:オーディオ設定、ストレージのクリック挙動のマッピング、スキルツリーノード。

ガイド

  • はじめに — システムの仕組み、用語、そして最初のメニューをステップごとに。
    • レイアウトタイプ — 各レイアウトエンジンの完全な例と使いどころ。
    • コマンドと操作 — クリックの種類、内部の gui: アクション、クールダウン、入力ダイアログ。
    • Cookbook — すぐ応用できるレシピ:スクロールリスト、ショップ、確認、クォータ入金。

アーティファクト

  • GUI Storage — 永続ストレージのアーティファクト。プレイヤー単位またはグループ単位のアイテム永続化、累積対応。

クイックスタート

  • 1. Open GUI エントリーを作成するOpen GUI アクションエントリーを作成します。この 1 つのエントリーが 1 つのメニューのすべてを定義します:基本設定: - title — インベントリのタイトル(MiniMessage + PlaceholderAPI) - guiType — インベントリタイプ:CUSTOMCHESTMERCHANTBOOKANVIL など(23 種) - sizeCUSTOM タイプの場合:SIZE_9 から SIZE_54 レイアウト(1 つ選択): - simple — 明示的な x,y 座標、グリッドパターン用の count/direction/gap/repeatY - scrollable — スクロールボタン付きビューポート、内側のレイアウトがスクロール - frame — 複数の独立ゾーン、それぞれに子レイアウト - paginated — 次へ/前へのナビゲーション付きの個別ページ - composite — Z 順に重ねた子 - book — 書かれた本としての MiniMessage ページ - merchant — カスタムアイテムを使った村人取引 アイテムと操作: - itemdisplayNamelore でスロットを定義 —— 配置には x/y/count/direction を使用 - スロットごとに interactionList を付与:LEFTRIGHTSHIFT_LEFTSHIFT_RIGHTDOUBLE_CLICKDROP など - クリック時に Typewriter アクションを発動するには triggers を付与 ストレージ(任意): - アイテムを永続化するには任意のスロットに storage を追加 - プレースホルダー {stored_name}{stored_amount}{stored_max} を使用 → Open GUI エントリーのリファレンス

  • 2. 他の拡張から参照する — GUI エントリーが用意できたら、メニューが必要な他のどの拡張からでも参照します:- QuestCodexquest_codex_settings はクエスト閲覧に GUI レイアウトを使用 - Shops — ショップメニューはアイテム表示に GUI レイアウトを使用 - BattlePass、Crates、Pets、Party、Profiles、Cosmetics、Dungeon、BTCSky…… — いずれもメニューに GUI 拡張を使用 他の拡張のメニュー設定で Open GUI アクションエントリーの ID を参照するだけです。> GUI 拡張は 20 以上の他の拡張にとって必須の依存です。

レイアウトタイプ

SimpleLayout

仮想グリッド上の明示的な (x, y) 座標にアイテムを配置します。静的なメニュー、装飾、背景に最適。グリッドパターン用に countdirectiongaprepeatY に対応します。

ScrollableLayout

子レイアウトをスクロール対応で包みます。カスタムスクロールボタン(UP/DOWN/LEFT/RIGHT)はビューポートに固定され、コンテンツがスクロールしても動きません。長いアイテム一覧に最適。

FrameLayout

画面を独立したゾーンに分割します。各フレームは独自の位置・サイズ・子レイアウト(通常はスクロール可能)を持ちます。ダッシュボード、サイドバー、複数ペインのパネルに最適。各スクロールゾーンは、スクロールを正しく分離するために一意の IDを持つ必要があります。

PaginatedLayout

次へ/前へのナビゲーションボタン付きの個別ページ。複数ページのメニューや大きなコレクションに最適。

CompositeLayout

複数の子レイアウトを Z 順に重ねます。オーバーレイや複雑な UI に最適。

BookLayout

MiniMessage ページを書かれた本として描画します。Lore、ガイド、対話に最適。

MerchantLayout

入力アイテムと結果を伴う村人取引を定義します。ショップや取引に最適。

操作リファレンス

サポートされるすべての操作
操作トリガー
LEFTマウス左ボタン
RIGHTマウス右ボタン
SHIFT_LEFTShift + 左クリック
SHIFT_RIGHTShift + 右クリック
MIDDLEマウス中ボタン
DOUBLE_CLICKダブルクリック
NUMBER_KEY_1..9ホットバーキー 1-9
DROPQ キー
DROP_ALLCtrl+Q
SWAP_OFFHANDF キー

用法: クリックアクションにはスロットごとの interactionList、メニュー全体のキーバインドには globalInteractions

GUI タイプリファレンス

サポートされる 23 のインベントリタイプすべて
タイプ説明
CUSTOM設定可能なチェスト(1-6 段)
CHEST標準チェスト
FURNACEかまど
BLAST_FURNACE溶鉱炉
SMOKER燻製器
BEACONビーコン
ENCHANTING_TABLEエンチャントテーブル
GRINDSTONE砥石での修理
CARTOGRAPHY_TABLE地図の加工
ANVIL金床での修理/改名
LOOM機織り機(旗の模様)
SMITHING_TABLE鍛冶台
STONECUTTERストーンカッター
CRAFTING_TABLE作業台
BREWING_STAND醸造台
HOPPERホッパー
DROPPERドロッパー
DISPENSERディスペンサー
BARREL
SHULKER_BOXシュルカーボックス
ENDER_CHESTエンダーチェスト
MERCHANT行商人の取引
BOOK書かれた本

ストレージと累積

  • 標準ストレージ:クリックでアイテムを預ける/引き出します。すべてのクリック挙動は GUI Settings でグローバルに設定できます。
  • ストレージプレースホルダー{stored_name}{stored_amount}{stored_max} はスロットの displayNamelore 内で動的に解決されます
  • forceStorage: true(既定):スタックできないアイテム(剣・道具・防具)も保管できます
  • 累積モードrequiredItem + requiredAmount を設定 —— アイテムが消費され、しきい値で onReachRequired トリガーが発火します
  • グループストレージgroup エントリーを通じてプレイヤー間(例:島チーム)でストレージを共有します
  • 一時スロット:閉じると削除されるアイテム(temporary = true
  • onFill / onEmpty トリガー:スロットの状態変化時に Typewriter アクションを発火します

詳細は GUI Storage Artifact を参照してください。

プレースホルダー

ストレージプレースホルダー

ストレージスロットの displayNamelore 内で解決されます:

プレースホルダー説明
{stored_name}保管されたアイテムの表示名
{stored_amount}スロット内の現在のアイテム数
{stored_max}スロットの最大容量

エンジンプレースホルダー

GUI のタイトルやアイテムの Lore も、@Placeholder フィールドを通じて Typewriter エンジンのプレースホルダーと PlaceholderAPI に対応します。

コマンド

この拡張は単独のコマンドを提供しません。すべてのメニュー操作は Typewriter のエントリーを通じて行われます。

権限

カスタム権限はありません。GUI へのアクセスは、Open GUI アクションを参照するエントリーによって制御されます。

依存関係

Extension必須用途
(なし)-これは基盤となる拡張です。20 以上の他の拡張がこれに依存しています。
PlaceholderAPI任意タイトル・名前・Lore 内の @Placeholder フィールド用。