我尝试设置此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,除了设置活动之外,我还没有做任何事情,因为它确实告诉你这一切。
答案 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
}