純規の暇人趣味ブログ

手を突っ込んで足を洗う

[Minecraft]1.9対応のSpigot(Bukkit)を用意する

      2016/04/01    HimaJyun

さて、鯖缶各位、Minecraft 1.9がリリースされてしまいました。
解き放たれた新バージョンは管理人へアップデートしろしろ攻撃を行い、寝る時間を削って行きます。

と言う訳で、今回はこの1.9に対応したSpigot(Bukkit)を用意する方法をご紹介します。

1.9!!

1.9の新要素をお探しですか?
残念、こちらではありません、こちらはサーバの話題ですよ。

俺は英語読めるんだ!!、と言う方は以下をご覧になれば良いかと
https://www.spigotmc.org/threads/minecraft-1-9-release.127186/

とりあえずコンパイル

変更点とかどうとかは見た方が早いので後回しにするとして、まずはコンパイルしてみます。

まず、Spigotのコンパイルが出来る環境を用意しましょう。
毎度毎度の事ですが、WinはGit for Windowsをインストールする必要があります。
面倒なので可能であれば仮想環境でも使ってLinuxでやりましょう

まず、コンパイルにはGitが必要です。
大抵のLinuxディストリであればパッケージでインストール出来るかと

例えば、Ubuntuであれば以下のコマンドでサクッとインストール出来ます。

sudo apt-get install git

次に、作業ディレクトリを用意して移動しましょう。
とりあえず「tmp」とでもしておきましょう。

mkdir tmp

cd tmp

そして、コンパイルに必要なBuildTools.jarを入手します。
普通にwgetで行きましょうか

wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

いざ、コンパイル!!
なのですが、従来までの「java -jar BuildTools.jar」によるコンパイルでは今(2016/3/1)はまだ1.8版が出来てしまいます。

1.9対応版は「--rev 1.9」を引数に追加するので以下の通りですね、「1.9.2」だと1.9.2になります。
(Windowsの場合はGit Bashから同じコマンドを発行します。)

java -jar BuildTools.jar --rev 1.9

ちょっと時間が掛かるので完了するまでは、セルレギオスでも狩るなり、気でも溜めて「こいつがスーパーベジット!!」とかでもやるなり、飛び交う弾幕を華麗に回避するなり……どうぞご自由に

ビルドが完了するとカレントディレクトリ(今居る場所=./tmp)に色々作成されています。
現段階で以下のモノが作成されました

  • BuildData
  • Bukkit
  • apache-maven-3.2.5
  • work
  • BuildTools.jar
  • CraftBukkit
  • craftbukkit-1.9.jar
  • BuildTools.log.txt
  • Spigot
  • spigot-1.9.jar

この中にある「spigot-1.9.jar」がSpigot、「craftbukkit-1.9.jar」がCraftBukkitです。
どちらが良いの?、はい、Spigotを使いましょう。

必要なのはサーバ本体(spigot-1.9.jar)だけです。
その他の物は削除してしまっても構いませんが、再コンパイルの時間短縮のために置いておいた方が良いでしょう

これでコンパイル自体は完了です。

アップデート

アップデートが来ていた場合はアップデートを行いましょう。

その場合は、もう一度「cd tmp」でtmpディレクトリへ入り「java -jar BuildTools.jar --rev 1.9」を実行すれば良いです。

そうして出来上がった(上書きされた)spigot-1.9.jarを現在利用しているspigot-1.9.jarと入れ替えます。
もちろんですが、サーバを停止してから入れ替えて下さいね。

注意点

稀に「コンパイルしなくても○○からコンパイル済がDL出来る」とか言っている方がいらっしゃいますが、そのやり方はSpigotチームに一番嫌われる入手方法です。

先程のリンク先ページには英語で以下の様に記されています。

「Spigotを入手する方法はBuildTools.jarでコンパイルする手法のみです、あなたが他の場所でjar(意訳:多分コンパイル済みのSpigotの事)を入手した場合はこのフォーラムやIRCには来ないで下さい」

つまり、「二次配布サイトからDLしたカスはこっちくんな」って事です。

Spigotは同じバージョン(1.8.8とか1.9とか)でも細かなバグ修正が何度も行われていますし、二次配布サイトのDLからだと既知のバグがある古いバージョンを使う事になるから……みたいな意図じゃないですかね。

とにかく、「○○からDL出来る」は軒並み二次配布サイトですので絶対にDLしちゃダメですよ。
でもって、「○○からDL出来る」とか言ってる奴は信用なりません、疑って掛かった方が良いでしょう。

