spigotプラグイン講座3-4(パスワードを作ろう)

どうも! プラグインティーチャー、Mr_IKです!
初心者向けマイクラspigotプラグイン講座、第三回(4限目)始めます!

前回、ブロックの破壊をキャンセルするプラグインを作りましたね。
今回はその続きからです。

第三回すべてのメニュー

  • コマンドを打ったらメッセージを送信 done
  • コマンドを打ったら全体にメッセージを送信 done
  • OP以外のブロックの破壊をすべてキャンセル done
  • パスワードを入力したらOPになれるコマンド ←今回はこれ
  • [おまけ]経済との連携

パスワードを入力したらOPになれるコマンド

実は、”コマンドを打ったらメッセージを送信”と”コマンドを打ったら全体にメッセージを送信”の
2つをやって、少しだけ改造すれば 意外とすぐできちゃいますよ。

前回のプロジェクトを開きましょう。

https://gyazo.com/2e26b7fee514d2d8c5760d8c71b0cc55

このonCommandですが、真ん中ぐらいにある

if(args.length == 0){
return true;
}

if(args.length == 0){
return true;
}else if(args.length == 2 && args[0].equalsIgnoreCase(“getop”)){
//ここに3-4のコードを書く
}

に変更してください。

これができたら、//ここに3-4のコードを書く の下に以下のコードをコピペしてください

if(args[1].equalsIgnoreCase(“password”)){
p.setOp(true);
p.sendMessage(“§a§lパスワード認証!OPになりました!”);
return true;
}
p.sendMessage(“§c§lパスワード認証失敗!OPになれませんでした!”);
return true;

はい、このコードは args[1]、つまり /test 1 2 の 2の部分が “password”という文なら
OPを与える というコードです。
“password” の部分はみなさんの好きなように変えてください!

この時点で、下の写真のようになってればOKです。
https://gyazo.com/c5c4df31ad2a071598b754812cef3bb4

で、コピペと変更が終わったら ビルドし、pluginsフォルダに入れてサーバーをreload・再起動してください

それが終わったら /test getop (自分で決めたパスワード 元々のままならpassword)

で、OPを手に入れられます。
間違えた文を打つと、OPになれなかった という文が出てくるでしょう?

これで、無事OPゲットパスワードコマンドができました。

第三回、これにておまけ以外は終了です。
お疲れさまでした。

次回はおまけとして経済との連携をお教えします。
乞うご期待。

spigotプラグイン講座3-3(イベントをキャンセルしよう)

どうも! プラグインティーチャー、Mr_IKです!
初心者向けマイクラspigotプラグイン講座、第三回(3限目)始めます!

前回、全体メッセージを送信するプラグインを作りましたね。
今回はその続きからです。

第三回すべてのメニュー

  • コマンドを打ったらメッセージを送信 done
  • コマンドを打ったら全体にメッセージを送信 done
  • OP以外のブロックの破壊をすべてキャンセル ←今回はこれ
  • パスワードを入力したらOPになれるコマンド
  • [おまけ]経済との連携

OP以外のブロックの破壊をすべてキャンセル

今回はそこそこ使えるプラグインを作っていきます
前回のプロジェクトを開きましょう。

今回行こなうのは、『ブロック破壊イベントの取得』と『そのイベントをキャンセルし、メッセージ』です。

まず、

public final class Hello_world extends JavaPlugin {

public final class Hello_world extends JavaPlugin implements Listener {

に変えましょう。
これは、イベントを取得するために必要なものと思ってください。

次に、OnEnable()に

getServer().getPluginManager().registerEvents(this, this);

を追記してください。 これもイベントの取得に必要なものです。

この2つがないとエラーが出ずに反応しないので注意してください!

今の時点でコードが
https://gyazo.com/26ec8a7fb84e4d947afffc81915c5383
となってればOKです。

では、処理の部分を書いていきましょう。

下のコードを下の写真通りに書いてください

@EventHandler
public void BlockBreakCancel(BlockBreakEvent e) {
if(!e.getPlayer().isOp()){
e.getPlayer().sendMessage(“§c§lおっと!君はOPじゃないネ!”);
e.setCancelled(true);
}
}

https://gyazo.com/7fc32707f0f799e05fc7480ff538a677

赤線が出たら、ALT+ENTERでインポートです。

これを上の写真通りコピペできたら、ビルド->pluginsに入れ,reload,再起しましょう

reload・再起動が終わったら、自分の権限を黒い画面で

deop [MCID]

と入力して取り
適当なところでブロックを壊してみましょう。

ここで、ブロックが壊せたら もう一度この記事を見直し、間違えたところがないか、自分にOPがついてないかを確認しましょう。

ブロックが壊せないけどメッセージが出ない場合は、スポーンプロテクションがかかってる可能性があるので
別の場所でブロックを壊してみましょう。

このようにメッセージが出て、ブロックが壊せなかったら成功です!
https://gyazo.com/80962ce149e8532c8411b9906c16c514

後で、黒い画面で自分にOPを与えておきましょう。

op [MCID]

次回は、パスワード入力で OPをゲットできるプラグイン作成です!
乞うご期待!

spigotプラグイン講座3-1(コマンドを実装しよう)

どうも! プラグインティーチャー、Mr_IKです!
初心者向けマイクラspigotプラグイン講座、第三回(1限目)です!

前回、hello world プラグインを作りましたね。
今回はその続きからやっていきます。

第三回すべてのメニュー

