Clojureの勉強のために今さらマイクラを購入したんだけども、ハック向けクライアントが色々と揉めていてわけわからんくなってたので状況を整理するためにまとめる。
なお僕の一週間前までのマインクラフトに対する知識は「なんかよくわからんブロックのゲームでしょ」程度だったので知見ください。
Bukkitとは
公式サーバ互換のAPIを備えたサーバのこと?
強化されたAPIとプラグイン方式の採用によってMODが作りやすいっぽい。
基本的にはJavaなんだけども、JRubyやClojureでMODを書けるプラグイン用プラグインみたいなものがあって、僕はこれをアテにしてマインクラフトを購入した。
Bukkitの現状
著作権関係でモメて(参考: 【Minecraft】Warren「Bukkitにさよならを言う時が来た…」 Jeb「そのプロジェクトは二年前にもやんが買収済みだよ」 Dinner「というか1.8のBukkitは俺が更新するよ」 Warren「なるほど~」 【 まいんくらふとにっき 】)、ついでにGPLだとか関係でも揉めたりだなんだして、解決したとか解決してないとかの情報が錯綜しているが、一つだけ確かなのは(2014年11月18日現在)Bukkitで動作させるCraftBukkitというサーバソフトウェアのjarは公開停止されているということ。
公式ではBukkitというjarは公開されたままなんだけども、これは多分APIのライブラリだけのものっぽい。ライセンス関係で揉めているのは、こいつがGPLだかLGPLでライセンスされているからなのかも(雑な調査力並みの情報)。
ここら辺の問題をうけて、spigotだとかのbukkit派生系のサーバも軒並み公開を停止している。マジかよ。
Vimの人達が提供していたCraftBukkit関係の知見が使えなくなってて悲しみ。
Bukkit亡き現状でMODモリモリのサーバを動かしたい
公式クライアントのMODでプレイする
出来なくはないが、公式クライアントだと既存のMODや知見も少ないし、何よりもサーバ側とクライアント側両方に同じMODを入れた状態でプレイする必要があるっぽい*1ので、あんま現実的じゃない。あと俺はジャバを書きたいんじゃなくてClojureを書きたいんであって、ジャバとの橋渡しコードも自分で用意するとか絶対途中で飽きる。
代替品を探す
色々とググった結果、 CanaryModTeam/CanaryMod · GitHub というCraftBukkitが流行る前に存在してた奴を使うのがいいっぽい?
CanaryModでClojureとかJRubyを使う
公式に存在するScalaを使えるようにするプラグインを参考にすればいけるっぽい CanaryModTeam/ScalaPluginLibrary · GitHub。
用は CanaryModTeam/CanaryLib · GitHub へのラッパーを定義すれば良いのかな。
なおClojureは既にリポジトリが存在した。ぱっと見だと作りかけで飽きた感があるので、Scalaの方も参考にしつつプルリ送るのが良さそうな雰囲気がある。
DanThiffault/ClojureCanaryPlugin · GitHub
JRubyはないくさいので作るしかない。
結論
CraftBukkitはいつ復活するかわからんし、待ってると多分飽きるのでCanaryModを使おう。
微妙にAPI違うし英語でしか情報はないし公式のWikiはクソ読みにくいけどしょうがない。
なおCanaryModの起動方法は、CraftBukkitと同じくjarを起動するだけっぽい。
なお今のところはどこにプラグインファイルを配置すればいいのかとかすらわからない状況だし、CanaryModのAPIはまたBukkitとは違うっぽいし、とにかく情報がないし、最近忙しくてゲームする時間がないんだけどそこをどうにか色々頑張って、殴ると増えるクリーパーMODとか作れたらまた日記を書こうとおもいます。
今後開発の参考になりそうなURL一覧
-
公式
https://github.com/andyhunt/minecraft-canarymod-plugins
プラグイン作例
https://github.com/CanaryModTeam/CanaryLib
APIライブラリ
https://github.com/CanaryModTeam/ScalaPluginLibrary
CanaryLibのScalaラッパー
(Lua用のラッパーもある: https://github.com/CanaryModTeam/LuaPluginLibrary )
https://github.com/DanThiffault/ClojureCanaryPlugin
CanaryLibのClojureラッパー
*1:要調査