Kłaniają się podstawy. Pola - "zmienne" składowe deklarowane w ciele funkcji, są widoczne tylko wewnątrz niej, a nie po za nią.
Stąd inna metoda- nie ma dostępu zarówno do tego pola, jak i nie ma do niego zasięgu/widoczności...
jest kilka opcji na rozwiązanie tego pytanie jak wygląda struktura kodu , można deklaracje Player przenieść do " pola" - czyli zmiennej należącej do klasy, a jej INICJALIZACJE zastosować np poprzez metodę onComand , następnie odwołać się już do tego pola w innych metodach.
class JakasKlasa {
private Player player;
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
// inicjalizacja zmiennej player !
// warto miec na uwadze, ze zmienna jest niestatyczna i moze byc null wiec to trzeba rozważyć
player = (Player) sender;
if (cmd.getName().equalsIgnoreCase("panelkar")){
if (args.length == 0 ){
sender.sendMessage(ChatColor.RED + "Podaj nick gracza");
return true;
}
@SuppressWarnings("deprecation")
Player target = Bukkit.getServer().getPlayer(args[0]);
if (target == null ) {
sender.sendMessage(ChatColor.RED + "Nie można znalesc gracza " + args[0] + " !");
return true;
}
createMenu(player);
}
return false;
}
@EventHandler
public void onInvClick(InventoryClickEvent event){
// teraz widze zmienna player
// tutaj mozesz stosowac player
player.zróbCoś();
if (event.getInventory().getName() != "Panel Kar"){ return;
}
if (event.getCurrentItem().getItemMeta().getDisplayName().contains("Ban Killaura")){
event.setCancelled(true);
target.kickPlayer("");
Bukkit.getServer().getPluginManager().callEvent(new EnforcerEvent(target, Type.KICK));
event.getWhoClicked().closeInventory();
}
}