  • コマンドを打ったらメッセージを送信 ←今回はこれ
  • コマンドを打ったら全体にメッセージを送信
  • OP以外のブロックの破壊をすべてキャンセル
  • パスワードを入力したらOPになれるコマンド
  • [おまけ]経済との連携

第三回をすべて読むと、ある程度のプラグインを作ることができます!

コマンドを打ったらメッセージを送信

まずは簡単なものからですね。
これは、様々なプラグインの中でも大大大前提のコードです。

intellijを開き、前回のプロジェクト『TutorialPlugin』を開いてください。
開きましたか?では、コマンドの実装をしましょう。

前回のコード、”getLogger().info(“Hello!world!こんにちは!世界!”);”の下に

getCommand(“test”).setExecutor(this);

を追加してください。

これで、”test”というコマンド自体の実装ができました。
今度は処理を書きます。

画面のように、OverrideしたonCommand(下にコピペがあります。)を作ってください。
https://gyazo.com/b8ca9e488007de80c27c3e05f5ab2015
コピペ用↓

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
return true;
}

さて、何か赤線で引かれてしまいました。
実は、まだこのTutorialPlugin君には “Commandsender”くんが何かわかってないのです。
どうやって教えるの? 簡単です。 “import” をするんです。

intellijには自動インポートがあるので、使ってみましょう。
赤くなっている文字の上でクリック、その後 ALT+ENTER。

すると…?

https://gyazo.com/19cf75c750f30a5357e68e04a66830e8

何か出てきましたね。今回使うのは “import”なので import class をクリックします。すると

https://gyazo.com/550d453ff34ded9b1936230894061e0b

“import” が一つ増え、赤文字が消えましたね!
同様に、右の赤文字もクリック後 ALT+ENTER でインポートしましょう。

さあ、やっとできた この “onCommand” の中にコマンドの処理を書いていくわけですが

コマンドを打つのはプレイヤーだけじゃありません。
“黒い画面”->console コマンドブロック などなど

プレイヤー以外にもコマンドを実行するものはいくつかあります。

もし、それをはじく処理をしないままプレイヤーとして処理すると…
エラーが出てしまうので、先にプレイヤー以外がコマンドを使えないようにしてしまいましょう。

“return true;”の上に、下のコードをコピペしてください。

if (!(sender instanceof Player)) {
return true;
}

先ほど同様、赤文字になったらALT+ENTERでインポートです。

これが追加できると、sender、つまりコマンド実行者がPlayer以外の場合はじくようになります。

さあ、いよいよプレイヤーにメッセージを送信です!!

以下のコードを先ほどのコードの下に書いてください!

Player p = (Player)sender;
p.sendMessage(“やあ!こんにちは!世界!”);

最終的なコードはこちら
https://gyazo.com/5ed5d1c45b874222588ae122886ce62d

間違っていた場合は画像を見て直してくださいね。

これで、ついにコマンドが使える!ビルドだ…と行きたいところですが。

プラグインが読み込まれた時、このコマンドを使うぜ!とサーバーに教えないといけません。
Plugin.ymlを開き、下の画像のようにしてください。
https://gyazo.com/6b985207faba725da8b17760e93c2ec7
これ、スペースや文字、一字一句慎重に書いてください。
間違えたらコマンドが読み込まれません。

さあ、ここまでできたらビルドし、自分のサーバーに入れてみましょう。
前回使用したプラグインは削除してください。

https://gyazo.com/847de5a6c8f7564c7d8f129343947699

/test と打って”やあ!こんにちは!世界!”と出たら成功です!

=====仕組み解説タイム(中級者向け)======

ここからは、コードの仕組みと応用を書いていきます。

まずは

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
return true;
}

ですが、これはコマンドを受け取った時の処理を書く場所です。
senderが実行者 commandがコマンド自体の変数 labelは/testのtest argsは/test 1 2 の 1,2,… の詰め合わせ

となっています。

