現在使用していPlayerCommandPreprocessEvent
ます。私は次のような構文を使用します:
@EventHandler(priority = EventPriority.HIGHEST)
public void PlayerCommandPreprocess(PlayerCommandPreprocessEvent event){
String cmd;
String args;
if(event.getMessage().indexOf(" ") == -1){
cmd = event.getMessage().substring(1);
args = "";
getLogger().info(String.format("%s used '%s'",event.getPlayer().getDisplayName(), cmd));
}else{
cmd = event.getMessage().substring(0, event.getMessage().indexOf(" ")).substring(1);
args = event.getMessage().substring(event.getMessage().indexOf(" ")+1);
getLogger().info(String.format("%s used '%s' with args '%s'",event.getPlayer().getDisplayName(), cmd, args));
}
switch(cmd){
case "serverinfo":
event.getPlayer().sendMessage("This server is running some sort of new plugin that is not finished yet.");
event.setCancelled(true);
break;
case "spawn":
event.getPlayer().sendMessage("So you wanted to teleport to spawn to save time, right?");
event.getPlayer().sendMessage("This will teach you, cheater!");
event.getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.POISON,1200,1));
event.setCancelled(true);
break;
default:
event.setCancelled(false);
break;
}
}
クラス内で別のメソッドを使用したいと思いますPlayerCommands
。これがサーバーで使用される唯一のプラグインになるため、すべてのコマンドをキャプチャし、それらが持っているかどうかを評価してPlayerCommands.cmd_<cmdname>()
呼び出します。
私はこれが経由で行うことが可能であることを知っていますjava.lang.reflect
が、今のところ私はそれをBukkitサーバーに実装する方法を知りません。