⛏️

Spigotでnet.minecraft.server(NMS)を使う方法

2022/03/18に公開

Spigotのプラグイン開発に使う spigot-api ですが、残念ながらそれだけではエンティティを操作するなどの特殊なことができません。そこで、 net.minecraft.server (通称、NMS) を使ってその特殊なことができるようになります。詳しい使い方とかはSpigot NMSとかで検索したら出てくると思います。

ただ、このNMSをSpigotで使うのにはちょっと準備が必要で手こずったので、ここに手順を残しておきます。

環境

以下の環境でやっています。

  • OS: macOS Big Sur
  • Spigot: v1.18.2
  • Java: Adoptium JDK 17
  • IDE: IntelliJ IDEA
  • Build Tools: Gradle (Kotlin DSL)

手順

BuildToolsでSpigotをビルドします。ビルドしたjarファイルを使ったりするわけではありません。ビルドすることが重要なのです。BuildToolsの使い方は https://www.spigotmc.org/wiki/buildtools/ を参照してください。

ビルドが完了後、~/.m2/repository/org/spigotmcを見てください。spigot-apiなどとともにspigotというディレクトリが生成されていると思います。

プラグインの build.gradle (もしくはbuild.gradle.kts) を編集します。
ここでは build.gradle.kts を使っています。

repositories に以下を追加してください。

repositories {
    mavenLocal()

    maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
    maven("https://oss.sonatype.org/content/repositories/snapshots")
    maven("https://oss.sonatype.org/content/repositories/central")
}

spigot-apispigot に置き換えてください。

 dependencies {
-    compileOnly("org.spigotmc:spigot-api:1.18.2-R0.1-SNAPSHOT")
+    compileOnly("org.spigotmc:spigot:1.18.2-R0.1-SNAPSHOT")
 }

そしてビルドしてエラーが発生しなければ成功です。

参考

Discussion