変更点

さて、Spigotをバニラで使う理由はありません。
プラグインを入れてこそのSpigotです。

しかし、1.9では色々変更されているので注意が必要です。
以下の情報は現時点(2016/3/1)での情報ですよ、もしかすると今のあなたの時間とは何か異なっているかも知れません

Anti-Xrayが削除された

荒らしユーザ歓喜ですね、荒らしは今すぐタヒんで下さい。

1.8までは「spigot.yml」に以下の様な設定項目があり、enabledをtrueにする事でAnti-Xray(Xray(地面を透明にして鉱石を見つけ出すチート)を阻止する機能)が備わっていました。

anti-xray:
 enabled: true
 engine-mode: 1

しかし、1.9からは公式鯖の難読化(当然ですが、公式のjarは難読化が施されています)やブロックの追加云々も相まって、(特にモード2番での)パフォーマンスのオーバーヘッド(要は負荷)が大きく、オーバーヘッド無しに機能を実装する事が出来なかったと説明されています。

モードと言うのは上の設定項目にある「engine-mode」ですね。
これが2番(X-Rayを使った際に地面にある鉱石をグチャグチャにするモード)での負荷が特に大きかった様です。

誰かが天才的な才能でパフォーマンスへの影響を最小限にしつつ、これらの問題を解決するプログラムを作成する事が出来た時、この機能を再び復活させるようです。

古いAPIの削除

一部の古いAPIが削除されました。
そのため、一部のプラグインが正常に動作しなくなります。

もし、それらのAPIを利用しているプラグインがあるのであればアップデートが必要です。

しかし、自分が作っているとかでも無い限りは「必要です、じゃあアプデ」とはなりません
もし、アップデートが出来ないのであれば「./BuildData/bin」にある「SpecialSource」が役に立ちます。

以下の様なコマンドを利用する事でそれらを(とりあえず動作する)APIに置き換えてくれるようです。
(サーバを起動する段階で別のディレクトリに移動した場合はtmpに戻っておいて下さいね。)

java -jar BuildData/bin/SpecialSource-2.jar map -m CraftBukkit/deprecation-mappings.csrg -i [元のプラグイン.jar] -o [出力するプラグイン.jar]

一部のAPIの変更

バージョンが変わったと言う事は当然ながら一部のAPIに変更が入っています。
例えばですが、あるプラグインにて、ファイヤーチャージを射出した時や、ブレイズが火の玉を発射した時の「ボゥwww」と言う音が、フェンスゲートを開閉する音に変化しました

新しいAPIの追加もある様です。

  • Glowing Entity API
  • BossBar API
  • AreaEffectCloud API
  • Particle API
  • Zombie Villager Profession API

BookEditEventが(一時的に)削除されている

開発チームのデコンパイラの不具合によって一時的にBookEditEventが削除されている様です。

一時的と言う事は、デコンパイラの不具合が治れば復活すると言う事でしょう。

個人的に

流石にまだ1.9がリリースされて1~2日しか経っていないので、一部のプラグインがエラーを吐きます。
僕のサーバでも利用している一部の(ほぼ必須の)プラグインが機能しなかったため、まだ待機ですね。

Spigot1.9自体は開発チーム曰く「1.8に劣らない安定性」と言われています。
お手持ちのプラグインの互換性が確認されたらアップデートすれば良いでしょう

追記(2016/03/06):プラグインをとりあえず無理矢理動作する様に出来たのでアプデしてみました。
まだまだ不安定です、1日に15~20回くらい修正されています、アプデは計画的に……

更に追記(2016/03/30):だいぶ安定してきました、しかしまだまだです。

そして、Spigotの公式サイトにも「今はまだ頻繁に修正をしています、最低でも1日1回、更新を行って下さい」と書かれています。
文字通り頻繁に更新されていますし、不具合もまだまだあります、それの対応が出来るくらい暇な方以外はアプデはまだ早いのではないかと思いますよ

最後に

Spigotの開発チームに英語で以下の様に書かれています。

「多くのプラグインは更新する事無く動作します、正常に動作するプラグインの開発者に対して「動作しました」的な報告や「更新して下さい」的な要求を行わないで下さい。相手の時間を無駄にする前にまずは自分で試してみて下さい」

と書いてあります、要はクソみたいなコメントすんなって事ですね。
動いたのであればそのまま使えば良いですし、動かないのであればエラー内容も含めて提出すると良いでしょう。

 - サーバ運営 ,