Java
minecraft

MinecraftBE木の剣でタップするとジャンプする

この記事は、

  • 初心者でも作れる簡単なプラグインを作ってみようと思って作ったプラグラインの解説です。参考になればうれしいです。
  • Blogのほうで紹介し、Githubでソース公開やダウンロードが行えます。

はじめに

これはMinecraft BE(旧PE)でサーバーを作るときに使用するNukkitのプラグインに関しての記事です。
Javaをある程度使用できる方だとすらすら読めると思います。そうではない方も調べながら読んでもらえると参考になると思います。

どういう構造なのか

はじめに、プラグインはどのような構造になっているのか紹介します。
プラグインの中では、マインクラフトに応じたイベント処理がNukkitの中で準備されており、それらを使用して処理を書いていきます。

@EventHandler
public void onJoin(PlayerJoinEvent event){
    //記述
}

上記の例では、PlayerJoinEventを引数にしている関数を書いています。これによりプレイヤーがサーバーに参加したときに呼ばれるようになります。

これ以外にもたくさんの種類のイベントがあり、これらを利用していきながらプラグインは作成していきます。

作成したもの解説

今回は木の剣でタップすると向ている方向にジャンプするというのを作りました。
これもイベントを使用しています。さっそくソースを見てみましょう。

@Override
public void onEnable(){
    this.getServer().getLogger().info("§b[TapFly]起動しました");
    this.getServer().getPluginManager().registerEvents(this, this);
}

@EventHandler
public void onInteract(PlayerInteractEvent e){
    Player pl = e.getPlayer();
    Item item = pl.getInventory().getItemInHand();
    int itemid = item.getId();
    if(itemid == Item.WOODEN_SWORD) {
        double yaw = pl.getYaw();
        double pitch = pl.getPitch();
        double addX = -Math.sin(yaw * Math.PI / 180) * Math.cos(pitch * Math.PI / 180);
        double addY = -Math.sin(pitch * Math.PI / 180);
        double addZ = Math.cos(yaw * Math.PI / 180) * Math.cos(pitch * Math.PI / 180);
        pl.setMotion(new Vector3(addX, addY, addZ));
    }
}

これプラグインのソースの一部です。
いろんなことを書いていますが、関数が二つありますよね。これらを分けてみていきましょう。

一つ目のonEnableという関数。

@Override
public void onEnable()

これはプラグインの中で一番始めに呼ばれる関数です。
始めに呼ばれるということもあり、値の初期化などするのに使います。
今回だと、イベントを呼びだしてもらえるよう登録したり、コンソールに文字を出力しています。

二つ目のonIteractという関数。

@EventHandler
public void onInteract(PlayerInteractEvent e)

これはプレイヤーが何かタップしたときに発生するイベントです。
このイベントからはプレイヤーオブジェクトが取得できるので、それから名前を取得したり、手に持っているアイテムオブジェクトを取得できます。
今回では、その取得したアイテムオブジェクトから木の剣かどうか判断し、向ている方向に飛ぶようにしています。
また、向ている方向に飛ぶのは、三角を用いて計算しています。
ただ、向ている方向に飛ぶのはどうでもよく、イベントを使用して、処理ができるということが大事です。
イベントを用いて、それに関することを取得し、判断して処理をすることでいろんなことができるようになります。