/test 1 2 3 4
というコマンドをPlayerが実行した場合…

実行者(sender) = Player , label = test args = 1,2,3,4 となっています。

1を取り出したいときは args[0] 2はargs[1] となっています

次に

if (!(sender instanceof Player)) {
return true;
}

ですが、sender が player かどうか。-> いいえならここに入る というif文です。
ifについては 3-2、3-3 あたりで学習しますが、あくまで分岐と思ってください。

最後に

Player p = (Player)sender;
p.sendMessage(“やあ!こんにちは!世界!”);

これは senderをplayer型にした後、
そのプレイヤーにメッセージを送るコードです。
“やあ!こんにちは!世界!”の部分を変えると、メッセージも変わります。
(メッセージに色を付ける方法は 3-2 全体メッセージにて)

=====以上、中級者向け解説======

いかがでしたでしょうか。
あまりにも長い解説となったので第三回は分割してお届けすることになります。

次回、全体メッセージの回をお楽しみに!

spigotプラグイン講座2(環境を整え作ってみよう)

どうも! プラグインティーチャー、Mr_IKです!
初心者向けマイクラspigotプラグイン講座、第二回をやっていこうと思います。

前回、サーバーを建てましたね。
今回はその続きからやっていきます。

前回:

今回のメニュー

  • 自分のサーバーに入ってみる
  • JDKをインストール
  • intellijをインストールする
  • intellijの環境を整える
  • hello worldプラグイン作成

この講座で、テストプラグインは作れるようになります!

1: 自分のサーバーに入ってみる

自分で建てたサーバーに入れないのは悲しいので、試してみましょう!
前回同様に(好きな名前).batをダブルクリックし、起動しましょう。

起動ができたら、以下の写真通り入力してください
https://gyazo.com/223ed3f462172bf8fd5c33dae6144cb3

できたら、サーバーリストから入ってみましょう!
入れたら、”黒い画面”を開いてください。その後
“黒い画面”に

op [自分のMCID]

と打つとOP権限が渡されます!

ここまでできたら、次に進みましょう(サーバーは立てておいても一旦閉じてもいいです)

2: JDKをインストールする

これ、結構重要です。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
上のリンクから “Java Platform (JDK) (数字)”
と書いてあるほうをクリックし、
出てきたページのAccept License Agreement をクリック
自分のOSにあったインストーラーをダウンロードし、その後インストール。

できたら、次に進みましょう。

3: intellijをインストールする

https://www.jetbrains.com/idea/
上のリンクから、[DOWNLOAD]をクリックし、
[Community]側の[DOWNLOAD]をクリックしてください。
インストーラーがダウンロードされます。

ダウンロードが終わったら、インストーラーをダブルクリックし、インストールウィザードに従ってインストールを進めてください。

インストール終了後、デスクトップにショートカットができていると思います。
ダブルクリックし、起動するのを待ちましょう。
https://gyazo.com/283e1b1943bd8c946a158c41459ca44e
このような画面になったら、次に進みましょう。

4: intellijの環境を整える

上の画面右下、Configureという歯車マークをクリック->Plugins->Browse repositories
とボタンを押し、上の検索バーで “Minecraft”と入力。
https://gyazo.com/f3646db0e80202010f835a61fef35b90
このようになったら右のInstallをクリックします。
インストールが終わったらIntellijを再起動してください!
再起動が終わったら、次に進みましょう。

5: hello worldプラグイン作成

プラグイン作成者がほぼ必ず通る道。hello world。
さあ、あなたもプラグイン作成者への一歩を踏み出そう!!

Intellij初期画面からCreate new project をクリックしてください。
恐らくこのような画面になります。
https://gyazo.com/a3ecee868827e3f72693c054c062439a

Minecraftというところがあるじゃろ?
そこをクリックしspigotpluginを選択、
上のほうのprojectSDKはjavaのファイルの場所(特に指定なしならC:\Program Files\Java\jdk-数字)
を選択し、Nextボタンクリック。
https://gyazo.com/2297d3916690c47e767eb89308ced318
ここの Groupidには tutorial.test
Artifactid には Hello_world と入力して下さい。
その後2回Nextをクリック。
Projectnameのところで TutorialPlugin と入力
そして Finish をクリック!

https://gyazo.com/41624620b79939704832ee6c7c0da566
キタ━━━━(゚∀゚)━━━━!!

ここまで来たらもう簡単!

// Plugin startup logic

と書かれたところの下に

getLogger().info(“Hello!world!こんにちは!世界!”);

とコピペしてください!

その後 CTRL + S でセーブし、
https://gyazo.com/0d1a6522e18725b21b286a54235bedae

