Java I';我在将API实现到bukkit插件中时遇到了一个问题
我正在尝试设置这个API,以便在玩家购买物品时更新他们的记分板和其他东西 我正在使用的插件名为SignShop,可以在这里找到: 这不是我的问题,问题是没有一个事件是从它的外观发射 这是我的班级,我在那里尝试一些调试Java I';我在将API实现到bukkit插件中时遇到了一个问题,java,api,minecraft,bukkit,integrate,Java,Api,Minecraft,Bukkit,Integrate,我正在尝试设置这个API,以便在玩家购买物品时更新他们的记分板和其他东西 我正在使用的插件名为SignShop,可以在这里找到: 这不是我的问题,问题是没有一个事件是从它的外观发射 这是我的班级,我在那里尝试一些调试 package me.galaxywarrior6.minecraftgta.events; import org.bukkit.Bukkit; import org.bukkit.event.Listener; import org.wargamer2010.signshop
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吗?除了设置事件之外,我什么都没做,因为这就是它真正告诉你要做的。这是因为你需要
@EventHandler
就在你的所有事件之上:
@EventHandler //this must be before ALL events
public void onSignBuy(SSMoneyTransactionEvent event){
Bukkit.getServer().broadcastMessage("one!");
}
此外,您可能没有注册事件。在主文件(扩展JavaPlugin的文件)中,确保在onEnable()中有此文件:
因此,您的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!");
}
}
@Override
public void onEnable(){
this.getServer().getPluginManager().registerEvents(new SignBuyEvent(), this);
//other things that you have in your onEnable here
}
而Main
类中的onEnable()
方法应该如下所示:
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!");
}
}
@Override
public void onEnable(){
this.getServer().getPluginManager().registerEvents(new SignBuyEvent(), this);
//other things that you have in your onEnable here
}
我想指定它在控制台中不显示任何内容。就好像他们根本没有被使用。你在哪里注册你的听众?你知道吗,我觉得自己真的很愚蠢,哈哈。当我做这一切的时候就像是凌晨5点。谢谢你解决了我的这个小疏忽。这确实解决了我的问题。