• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java problem ze zmienną

0 głosów
96 wizyt
pytanie zadane 25 czerwca 2018 w Java przez Lampards Początkujący (320 p.)
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
		
	Player 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){
		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();

Witam serdecznie , Proszę o pomoc otuż

w public boolean onCommand mam zmienna Player target niestety metoda public void onInvClick tej nie widzi jak zrobić aby metoda public void onInvClick widziało tą zmienną?

2 odpowiedzi

+1 głos
odpowiedź 26 czerwca 2018 przez Wiciorny Maniak (66,480 p.)
wybrane 26 czerwca 2018 przez Lampards
 
Najlepsza

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();

}

}

 

0 głosów
odpowiedź 25 czerwca 2018 przez Rediee216 Nowicjusz (160 p.)

Zmienna ta, jest pobierana z (prawdopodobnie) statycznego innego źródła, nie powinno być żadnych błędów jeśli zdefiniujesz ją na nowo w drugiej metodzie.

@EventHandler
    public void onInvClick(InventoryClickEvent event){
    Player target = Bukkit.getServer().getPlayer(args[0]);
    if (event.getInventory().getName() != "Panel Kar"){ return; }
    ...

ten początek podmień z twoim poprzednim i daj znać czy działa!

komentarz 26 czerwca 2018 przez Wiciorny Maniak (66,480 p.)

@Rediee216, bzdura ... totalna 

Podobne pytania

0 głosów
1 odpowiedź 63 wizyt
pytanie zadane 25 czerwca 2018 w Java przez Lampards Początkujący (320 p.)
0 głosów
2 odpowiedzi 221 wizyt
pytanie zadane 6 marca w Java przez krystian1997 Użytkownik (880 p.)
0 głosów
2 odpowiedzi 234 wizyt
pytanie zadane 26 listopada 2017 w Java przez Szczurek431 Początkujący (330 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

67,017 zapytań

113,930 odpowiedzi

241,411 komentarzy

46,960 pasjonatów

Przeglądających: 151
Pasjonatów: 2 Gości: 149

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...