Densyakunのブログ

高校生プログラマの雑なブログです。ゲームを開発しています。

【Spigot】Bukkitプラグインの作り方講座 第1回 – 簡単なプラグインを作る

f:id:Densyakun:20180211184737p:plain

こんにちは、電車君です。

今回からBukkitプラグインの作り方講座をやっていきます。

今回は第1回ということでBukkitプラグイン開発環境の構築から、プラグインの作成までやっていきます。

 

 

Bukkitプラグインとは…

  • Bukkitとは、ゲーム「Minecraft」のサーバーMODの一つである。
  • Bukkitには、プラグインを入れることで通常のバニラサーバーでは出来ない機能を追加できる。
  • プラグインはMODのようにブロックやアイテムを追加することは出来ない。
  • 2017年現在多くのサーバーがBukkitにて稼働しており、プラグインによって経済や要素が追加されている。
  • Bukkitは現在更新及び公開が停止しているが、その派生版としてSpigotが存在しBukkitと同様に使用でき、加えて多くの機能が追加されている。ただし、プラグイン開発ではBukkitとSpigotに一部違いがあるため注意が必要。今回はSpigotを使用する

 

 

プラグイン開発に必要なもの

  • プログラミングの基礎知識
  • Minecraftの基礎知識

 

 

 

 

開発環境を構築する

まずはじめに、Bukkitプラグインの開発環境を構築します。

Bukkitプラグインプログラミング言語Java」で出来ています。

今回は、Javaのプログラミング開発環境で有名な「eclipse」を使用します。

 

 

Eclipseのダウンロード・インストール

公式のeclipseは日本語に対応していないため、

こちらのサイトから日本語版をダウンロードします。

eclipse日本語版http://mergedoc.osdn.jp/

 

お好みのバージョンを選択して、JavaのFull Editionをダウンロードしてください。

 

ダウンロードが終わったらzipを展開して下さい。

中にある「pleiades-…」フォルダの中にあるeclipseのフォルダを開くと、

中にeclipse.exeがあるのでそれを開くとeclipseを起動します。

 

eclipseを起動するとスプラッシュ画面が表示されます。

初回起動時のみしばらく時間がかかります。

f:id:Densyakun:20180211183750p:plain

eclipse4.6(日本語版)のスプラッシュ画面

 

 

f:id:Densyakun:20180211183800p:plain

しばらくすると「Eclipse ランチャー」画面が表示され、

プロジェクトを管理するフォルダ「ワークスペース」を設定します。

「OK」を押すと、eclipseの起動が完了し画面が表示されます。

 

これで、eclipseが導入できました。

 

 

 

Spigotサーバーを立てる

次は、Spigotサーバーを立てます。

Spigotとは、更新及び公開が停止しているBukkitの派生版で、Bukkitと同様に使用でき、さらに多くの機能が追加されているものです。

 

プラグイン開発ではBukkitとSpigotに一部違いがあるため注意が必要です。

 

Spigotサーバーをダウンロード

次に、プラグインを実行するためのサーバーであるSpigotをダウンロードします。今回は1.9.4のサーバー及びプラグインを作りますが、1.9.4じゃなくても構いません。

 

Spigotダウンロードサイト(非公式): https://getbukkit.org/download/spigot

 

非公式サイトですが、公式サイトだとビルドツールとかgitとかなんだかんだでめんどくさいので、こちらの方が簡単にサーバーが立てられます。

ダウンロードしたいバージョンの右にあるDownloadボタンを押します。(横のCreate a Serverは押さないで下さい)

すると次のページに行き、少し下にスクロールすると広告に囲まれたリンクがあるのでそれを開いてダウンロードします。


ダウンロードしたら、好きなところにサーバーのフォルダを作り、その中にダウンロードしたjarファイルを入れます。(この時、間違えて開かないで下さい)

 

 

batファイルを作成する

次に、サーバーのフォルダの中にbatファイルを作成します。(Windowsの場合)

ファイル名に拡張子が表示されない場合は、エクスプローラーの設定を変更して下さい。

フォルダを右クリックして、 新規作成>テキストドキュメント を選択して、ファイル名を「start.bat」にします。

この時警告が出るはずですが、問題ないので続行して下さい。

ファイル名のstartはお好みの文字にしても構いません。”.txt”は消して下さい。

 

作成したbatファイルを右クリックして「編集」を押して下さい。(お好みのテキストエディタがあればそれを使って開いて下さい)

するとメモ帳が出てくるので以下の文章を入力します。

#.bat file example to run spigot by densyakun.
@ECHO OFF
java -Xms128M -Xmx1024M -jar spigot-xxx.jar
PAUSE

(spigot-xxx.jarにはダウンロードしたjarファイルのファイル名を入力)

 

javaはjarファイルを実行します。つまりサーバーを実行する処理が書かれています。

 

-Xmsは最小メモリ使用量、-Xmxは最大メモリ使用量です。1024Mは1GBと同じです。

-Xms と -Xmx は省略しても構いませんし、-Xmxだけ書いてもいいです。

