Nukkit の日本語非公式wikiですNukkitに関する情報を発信しています

ここでは、Nukkitプラグインの作り方をなるべく簡単に書きます。

NukkitはJavaで書かれているため、必然的にプラグインの開発もJavaで行うことになります。
PocketMine-MPのプラグインをそのままコピーしても動きません。

ですが、安心してください。APIの構造や、関数など、ほとんどPocketMine-MPと互換性があるため、PMMPのプラグインを作ったことがある人なら、ちょっとJavaを覚えればすぐに作れるようになるはずです。(個人差アリ)

※ PHPではuseでしたがJavaではimportを使用します

準備

Eclipseで説明します。
ここでは、デモとしてゲーム参加時に文字列を送信するプラグインを作ります。
まずはここからEclipse 4.3 keplerのご自分の環境に合ったものをインストールしてください。

1.Eclipseを開き、ファイル→新規→プロジェクト


2.Maven→Mavenプロジェクト


3.シンプルなプロジェクトを作成(S)(アーキタイプ選択のスキップ)にチェックして次へ

4.このように入力して次へ


5.左のツリーから、ExamplePlugin→src/main/javaの上で右クリック→新規→パッケージ(写真ではプロジェクトになっています。すみません。)


6.画像のように入力して完了


7.ExamplePlugin→pom.xml→下のタブのpom.xmlを開いて、中身を全て消す


8.そこに下記のコードを入力(コピペでかまいません)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>example.plugin</groupId>
  <artifactId>ExamplePlugin</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <repositories>
  	<repository>
  		<id>mengcraft</id>
  		<url>http://ci.mengcraft.com:8080/plugin/repository/everything/</url>
  	</repository>
  </repositories>


  <name>Example</name>

  <url>http://nukkit.memo.wiki/</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
		<groupId>cn.nukkit</groupId>
		<artifactId>nukkit</artifactId>
		<version>1.0-SNAPSHOT</version>
		<scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
	<finalName>${project.artifactId}-${project.version}</finalName>
	<defaultGoal>clean install</defaultGoal>
	<plugins>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
           <version>2.3.1</version>
           <configuration>
               <archive>
                   <addMavenDescriptor>false</addMavenDescriptor>
               </archive>
           </configuration>
       </plugin>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>2.3.2</version>
           <configuration>
               <source>1.8</source>
               <target>1.8</target>
           </configuration>
       </plugin>
    </plugins>
  </build>
</project>
9.左のツリーでExamplePlugin右クリック→Maven→プロジェクトの更新→OK をします。

10.そしたら、画像のように進み、クラス作成をします。


11.画像のように入力して完了

実際にコードを書いてみよう

12.いよいよコードを書きます。(コピペしてかまいません)
package example.plugin.exampleplugin;

import cn.nukkit.Player;
import cn.nukkit.event.Listener;
import cn.nukkit.event.player.PlayerJoinEvent;
import cn.nukkit.plugin.PluginBase;
import cn.nukkit.utils.TextFormat;

public class Main extends PluginBase implements Listener{
	public void onEnable(){
		getLogger().info("起動しました。");
        this.getServer().getPluginManager().registerEvents(this, this);
	}
	public void onJoin(PlayerJoinEvent e){
		Player p = e.getPlayer();
		String name = p.getName();
		p.sendMessage(TextFormat.GREEN + name + "さん、ようこそサーバーへ!");
	}
}

plugin.ymlを書こう

13.plugin.ymlを書きます。ここには、プラグインの情報を書きます。まずはツリーのsrc/main/resourcesで右クリックをして新規→ファイル→plugin.ymlと入力→完了

14.これを書いてください。(コピペでかまいません)
name: ExamplePlugin
main: example.plugin.exampleplugin.Main
version: 1.0.0
author: Itsu
api: ["1.0.0"]

15.そしたら上書き保存しましょう。

コンパイルしよう

16.コードが書けたら、画像のように進みます。


17.Maven build(4)(4の部分は違う場合があります。)を押して、ゴールの部分にpackageと入力しましょう。そして完了を押します。