この▼をクリック、 TutorialPlugin build を選択 隣の ▶ をクリック!

https://gyazo.com/59ddd4a3a81e720a1b9c97b894f77eae

と出たら成功!!

Tutorialplugin -> tragetをクリック、 その中にあるHello_world-1.0-SNAPSHOT.jar を
前回のサーバーファイル -> plugins の中にドラッグ・アンド・ドロップ!

そうしたら 黒い画面を開き、(サーバーを起動していないなら起動して)
reload と打ち込みます!

https://gyazo.com/d1ea2dbf4d926db5b3af79d5cc60d241

こうなっていたら成功です!!

お疲れさまでした!
次回はコードの説明、そしてちょっと難しいコードを教えていきます!

では、またね!

spigotプラグイン講座1(サーバーを建てよう)

始めまして! 今回からプラグインを教えます、Mr_IKです!
初心者向けマイクラspigotプラグイン講座をやっていこうと思います。
とりあえず初回なので、基本的なところからやっていきましょうか。

今日やること

  • gitをインストールする
  • buildtoolsをダウンロードする
  • spigotサーバーをビルドする
  • サーバーを起動する

今は意味不明でも👌おっけーです!
では、いってみよー!

1: gitをインストールしよう

もう???となってる方もいるでしょうが、簡単に説明します。
spigotというのは「非公式」のサーバーです。
そして、minecraft側が決めたルールに沿ってやると、
自分で作るしかないのです。
簡単に言うとこんな感じです。気になる方は自分でggってください。
しかし、自分でビルドするって言ってもどういう意味かわからないでしょう。
そこで活躍するのが「git」です。
gitはspigotの「設計図」の役割を果たします。
ダウンロードの仕方はこのリンクからどうぞ↓
https://eng-entrance.com/git-install
gitのダウンロードができたら、次に進みましょう。

2: buildtoolsをダウンロードしよう

また意味不明な言葉が出てきましたね(笑)
この「buildtools」は、spigotの「材料」といった感じです。
下のリンクから最新版をダウンロードし、次に進みましょう↓
https://hub.spigotmc.org/jenkins/job/BuildTools/

3: spigotをビルドしよう

いよいよビルド、つまり「作成」の時間です。
ダウンロードしたBuildTools.jarを新しいフォルダ(名前は英語なら自由)を作り、そこに入れて、
https://gyazo.com/9800821250d900e8ee1c69b39aff60ea
フォルダ内を右クリック→Git Bash Hare でgitを起動します。
https://gyazo.com/81d84d606596eb48ca1c996f3c71d21e
https://gyazo.com/e8ed797ea4e7f0f144845e3a7ed451c7
こうなったら、次はその黒い画面に

java -jar BuildTools.jar

と入力しEnterを押しましょう!その後はしばらく待つと…
https://gyazo.com/8682127841f281070c5888dc80ccb95b
spigotができていますね!これでサーバーの作成は一段落です!
spigot-(バージョン名).jar ができていない場合はもう一度このページなどを読み直してやり直してみましょう!

4: サーバーを起動する最後の準備をしよう!

サーバーのファイルはできましたが、まだ起動するための「鍵」がありません!
その「鍵」とは、 起動パッチのこと。 今から起動パッチの作りかたをお教えします!
まず、spigot-(バージョン名).jarと同じところに、 (好きな名前).bat というファイルを作ってください。
私は start.bat にしました。
https://gyazo.com/f0522c12a1272f23cfac58d7dd5fd6bb
そして、その(好きな名前).batを右クリックー>編集 でメモ帳などのテキストエディタを開きましょう
次が一番重要です!

@ECHO OFF
java -Xms1024M -Xmx1G -jar spigot-(バージョン).jar
PAUSE

を書き込んだ後、保存し閉じてください。

注意: (バージョン)はサーバーファイルのバージョンに合わせてください。

ここまでできたら次がこのパート最後です!

5: サーバーを起動してみよう!

いよいよ起動です!
一個前にできた (好きな名前).bat をダブルクリックしてみましょう!
https://gyazo.com/d5fda5b12b049926618bb74256023189
サーバー立ったの?と聞きたくなりますが、まずはeulaに同意しないといけません。
eulaとは、利用規約みたいなものです。 フォルダの中の eula.txtの中にある

eula=false

eula=true

に変更し保存、その後また(好きな名前).bat をダブルクリックしてみましょう!
https://gyazo.com/df6d3d7559cf34afa5cd1156c251525d
このようになっていたらサーバー起動成功です!おめでとうございます!
(サーバーを停止するには、黒い画面でstop と打ってenterを押すと停止します。)

いかがでしたでしょうか。
次回はプラグイン開発環境の構築です!
お楽しみに!