省略した場合はデフォルトで最大1GBを使用します。大したワールドデータや50個を超えるほどの大量のプラグインを使用しなければ1GBで十分です。

・注意: MBやGBなどの単位は-Xms-Xmxの単位を揃えて下さい。

 

PAUSEは処理を停止して、キーボードを押したときに処理を再開するものです。

PAUSE の上にjavaがあるのでサーバーが実行されます。

サーバーが停止すると PAUSE により処理を停止してキーボードを押すとコンソールが消えます。

PAUSE が無いとサーバーが停止したときにすぐにコンソールが消えます。

 

@ECHO OFFは気にしなくていいです。

(詳しく説明すると、@ECHO はbatが実行するコマンド【今回の場合はjavaPAUSEなど】をコンソールに表示するかどうかを設定するものです)

 

コピペで入力しても構いませんので、入力が完了したら保存して下さい。

 

 

サーバーを起動する

次に、start.batを実行してサーバーを起動します。

すると黒い画面に白い文字が表示されたコンソール画面が出てきます。

f:id:Densyakun:20180211183922p:plain

すると、「Stopping server」と表示されサーバーが停止しました。

初回起動時には利用規約に同意する必要があります

 

サーバーを開くとサーバーフォルダにサーバーのファイルが生成されているので、

利用規約に同意するにはサーバーフォルダに生成されたeula.txtを編集し

eula=falseeula=trueに書き換えて下さい。

そしてもう一度start.batを起動するとサーバーが起動できます。

 

コンソールではコマンドを入力することが出来ます。

「stop」と入力するとサーバーを停止できます。

その他コマンドについてはhttps://www.spigotmc.org/wiki/spigot-commands/をご覧下さい。

・ここではポート開放のやり方などは説明しません。

 

 

 

Bukkitプラグインを作る

次に、今回の課題である「Bukkitプラグイン」を作っていきます。

 

 

 

プロジェクトの作成

まず、eclipseでプロジェクトを作成します。

 

上のメニューから ファイル>新規>Java プロジェクト を押すか、又は下の画像のようにアイコンの▼を選択して下さい。

f:id:Densyakun:20180211183836p:plain

アイコンを選択したら「Java プロジェクト」を選択して下さい。

f:id:Densyakun:20180211183946p:plain

 

「新規 Java プロジェクト」画面が出てくるので、お好みでプロジェクト名を入力して下さい。

 

プログラミングをしているとついプロジェクトが増えてしまうので、

他のプロジェクトを判別できる名前にしておくと便利です。

f:id:Densyakun:20180211183956p:plain

 

プロジェクト名を入力したら完了を押し、プロジェクトを作成します。

 

f:id:Densyakun:20180211184106p:plain

作成したプロジェクトは左側の「パッケージ・エクスプローラー」に表示されています。

プロジェクトの中には「src」(ソースフォルダ)と「JRE システム・ライブラリー」があります。

ソースフォルダには自分の作成した「ソース」を入れておくフォルダです。

JRE システム・ライブラリー」は簡単に言うとJavaです。特に気にしなくて大丈夫です。

 

 

 

ビルドパスの設定

このままではプロジェクトはただのJava プロジェクトでしか無いので、

Bukkit(Spigot)を読み込む必要があります。

プロジェクトを右クリックして下の方にある「Windows エクスプローラ」を選択すると、プロジェクトのフォルダがWindows標準のエクスプローラーで開かれます。

 

プロジェクトのフォルダの中には「bin」や「src」フォルダがあります。

プロジェクトのフォルダの中に「lib」と言うフォルダを作成して下さい。

そしたらその「lib」フォルダの中に先程ダウンロードしたサーバーjarをコピーします。

eclipseで見てみると、サーバーjarが反映されず表示されていないため、F5キーを押して反映させます。(その際にプロジェクトを選択して下さい)

そしたらeclipseからlibフォルダの中のサーバーjarを右クリックして、 ビルドパス>ビルドパスに追加 を押します。

これでプロジェクトでBukkit(Spigot)が使えるようになりました。

 

 

パッケージの作成

ここからが本番です。次にパッケージを作成します。

 

パッケージにはクラスファイルなどのプログラムを入れておくフォルダのことです。
Javaのパッケージについてはこちらをご覧ください:
https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8_(Java)

 

srcフォルダを右クリックして、 新規>パッケージ を選択します。

