我做了一个注册事件的插件,我想做一个注销事件的命令,我该怎么做,我已经搜索了2小时,却什么也没发现。 我想使/ Pvpeventon启动事件,使/ Pvpeventoff将其关闭 那就是我已经编写的代码: 打包me.leopa.R1.FFA;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class MainFFA extends JavaPlugin implements Listener{
@Override
public void onEnable() {
System.out.println("[INFO Leopa] Start");
super.onEnable();
}
@Override
public void onDisable() {
System.out.println("[INFO Leopa] Stop");
super.onDisable();
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(command.getName().equalsIgnoreCase("PVPEVENTon")) {
getServer().getPluginManager().registerEvents(this, this);
}
if(command.getName().equalsIgnoreCase("PVPEVENToff")) {
getServer().getPluginManager().
}
return super.onCommand(sender, command, label, args);
}
@EventHandler
public void onDeathPVPEVENT(PlayerDeathEvent pvpevent) {
Player p = pvpevent.getEntity();
p.sendMessage("HI");
}
}`
答案 0 :(得分:3)
代替注销事件,您应该简化事件并添加一个boolean
作为变量,当应禁用pvp时将其转换为false
,如果允许pvp则将其转换为true
:>
//Some Listener class
...
private YourPlugin plugin; //example
...
@EventHandler
public void playerDeath(PlayerDeathEvent event) {
if(plugin.isEventMode()) { //TODO when event mode is on }
}
插件类
...
public class YourPlugin extends JavaPlugin {
...
private boolean eventMode; //false per default
...
public boolean toggleEventMode() {
eventMode = !eventMode; //negation so if it is true it will be turned into false if it is false it will be turned to true
return eventMode;
}
public boolean isEventMode() {
return eventMode;
}
}
命令切换事件模式:
//is declared somewhere
boolean eventMode = plugin.toggleEventMode();
//true if eventMode is on false if not.
注意,您也可以使用setEventMode
方法。
您还可以使用unregisterAll
方法注销Listener
或Plugin
中的所有事件:
HandlerList.unregisterAll(this); //takes a listener or a plugin. In your case you got all stuff in one class it should still work.
检查以下方法: