[MineCraft-Spigot2]Hello World!プラグインを作(つく)ってみよう!
「[MineCraft-1] 必要(ひつよう)なソフトをインストールしよう!!」でインストールしたEclipseを表示(ひょうじ)させます。
Navigatorタブを右(みぎ)クリックして、「New」矢印「Java Project」をクリックします。
「Project name:」に、半角英数字(はんかくえいすうじ)でプロジェクト名(めい)を入力(にゅうりょく)します。名前(なまえ)は好(す)きなものをつけていいです。ここでは「MyPlugin」とつけておきます。
※Javaではプロジェクトの名前(なまえ)は、「パスカルケース」という方法(ほうほう)でつけることが多(おお)いです。「キャメルケース」という方法(ほうほう)と同(おな)じ方法(ほうほう)ですが、「わたしのプラグイン=MyPlugin」のように、言葉(ことば)をくっつけて、単語(たんご)のはじめの言葉(ことば)を大文字(おおもじ)でかきます。
例)
・MinecraftProject(マインクラフトのプロジェクト)
・DojoBoardGame(道場・カード・ゲーム)
プロジェクトが追加(ついか)されました。
次(つぎ)にプロジェクト名(めい)を右(みぎ)クリックして、「Properties」をクリックします。
「Java Build Path」をクリックして、右側(みぎがわ)の「Libraries」を選択(せんたく)、「Add External JARs...」ボタンをクリックします。
ダウンロードした「spigot.jar」をクリックして、開(ひら)くボタンをクリックします。
spigot.jarが追加(ついか)されました。
JavaDoc(じゃばどっく)のURLを登録(とうろく)します。
Spigot JavaDoc
https://hub.spigotmc.org/javadocs/spigot/index.html?index-all.html
「OK」ボタンを押(お)して、Propertiesを閉(と)じます。
JavaDoc
プログラミングの時(とき)に、Spigotのメソッドや変数(へんすう)を調(しら)べるときのために、「JavaDoc(じゃばどっく)」という文書(ぶんしょ)を参考(さんこう)にしますので、そのURLを登録(とうろく)しておきます。
では、いよいよプログラムを作(つく)っていきます。
Navigatorからプロジェクトの「src」フォルダを右(みぎ)クリックして、「New」→「Package」をクリックします。
「Name:」にパッケージ名(めい)を入力します。
パッケージ
プログラムを分類(ぶんるい)するためのもので、Java言語(げんご)があらかじめ使(つか)っている言葉(ことば)でなければ、好(す)きな名前(なまえ)を使(つか)うことができますが、WebサイトのURLのように、「分類.xxx.com」の逆(ぎゃく)「com.xxx.分類」で、ほかと重(かさ)ならないようにつけることが多(おお)いです。
ここでは、つぎのようにつけました。Nameを入力(にゅうりょく)したら「Finish」をクリックします。
com.coderdojoginowan.myplugin
パッケージを作(つく)ると、同(おな)じ名前(なまえ)でフォルダも作成(さくせい)されました。
プログラムの入(い)れ物(もの)ができたので、Javaのクラスをつくります。「myplugin」フォルダを右(みぎ)クリックします。
「New」→「Class」をクリックします。
「Name:」にクラス名(めい)をにゅうりょくします。
Javaのクラス名(めい)
最初(さいしょ)の一文字目(ひともじめ)を大文字(おおもじ)にすることが多(おお)いです。英数字(えいすうじ)であれば、好(す)きな名前(なまえ)をつけることができます。ただし、はじめのひともじは英字(えいじ)でなければだめです。
◯ Main1
✗ 2Main
ここでは、「Main」と入力(にゅうりょく)しました。
Package(パッケージ)がさきほど作(つく)ったものになっているかも確認(かくにん)してください。なっていない場合(ばあい)はいちど「cancel(キャンセル)」ボタンをクリックして、パッケージ名(めい)を右(みぎ)クリックするところから、やりなおしてください。
「Finish」をクリックします。
Main.javaができたら、ダブルクリックしてプログラムを開(ひら)きましょう。
Mainクラスの中(なか)でSpigotのいろんな機能(きのう)を使(つか)っていくために、「extends JavaPlugin」を追記(ついき)します。
extends
そのまま日本語(にほんご)にすると「拡張(かくちょう)」という意味(いみ)ですが、Javaプログラミングでは「継承(けいしょう)」とよんで、あるクラスから、メソッドや変数(へんすう)を受(う)け継(つ)いで、さらに新(あたら)しいメソッドや変数(へんすう)を追加(ついか)したクラスを作(つく)るときに使(つか)います。
「class Main extends JavaPlugin」は、「JavaPlugin」というクラスを受(う)け継(つ)いだ、「Main」クラスです、という意味(いみ)になります。
JavaPluginを追加(ついか)すると、✗しるしが出(で)てきてエラーになります。これは、MainクラスからJavaPluginクラスを呼(よ)び出(だ)そうとしていますが、JavaPluginクラスがある場所(ばしょ)がわかならいためです。
MainクラスがJavaPluginクラスの場所(ばしょ)をわかるようにしてあげるには、「import」を追加(ついか)する必要(ひつよう)があります。
✗しるしをクリックすると、エラーを直(なお)すための方法(ほうほう)がいくつか出(で)てきますので、「Import 'JavaPlugin'(org.bukkit.plugin.java)をダブルクリックして選(えら)びます。
importが自動(じどう)で追加(ついか)されて、✗しるしが消(き)えました。この後(あと)も、別(べつ)のクラスを呼(よ)び出(だ)すときは、おなじようにimportを追加(ついか)しましょう。
Minecraftのコマンドを使(つか)って、「Hello World!」を表示(ひょうじ)するプラグインを作(つく)ってみます。
Minecraftのコマンドは、プレイ中にキーボードの「T」ボタンを押(お)すと入力(にゅうりょく)できる、ワールドで時間(じかん)や天気(てんき)を変(かえ)たり、テレポートしたりと、いろいろな命令(めいれい)を実行(じっこう)できる仕組(しく)みですね。
「hello」というコマンドを実行(じっこう)すると、「Hello World!」と表示(ひょうじ)されるプログラムを作(つく)ります。
Mainクラスに次(つぎ)の「onCommand」メソッドを追加(ついか)しましょう。
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(command.getName().equals("hello")) {
Player player = (Player)sender;
// sendTitle(Title,SubTitle,FadeInTime,StayTime,FadeOutTime)
player.sendTitle("Hello World!", "", 10, 70, 20);
}
return false;
}
メソッドを追加(ついか)した後(あと)のMainクラスは次(つぎ)のようになります。
package com.coderdojoginowan.myplugin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(command.getName().equals("hello")) {
Player player = (Player)sender;
// sendTitle(Title,SubTitle,FadeInTime,StayTime,FadeOutTime)
player.sendTitle("Hello World!", "", 10, 70, 20);
}
return false;
}
}
onCommandメソッド(JavaDocはここ)
このメソッドは、Minecraftでコマンドが実行(じっこう)された時(とき)に呼(よ)び出(だ)されます。
public:他(ほか)のクラスから呼(よ)び出(だ)すことができるという意味(いみ)です。
boolean:true、falseといった、boolean型(がた)の結果(けっか)を返(かえ)すメソッドという意味(いみ)です。
<引数(ひきすう)>※メソッドが受(う)け取(と)るもの
CommandSender sender:コマンドを送(おく)ってきたもの。ここではプレイヤーがコマンドを送(おく)ってきます。
Command command:送(おく)ってきたコマンド。ここでは「hello」が送(おく)られてきます。
String label:コマンドのエイリアス。短縮形(たんしゅくけい)など、コマンドに違(ちが)う名前(なまえ)をつけたときは、このlabelにはいってきます。
String[] args:コマンドと一緒(いっしょ)に指定(してい)された引数(ひきすう)。配列(はいれつ)で複数(ふくすう)指定(してい)されることがあります。
PlayerのsendTitleメソッド(JavaDocはここ)
player.sendTitle(String title,String subtitle,int fadeIn,int stay,int fadeOut)
プレイヤーが持(も)っているメソッド「player.sendTitle("Hello World!", "", 10, 70, 20);」の意味は次のようになります。
title:表示(ひょうじ)されるタイトルです。
subtitle:表示(ひょうじ)されるサブタイトルです。
fadeIn:タイトルがフェードインしてくる時間(じかん)です。はじめは10秒(びょう)が設定(せってい)されています。
stay:表示(ひょうじ)される時間(じかん)です。はじめは70秒(びょう)が設定(せってい)されています。
fadeOut:タイトルがフェードアウトしていく時間(じかん)です。はじめは20秒(びょう)が設定(せってい)されています。
次(つぎ)に、プラグインの情報(じょうほう)を設定(せってい)する「plugin.yml」という設定(せってい)ファイルを作(つく)ります。
プロジェクト「MyPlugin」を右(みぎ)クリックして、「New」→「File」をクリックします。
「File name:」に「plugin.yml」と入力(にゅうりょく)して「Finish」ボタンをクリックします。
plugin.ymlファイルができました。ダブルクリックして開(ひら)きます。
plugin.ymlファイルに次(つぎ)のような内容(ないよう)を入力(にゅうりょく)します。
version: 1.0
name: MyPlugin
main: com.coderdojoginowan.myplugin.Main
author: CoderDojoGinowan
description: My plugin!
commands:
hello:
commands:のあとの「hello:」の前(まえ)に、半角(はんかく)スペースをふたつ入(い)れてください。
plugin.yml(せつめいはここ)
version: このプラグインのバージョンです。
name: このプラグインの名前(なまえ)です。
main: このプラグインではじめに実行(じっこう)するプログラムです。
author: このプログラムを作(つく)ったひとです。
description: このプラグインのせつめいです。
commands: プラグインで実行(じっこう)できるコマンドです。
plugin.ymlファイルを作(つく)ったら完成(かんせい)です。プラグインを保存(ほぞん)して、Minecraftサーバーに組(く)み込(こ)んでみましょう。
MyPluginプロジェクトを右(みぎ)クリックして、「Export」をクリックします。
「Java」→「JAR file」をクリックして「Next>」ボタンをクリックします。
「select the resources to export:」で全部(ぜんぶ)チェックして、「Browse」ボタンをクリックします。pluginプログラムの保存場所(ほぞんばしょ)をspigotサーバーを保存(ほぞん)した場所(ばしょ)にします。
ここでは、デスクトップの「MinecraftServerSpigot1.12.2」フォルダに保存(ほぞん)したので、その中(なか)の「plugins」フォルダを開(ひら)きます。pluginsフォルダが無(な)ければ作(つく)ってください。
「保存(ほぞん)」ボタンをクリックします。これでspigotサーバーにプラグインが組(く)み込(こ)まれました。
spigotサーバーが未(ま)だスタートしていなければ、スタートさせます。もし、スタートしていたら、「reload」コマンドをサーバーのターミナル画面(がめん)で実行(じっこう)しましょう。
サーバーがプラグインを読(よ)み込(こ)んで再起動(さいきどう)します。
Minecraftで「hello」コマンドを実行(じっこう)してみましょう。
「Hello World!」タイトルが表示(ひょうじ)されました!
このような、Spigotが提供(ていきょう)するクラスとメソッドなどを、API(エーピーアイ)と呼(よ)びますが、APIを使(つか)ってMinecraftにいろんな機能(きのう)を追加(ついか)することができます。
APIが提供(ていきょう)するクラスやメソッドはJavaDocで誰(だれ)でも見(み)ることができますので、Javaと英語(えいご)を勉強(べんきょう)して、あなただけのMinecraftサーバーをつくりましょう!
参考(さんこう)にしたWebサイト
Spigot-API(JavaDoc)
https://hub.spigotmc.org/javadocs/spigot/index.html?overview-summary.html
Plugin YAML
https://bukkit.gamepedia.com/Plugin_YAML
子どもたちの新しい学びの場つくりへ、ご支援よろしくです!