パッケージの名前には自分のサイトなどのアドレスを逆にしたもの(「densyakun.github.io」であればio.github.densyakun)にして下さい。(できればパッケージ名は全て小文字にして下さい。Javaの制約です

プログラミングをしているとパッケージが増えていくと思うので他のとかぶらないようにio.github.author.bukkit.testpluginなどとするといいです。(author=作者)

(私はio.github.densyakun.bukkit.testにしています)

完了を押すとsrcフォルダの中にパッケージが作成されます。

 

 

クラスの作成

次にパッケージの中にクラスを作成します。

先程作ったパッケージを右クリックして、 新規>クラス を選択します。

クラスの名前はお好みで大丈夫です。(ここでは「Main」とします。クラス名の頭文字は大文字にして下さい。Javaの制約です。メインクラスの名前はプラグイン名にするのがおすすめです)

完了を押すとパッケージの中にクラスファイルが作成され、画面中央の内蔵テキストエディタで作成したクラスファイルが編集できます。

 

すでにこのようなプログラムが書かれているはずです。
(プログラミングの基礎知識が必要です。分からない方はJavaを少し勉強して下さい)

package io.github.author.bukkit.testplugin;

public class Main {
	
}

 

これから書く内容の完成形です。めんどくさい方はコピペして下さい。

package io.github.author.bukkit.testplugin;

import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
	
	@Override
	public void onEnable() {
		System.out.println("プラグインが有効になりました");
	}
	
	@Override
	public void onDisable() {
		System.out.println("プラグインが無効になりました");
	}
}

 

まずMainクラスにJavaPluginクラスを継承します。

public class Mainpublic class Main extends JavaPluginに書き換えて下さい。

すると、JavaPluginがインポートされていないため "JavaPlugin" に赤い下線が表示されエラーが出ています。

その場合はJavaPluginにカーソルを合わせて「JavaPluginをインポートする」を選択して下さい。eclipseの便利な機能です。

 

 

次はMainの中にカーソルを置き、Ctrl+Spaceを押すとコンテンツ・アシストが表示されます。こちらもeclipseの便利な機能です。

onEnable()を選択してonEnableメソッドを作成して下さい。

そしたらもう一度、コンテンツ・アシストを表示してonDisableメソッドも作成して下さい。

onEnableメソッドとonDisableメソッドの中に自動生成されたもの(super.onEnable()、super.onDisable()含む)は削除して、

onEnableメソッドの中にはSystem.out.println(“プラグインが有効になりました”);

onDisableメソッドの中にはSystem.out.println(“プラグインが無効になりました”);を書いて下さい。

これでクラスは完成です。

 

 

plugin.ymlの作成

次に「plugin.yml」を作成します。


srcフォルダを右クリックして、 新規>ファイル を選択します。

ファイル名を”plugin.yml”にして完了を押します。

すると画面中央の内蔵テキストエディタにplugin.ymlが表示されます。

ちなみにymlはYAMLと言う文法で書きます。

 

plugin.ymlに以下の文章を入力して下さい。

name: プラグイン名
main: パッケージ.メインクラス
version: バージョン
author: 作者名
description: 説明

 

記入例:

name: TestPlugin
main: io.github.author.bukkit.testplugin.Main
version: 0.1
author: Author
description: Test Plugin

 

nameにはプラグイン名、

versionにバージョンとauthorに作者名、

descriptionにプラグインの説明を書いて下さい。

mainにはパッケージ名.メインクラスを書きます。上の記入例はパッケージがio.github.author.bukkit.testpluginでメインクラス(先ほど作成したクラス)が「Main」である場合の例です。

name、main、version以外は省略可能です。

plugin.ymlについてはこちらをご覧ください:https://bukkit.gamepedia.com/Plugin_YAML

 

 

 

Jarファイルの作成

plugin.ymlが完成したら、これでプラグインが動くようになりました。


次はプラグインをビルドしてjarファイルを作成します。

プロジェクトを右クリックして、 エクスポート を選択して下さい。

Jarファイルを押して下さい。こんな画面が出てきます。

f:id:Densyakun:20180211184121p:plain

 

右上の.classpathと.projectがチェックを外してエクスポートから除外して下さい。

左側でプロジェクトを開き、中にあるlibフォルダもチェックを外して除外して下さい。

これは、エクスポートする際には必ず確認して下さい。

 

エクスポート先をサーバーのpluginsフォルダの中にファイルを作成するようにして、

完了を押すとjarファイルが作成されます。

 

 

 

プラグインを動かす

次にサーバーを起動します。

サーバーが空いている場合は /reload コマンドを実行して下さい。

 

f:id:Densyakun:20180211184210p:plain

このようにログに「プラグインが有効になりました」と表示されていれば成功です。

次にサーバーにログインします。

接続元と接続先が同じPCである場合はサーバーアドレスを「localhost」にすることで接続できます。

 

 

/plコマンドを入力して、プラグイン一覧に作成したプラグインが追加されていれば完成です。

f:id:Densyakun:20180211184224p:plain

 

/version [プラグイン名] と入力するとプラグインのバージョンや説明文などが見れます。

 

今度はサーバーを閉じてみましょう。

 

f:id:Densyakun:20180211184320p:plain

このように「プラグインが無効になりました」と表示されていれば完成です。

 

おわりに

これでプラグインを作ることが出来ました。

今回はBukkitプラグイン開発環境の構築から、プラグインの作成までを行いました。

次回からは先程作成したプラグインをいじっていきます。

ありがとうございました。

f:id:Densyakun:20180211184259p:plain

 

次回:

densyakun.hateblo.jp