ヒタルモディング API: 完全なサーバープラグイン開発ガイド

によって HytaleCharts Team カテゴリー: guides :mins min 読み込み

Hytaleサーバープラグインの構築を開始するために必要なすべてのもの。 このガイドでは、Java 25 のセットアップ、プラグインのライフサイクル、デュアルイベントシステム(EventBus + ECS)、コマンド登録、エンティティティティティコンポーネント、manifest.json フォーマット、および CurseForge にデプロイします.

Hytaleのサーバープラグインシステムは、開発者にゲームのあらゆる側面を深く制御します。 Minecraft 用の Bukkit または Spigot プラグインを書いた場合、移行は簡単ですが、Hytale のアーキテクチャは基本的には問題の方法で異なります。 このガイドでは、初期設定から生産展開まで、すべてを歩んでいきます。 建築設計 概要 コードを書く前に、Hytaleのモディングがどのように機能するかを理解してください。 クライアントはレンダラーです。 Hytale の C# クライアントは、グラフィック、入力、オーディオを扱いますが、ゲームロジックは含まれていません。 すべてのシミュレーションは、シングルプレイヤーでもJavaサーバー上で実行します。 Everything はサーバー側です。 プレイヤーがモッドされたサーバーに参加すると、カスタムアセットと動作が自動的にストリームされます。 クライアントのmods は必要ありません。 4つのモディングカテゴリが存在します: データアセット(JSON)、アートアセット(Blockbenchモデル)、サーバープラグイン(Java)、ビジュアルスクリプト(近日公開)。 Server プラグインは最も強力なカテゴリです。エンティティ コンポーネント システム、イベント パイプライン、コマンド フレームワーク、世界操作など、サーバーのランタイムに Java アクセスをフル提供します。 開発環境設定 前提条件 ToolVersionNotes Java { もし(event.getMessage().contains("spam")) お問い合わせ event.setCancelled(true) は、 お問い合わせ お問い合わせ お問い合わせ ;;; お問い合わせ キーイベント バスイベント: PlayerConnectEvent//PlayerDisconnectEvent — 接続ライフサイクル PlayerReadyEvent — 完全に読み込まれたプレーヤーと準備済み PlayerChatEvent — チャットメッセージ (async, cancellable) AddPlayerToWorldEvent — プレイヤーが世界に入る StartWorldEvent / AddWorldEvent / RemoveWorld イベント — 世界経営 イベントの優先順位: EventPriority を使用します。 EARLY は、他のハンドラが参照する前にイベントを最初に実行し、変更します。 EventPriority を使用します。 LATE は、他のすべてのハンドラが処理した後の最終状態を参照します。 ECS イベント — Entity-Specific アクション ブロックブレイク、ブロック配置、ダメージなどのエンティティレベルイベントは、イベントバスではなく、Entity Component Systemを通して処理されます。 を作成します。 Entityイベントシステム: パブリッククラス BlockBreakHandler EntityEventSystem @オーバーライド パブリック クエリ getQuery() お問い合わせ // 特定のコンポーネントを持つ対象組織 Query.builder().build() を返します。 お問い合わせ @オーバーライド パブリッククラスgetEventType() お問い合わせ フィードバック BreakBlockEvent.class; お問い合わせ @オーバーライド パブリック void ハンドル(EntityStore ストア, CommandBuffer バッファ, ブレイクブロック イベントイベント // // // // ブロックブレイクの処理 // // // // フィルターフェーズでキャンセルします。 お問い合わせ お問い合わせ 基準: filter フェーズでECSイベントをキャンセルするだけです。 検査フェーズでのキャンセルは、アクションが既に起こったため効果がありません。 エンティティティコンポーネントシステム(ECS) HytaleはカスタムECSアーキテクチャを使用します。 これを理解することは、非トリバイアルプラグインに不可欠です。 コアコンセプト Entity — ユニークな ID だけで、データ自体は含まれていません Component — 純粋なデータコンテナをエンティティティに添付 システム — 特定のコンポーネントの組み合わせでエンティティティを処理するロジック Ref — 実体への安全なハンドル(直接実体参照を格納しない) store — 効率的なメモリレイアウトのためにArchetypesを使用してエンティティティティを管理 カスタムコンポーネント パブリッククラスのスコア データの実装 コンポーネントとlt;EntityStore> { パブリックintスコア = 0; パブリックストリングチーム = ""; 長期滞在 で = System.currentTimeMillis() ; @オーバーライド パブリックスコアデータクローン() お問い合わせ スコアデータコピー = 新しいスコアデータ(); copy.score = このスコア; コピー チーム = this.team コピー ログイン で = これ.joined お問い合わせ コピーを返す; お問い合わせ お問い合わせ コンポーネントは clone() を実行しなければなりません。 カスタムデータを保存するエンティティティティティティティにそれらを添付 — スコア、チーム、クールダウン、在庫、またはゲーム固有の状態。 Understanding PlayerRef Hytale の "Player" は特別なクラスではありません。コンポーネントで構成されるエンティティティです。 PlayerRef は、プレイヤーのユーザー名、UUID、言語、ネットワークハンドラを格納するコンポーネントです。 プレイヤーが接続されている限り有効です。 コマンド登録 Commands は Command インターフェイスを実行します。 パブリッククラスのスパン コマンドはコマンド { を実行します @オーバーライド public 文字列 getName() { "spawn" を返します。 @オーバーライド パブリック void 実行(CommandSender sender, String[] args) { if (senderのインスタンスのプレイヤー) { // // // // スポーンにテレポートプレーヤー sender.sendMessage("spawnに報告..."); お問い合わせ お問い合わせ お問い合わせ // setup() の登録 commandRegistry.registerCommand(new SpawnCommand()); Both Player と CommandSender サポート hasPermission() チェック。 組み込みのパーミッションシステムは、ユーザーレベルのパーミッション、グループ継承、ワイルドカードマッチングをサポートしています。 ビルドとデプロイ ビルド ./gradlew build 出力 JAR は build/libs/. に移動します。 採用パス Platform Mod ディレクトリ Windows (ローカル)%AppData%/Roaming/Hytale/UserData/Mods/ Linuxサーバ/opt/hytale/Server/mods/ ホットリロードはマイナーな変更のために部分的にサポートされています。インテルリのCtrl+F9を使用してください。 完全な再起動なしで再構築するJ. メジャーの変更には、サーバーの再起動が必要です。 EventRegistry プラグインのアンロード時にハンドラを自動的にクリーンアップします。 CurseForge に公開 CurseForge は 3 つのMOD 型を認識します。 Packs — アセット/コンテンツパック(JSONデータ、モデル、テクスチャ) Plugins — サーバー API を使用した Java JAR ファイル Early Plugins — 低レベルのクラス変換用のbootstrapプラグイン(高度に、間隔で使用) コミュニティリソース モディングコミュニティは、ハイピクセルスタジオが提供するものを超えて広範な文書を作成しました。 ResourceFocus HytaleModding.dev ガイド、ドキュメント、ツール — 8,000+ Discord メンバー Britakee Studios GitBookパックとプラグインの包括的なテストチュートリアル HytaleDocs.comCommunity WikiとAPIリファレンス Hytale-Toolkit(GitHub)Decompiled source、javadocs、semantic code search パッチャー(GitHub) サーバの JAR を IntelliJ プロジェクトとして参照 注記: サーバJARは難読化せず、自由に解読できます。 Hypixel Studiosは、EAの起動1〜2ヶ月以内にフルサーバーソースコードをリリースすることを約束しました。 新着情報 サーバーソースコードリリース — 行進 2026 Visual Scripting — ノンプログラマー向けのノードベースのスクリプト(Unreal Blueprintsと類似) Development bounties — ハイピクセル・スタジオはコミュニティ貢献のために賞金を提供する予定です 公式ドキュメントの展開 — コミュニティフィードバックに基づいて、不完全なものとして認識される プラグインをデプロイする準備は? HytaleCharts に modded server をリストして、プレイヤーは作成を見つけることができます。 ミニゲーム固有の開発パターンについては、をご覧ください。 カスタムミニゲームガイド.