
はじめに
Hytale,やってますでしょうか?最近だと実況者さんなどが配信していたりするので名前だけなら聞いたことがあるという人も多いはずです。 Hytaleは、システム設計段階からmodやpluginを構築しやすい環境があり、私自身初めてプログラミングをちゃんとしだしたのはminecraftのmod制作からであったので、久々にゲームプラグインを開発してみることにしました。
この記事は半分備忘録として書いていく予定です。以下は、公式サポートページとgithubなどの記述を参考に行っています。
※本記事はアーリーアクセス版(2026/04時点)の情報に基づいています。開発環境の仕様は今後変わる可能性があるため、公式の更新も併せてチェックしてくださいね。
0. 準備するもの
推奨される環境です。
- PC 最低16Gのメモリがある Win11 OSの入ったPC など。 :できるだけ強いやつがいいと思います。16Gメモリだとちょっと重かったりします。(linuxでも開発できますがこの記事の内容をそのままするとファイルパスでエラーが出るかもしれません。)
- Hytaleゲーム本体 : (これがないとテストできません)
- Java 25以上推奨 : 少し古いバージョンでも動きはしましたが、ログには25推奨とあるので、素直に入れましょう。
- VSCODE などエディタ :エディタは何でもいいですが、拡張機能などを考えるとVScodeが無難
- BlockBench :モデリングに使いますが、後々セットアップを紹介予定(今すぐは要りません)
- (追々必要なものを順次追加)
※実行ログに JetBrains JDK not found と出ることがありますが、標準のJDKでも動作可能です。ただし、ビルドツール(Gradle)との整合性が合うかは、まだそこまでやってないので不明です。
Hytale用 VScode+Java環境構築:Hytale plugin用の環境構築【VSCode ,Java ,BlockBench】
Hytale plugin用の環境構築【VSCode ,Java ,BlockBench】
Hytaleプラグイン開発の環境構築ガイド。Java 25をVSCodeから直接導入する方法や、既存の開発環境を汚さないProfile機能の活用術、モデリングに必須のBlockbench設定を網羅。四苦八苦した実体験をもとに、初心者が躓きやすいポイントを解説します。
1. 開発環境の準備(ベースを整える)
まずは、公式配布されているテンプレートをベースに、プラグイン開発の土台を作ります。
公式テンプレートリポジトリ: realBritakee/hytale-template-plugin
git clone <リポジトリからリンクをとってくる>githubの使い方については以下の関連記事シリーズで紹介しています。
関連記事シリーズ:githubアカウントの作り方から 【2025年版 】GitHub超入門 #1-Githubとは?Githubを使う理由-
コピーしておく
公開リポジトリなので、都度とってきてもいいですが、壊れた時に毎回とってくるのが面倒なときは、とってきたフォルダ自体をコピーしてコピーしたものの名前を変えてこっちで編集することとよいと思います。
cp plugin-template my-plugin
plugin-templateを複製しておく。(plugin-001は任意の名前)
2. 設定ファイルをいじってみる。
いきなり編集すると、どこでエラーが出たかわからなくなりがちなので、とりあえず、デフォルトで動くか検証します。
ターミナルで以下のコマンドを打つと開発サーバを起動できます。
.\gradlew.bat devServerこれでwarnは出るかもしれませんが、エラーが出ず以下のような表記が出れば、開発環境のベースはOKです。
# サーバ起動成功時の出力例
[2026/ZZ/YY xx:xx:xx INFO] [HytaleServer] ===============================================================================================
[2026/ZZ/YY xx:xx:xx INFO] [HytaleServer] Hytale Server Booted! [Multiplayer] took 7sec 928ms 935us 900ns
[2026/ZZ/YY xx:xx:xx INFO] [HytaleServer] ===============================================================================================文字入力できるので、ここで example と打つと、Hello from ExampleCommand!と表示されます。サーバを落とすときは、ctrl + C で落とせます。
設定ファイルを自分用にカスタマイズ
git cloneしたフォルダをエディタで開いてみると、以下のようなファイルがあります。
my-plugin
├─.gradle
│ ├─9.2.0
│ │ ├─checksums
│ │ ├─fileChanges
│ │ ├─fileHashes
│ │ └─vcsMetadata
│ ├─buildOutputCleanup
│ └─vcs-1
├─build
│ └─reports
│ └─problems
├─gradle
│ └─wrapper
└─src
└─main
├─java
│ └─dev
│ └─hytalemodding
│ ├─commands
│ └─events
└─resourcesgradleはビルドとかで使うフレームワークなので、基本的に触るのはsrc/mainの中だけです。(setting.gradleとかは初めにちょこっと編集する必要があります)
プロジェクト名などを編集
プラグインを自分のプロジェクトとして定義するために、以下の3つのファイルを編集します。ここでの記述内容が、ゲーム内でのIDやJavaプログラムとの紐付けに直結します。
① settings.gradle.kts
プロジェクト全体の名称を定義します。
rootProject.name = "your-plugin-name"
plugins {
// See documentation on https://scaffoldit.dev
id("dev.scaffoldit") version "0.2.+"
}
// Would you like to do a split project?
// Create a folder named "common", then configure details with `common { }`
hytale {
usePatchline("release")
useVersion("latest")
repositories {
// Any external repositories besides: MavenLocal, MavenCentral, HytaleMaven, and CurseMaven
}
dependencies {
// Any external dependency you also want to include
}
manifest {
Group = "com.yourname"
Name = "my-plugin"
Main = "dev.newplugin.MyPlugin"
}
}変更点と注意点
- your-plugin-name: 自分のプラグイン名(例:
my-magic)に変更します。 - manifest
- Group:
gradle.propertiesのpluginGroupと合わせるのが一般的です。 - Name: プラグインの正式名称。
- Main: Javaメインクラスの「完全修飾名」。パスになるので詳しくは後程。
- Group:
② gradle.properties
ビルド時に使用されるメタデータを設定します。
pluginGroup=com.yourname
pluginVersion=0.0.0
pluginDescription=Your plugin description変更点と注意点
- pluginGroup: Javaのパッケージ名に使用される組織名(例:
com.tukumod) - pluginVersion: プラグインのバージョン
- pluginDescription: プラグインの簡単な説明文
※ここは別に変更しなくても開発自体はできるので、後から設定してもOK
③ src/main/resources/manifest.json
【最重要】 Hytaleサーバーがプラグインを認識するための「身分証明書」です。1文字でも間違えるとプラグインはロードされません。
{
"Group": "YourName",
"Name": "YourPluginName",
"Main": "com.yourname.yourplugin.YourPlugin"
}- Group:
gradle.propertiesのpluginGroupと合わせるのが一般的です。 - Name: プラグインの正式名称。
- Main: Javaメインクラスの「完全修飾名」。次に説明する「クラスのリネーム」後の名前に必ず書き換えてください。
2. メインクラスのリネームと配置
テンプレートのサンプル名を自分のプラグイン名に変更します。これはJava開発における標準的なルールですが、Hytaleでは manifest.json の Main 項目と完全に一致している必要があります。
手順
2.1 ファイル名変更 (main/java/dev/hytalemodding )
元のフォルダ構成
main/java/dev/hytalemodding
└─events
└─commandstkmpluginなど好きな名前ににリネームします。
編集後のフォルダ構成
main/java/dev/tkmplugin
└─events
└─commands2.2 ExamplePlugin.java (メインファイル名)を変える。
動作としては変えなくても動きますが、いつまでもExamplePlugin.javaだと不格好なので、気になる人は、変更が大変になる前に初めから変えておきましょう。
半角英数字で頭文字を大文字にするというルールさえ守れば何でも構いません。(例 : MainPlugin.java)
javaなので、ファイルの中身のクラス名も変更する必要があります。
public class MainPulugin extends JavaPlugin {
public MainPulugin(@Nonnull JavaPluginInit init) {
super(init);
}
@Override
protected void setup() {
this.getCommandRegistry().registerCommand(new ExampleCommand("example", "An example command"));
this.getEventRegistry().registerGlobal(PlayerReadyEvent.class, ExampleEvent::onPlayerReady);
}
}クラス名も対応する必要がある
2.3 manifest.json (プラグイン情報:マニフェストファイル)を書き換える(再掲)
元のファイルには AuthersとかWebsiteなど製作者に関する項目がありますが、これは後からでもよいです。開発上、気にしないといけない項目は以下の3つだけです。
{
"Group": "YourName",
"Name": "YourPluginName",
"Main": "dev.tkmplugin.MainPlugin"
}重要な3項目
変更点と注意点
- Group:
gradle.propertiesのpluginGroupと合わせるのが一般的です。 - Name: プラグインの正式名称。
- Main: Javaメインクラスの「完全修飾名」。2.1と2.2で変更したフォルダ、ファイル名に対応する必要があります。(main/java/の下のdevからあと、プラグインのメインファイルまでのパスを スラッシュを . に置き換えたもの)
2.4 (おまけ)コマンドの中身を変えてみる
これは必須ではありませんが、デフォルトのままも味気ないので、ExampleCommand.javaの中身の表示するテキストを適当に変えておきます。
context.sendMessage(Message.raw("Hello from Tukumolog!"));3. サーバを立ち上げてみてチェック
ここまでの変更ができたら、再度サーバを立ち上げてみます。
サーバの立ち上げ
.\gradlew.bat devServer起動できれば、セットアップは完了です。
試しに “example”と打ってみると、2.4で変更したテキストが表示されるはずです。

最後に
今回は、githubからテンプレートをとってきて、自分用に書き換えて読み込むまでをまとめてみました。この先は自由に開発していけます。
次回はとりあえず、モデルをロードして新しいアイテムとして世界に追加するところとかを記事としてまとめてみようと思います。(モデルロードで困ったCommonの書き方を理解するまでに小一時間溶かした話をおまけとして作業の供養がてら置いておきます。)
では、次の記事で。 lumenHero
関連記事
名前空間などで小一時間溶かした話 :関連記事は、2026年4月16日に公開予定 (あと22時間)
自作アイテムを読み込ませる方法:関連記事は、2026年4月17日に公開予定 (あと2日)
参考資料
公式DOC該当箇所 : Hytale Docment “Plugin Project Template”
テンプレートのgithubページ :github modding plugin-tenplate
本記事のコードは、Hytaleの標準的なデータ形式および GitHubの [Template-pulugin] を参考に作成しています。