我在将一个API实现到bukkit插件时遇到了问题

时间:2014-04-20 09:01:12

标签: java api minecraft bukkit integrate

我尝试设置此API,以便在购买商品时更新玩家记分板和内容。

我使用的插件名为SignShop,可在此处找到:

http://dev.bukkit.org/bukkit-plugins/signshop/pages/sign-shop-api/

但这不是我的问题,问题是所有事件都没有从它的外观中解雇。

这是我的课程,我正在尝试一些调试。

package me.galaxywarrior6.minecraftgta.events;

import org.bukkit.Bukkit;
import org.bukkit.event.Listener;
import org.wargamer2010.signshop.events.SSMoneyTransactionEvent;
import org.wargamer2010.signshop.events.SSPostTransactionEvent;
import org.wargamer2010.signshop.events.SSPreTransactionEvent;
import org.wargamer2010.signshop.events.SSTouchShopEvent;

public class SignBuyEvent implements Listener{

    public void onSignBuy(SSMoneyTransactionEvent event){
        Bukkit.getServer().broadcastMessage("one!");
    }
    public void onSignBuy(SSPreTransactionEvent event){
        Bukkit.getServer().broadcastMessage("two!");
    }
    public void onSignBuy(SSPostTransactionEvent event){
        Bukkit.getServer().broadcastMessage("three!");
    }
    public void onSignBuy(SSTouchShopEvent event){
        Bukkit.getServer().broadcastMessage("four!");
    }
}

有人可以帮助我实施这个API,除了设置活动之外,我还没有做任何事情,因为它确实告诉你这一切。

1 个答案:

答案 0 :(得分:1)

那是因为您需要@EventHandler就在所有事件之上:

@EventHandler //this must be before ALL events
public void onSignBuy(SSMoneyTransactionEvent event){
    Bukkit.getServer().broadcastMessage("one!");
}

另外,您可能没有注册活动。在您的主文件(extends JavaPlugin)中,请确保在onEnable()中有此内容:

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

因此,您的SignBuyEvent类应该如下所示:

public class SignBuyEvent implements Listener{
  @EventHandler
  public void onSignBuy(SSMoneyTransactionEvent event){
    Bukkit.getServer().broadcastMessage("one!");
  }

  @EventHandler
  public void onSignBuy(SSPreTransactionEvent event){
    Bukkit.getServer().broadcastMessage("two!");
  }

  @EventHandler
  public void onSignBuy(SSPostTransactionEvent event){
    Bukkit.getServer().broadcastMessage("three!");
  }

  @EventHandler
  public void onSignBuy(SSTouchShopEvent event){
    Bukkit.getServer().broadcastMessage("four!");
  }
}

并且onEnable()课程中的Main方法应如下所示:

@Override
public void onEnable(){
  this.getServer().getPluginManager().registerEvents(new SignBuyEvent(), this);

  //other things that you have in your onEnable here
}