18.コンパイルをします。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
などとエラーが出る場合がありますが、気にしないでください。

コンソールの最後のほうに、
[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ ExamplePlugin ---
[INFO] Building jar: C:\pleiades\workspace\ExamplePlugin\target\ExamplePlugin-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:28.843s
[INFO] Finished at: xxx xxx x x:x:x JST 20xx
[INFO] Final Memory: 4M/15M
[INFO] ------------------------------------------------------------------------
などと出たらコンパイル完了です。

動かしてみよう

19.Eclipse起動時に指定したworkspaceの中の
ExamplePlugin\targetにExamplePlugin.jarがあれば完了です。あとはNukkitのpluginsフォルダに入れれば動作します。
お疲れ様でした。

ここで説明したものはMavenプロジェクト、プラグインとして配布しています。ダウンロードしていただいたものを解凍していただき、ExamplePluginフォルダがMavenプロジェクト、ExamplePlugin.jarがプラグインとなっております。Mavenプロジェクトはお使いのEclipseにインポートしていただくことができ、なおかつコードを編集して改造していただくことができます。

ダウンロード:http://uploader.mcpe.jp/detail?c=1553

インポート方法

ファイル→インポート→Maven→既存Mavenプロジェクト→参照でフォルダを選択する→完了

workspaceが見当たらない場合

上記のコンソール出力文の青で書かれた部分がworkspaceのパスです。ショートカットをデスクトップに貼っておくといいでしょう。

あとがき

執筆:Itsu, ikatyo
難しいですが頑張ってください。

このページへのコメント

恒心教大法師檜垣幸人

【毒入り危険】食べたら死ぬナリ

恒心教尊師弁護士唐澤貴洋弁護士が神戸山口組がバックにいる愛媛県今治市波止浜169の恒心教大師中島大士と
山口県柳井市柳井白潟西787のゴロゴロウこと広幸三郎と宮川拓と
三重県四日市市茂福町32 ピセスロイヤル富田105号室の藤原太一と共に
今治造船社長恒心教大法師檜垣幸人にちなんで商品名のどこかに「ひ」「が」「き」「ゆ」「き」「と」の
どれかが入った169種の菓子に毒薬を入れて全国のどこかの店にいつとは言わんが810個仕掛けるナリ
実は当職は店の前で東京大学院生の平敬君と記念写真を撮っているナリ
シバターこと神奈川県横浜市中区根岸町2丁目80−2 2Fの斎藤光の動画ほどでもないナリが
プレデターラットのフォトショおばさんうしじまいい肉以上に証拠能力のある写真でふ

もしもお前らが隠蔽を続けるのならそれをネット上のハセカラキッズ速報内で公開するナリ
北海道旭川市川端町4条7丁目1−16の小関直哉君の勤めるコープみたいな小売側も通報義務があるはずナリ
当職の暴露から発覚したら中島大士の女のナカシマンフェが謝罪記者会見を開く破目になるナリ
食べたらお茶の水女子大学附属中学校の宮川拓君みたいなキッズがrock or dieナリ
あとついでにいつとは言わんが全国どこかの小中学生にトラックか車かバイクで突っ込むナリ
名前に「ひ」「が」「き」「ゆ」「き」「と」のどれかが入った子共を中心に狙うナリ
あとついでにいつとは言わんが両国国技館と全国全ての空港と小中学校と高校とバリシップと
東京オリンピックの会場と被災地とタイシの名前にちなんで全大使館を爆破するなどのテロをするナリ

ワシは口先だけの無能ドルオタパッカマンとは違うんぞなもし
「ひ」「が」「き」「ゆ」「き」「と」関連の菓子を売ってはだめぞなもし
さもなくば2783億円と2783億ナカシマタイシコインを今治造船支社まで持参するぞなもし
お前らに忠告しとくぞ ワイはキレたらガチで何するか分からんから

毒入り危険食べたら死ぬナリ 怪人2783面相
連絡先 0898−41−8338

0
Posted by 名無し(ID:suEYXFyuPA) 2018年04月22日(日) 01:13:05 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

メンバーのみ編集できます