Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Dziwny problem z pluginem


Asesis

Rekomendowane odpowiedzi

Opublikowano

Witam, mam pewien dziwny błąd w pluginie i nie mam pojęcia dlaczego jest przez konsolę uważany jako błąd.. 

Player p = (Player) sender;

Kiedy taka linijka jest w kodzie, nie mogę wywołać żadnej komendy z konsoli. Wziąłem pod uwagę, że kiedy komenda jest wywoływana przez konsolę nie można użyć p.sendMessage(); i tego nie użyłem zamiast p jest sender. Nawet w pluginie który ma tylko jedną komendę /hello, nawet pomimo tego, ten Player p nie jest w ogóle używany, konsola wyrzuca błąd. 

Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.command
.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player

 

Przykładowo ten kod działa normalnie:

if(label.equalsIgnoreCase("hello")){
			sender.sendMessage("Hello console");
		}

A ten już nie:

if(label.equalsIgnoreCase("hello")){
			Player p = (Player)sender;
			sender.sendMessage("Hello console");
		}

 

Opublikowano
1 godzinę temu, Asesis napisał:

Witam, mam pewien dziwny błąd w pluginie i nie mam pojęcia dlaczego jest przez konsolę uważany jako błąd.. 


Player p = (Player) sender;

Kiedy taka linijka jest w kodzie, nie mogę wywołać żadnej komendy z konsoli. Wziąłem pod uwagę, że kiedy komenda jest wywoływana przez konsolę nie można użyć p.sendMessage(); i tego nie użyłem zamiast p jest sender. Nawet w pluginie który ma tylko jedną komendę /hello, nawet pomimo tego, ten Player p nie jest w ogóle używany, konsola wyrzuca błąd. 


Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.command
.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player

 

Przykładowo ten kod działa normalnie:


if(label.equalsIgnoreCase("hello")){
			sender.sendMessage("Hello console");
		}

A ten już nie:


if(label.equalsIgnoreCase("hello")){
			Player p = (Player)sender;
			sender.sendMessage("Hello console");
		}

 

public boolean onCommand(CommandSender sender, Command command, String label, String args) {
	if(command.getName().equalsIgnoreCase("komenda")) {
        if(!(sender instanceof Player)) {
            //jesli komenda zostala wykonana przez console
        } 

        Player p = (Player) sender;
        //tutaj kod gdzie gracz to gracz z serwera
	}
}

Nie działa dlatego że tworzysz playera p, a wysyłasz wiadomość konsoli.

Opublikowano

@up nie pierdol durnot :/

https://hub.spigotmc.org/javadocs/spigot/org/bukkit/command/CommandSender.html#sendMessage-java.lang.String-

Player p = (Player)sender;

to nie ma nic do rzeczy :

Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.command
.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player

pisze jak byk co za problem probojesz obiekt ktory nie jest Player castowac na player

a dokladniej klase

org.bukkit.craftbukkit.v1_12_R1.command
.ColouredConsoleSender

chcesz sobie magicznie zrobic na

org.bukkit.entity.Player
Opublikowano

@MAROSKiNG

Ale, wiadomość wysyłam do sendera nie patrząc na to czy jest to gracz czy konsola, wiadomość powinna się wysłać i tu i tu. A to że sobie tworzę obiekt p według mnie nie powinno na nic mieć wpływu, szczególnie, że NIGDZIE tego Playera p nie używam..

 

@damianq20

W takim razie czemu błąd wyrzuca dopiero przy uruchomieniu komendy, skoro ta moja niby magiczna zamiana nie jest nigdzie użyta.  Powinno wyrzucać przy włączaniu pluginu chyba.

Opublikowano
6 minut temu, Asesis napisał:

@damianq20

W takim razie czemu błąd wyrzuca dopiero przy uruchomieniu komendy, skoro ta moja niby magiczna zamiana nie jest nigdzie użyta.  Powinno wyrzucać przy włączaniu pluginu chyba.

Wyrzuca dopiero przy wywołaniu tej linijki, czyli przy wpisaniu komendy w tym przypadku, o ile dobrze zrozumiałem co tam robisz.

Opublikowano

a kiedy ma ci ja wykonac :? raczej nigdzie potem nie uzywasz tej klasy a zakladam ze nie .

1. podales 4 linijki kodu

2. podalem ci DOKLADNY powod wypier&& bledu (poza faktem ze Bardzo dokladnie wywalalo ci w konsoli gdzie oraz czemu)

3. nie znasz jeb^^^ podstaw Java

a teraz napisze jeszcze raz czemu wywala blad na przykladzie

masz interfejs Sraj oraz 3 klasy

class Player implements Sraj

class SyperProEloProgramista extends Player

class Robot

i tylko 2 klasy mozesz sobie rzutowac na Sraj przy rzutowaniu Robot na Sraj wywali ci błąd , bo klasa robot nie ma nic wspolnego ze sraj i tyle w temacie

Caused by: java.lang.ClassCastException: super.gowniane.core.Robot cannot be cast to super.gowniane.Sraj

 

Opublikowano

@damianq20

Zadaje normalne pytanie bo czegoś nie rozumiem to po kiego od razu obrażasz co? Cieszę się, że Ty za to jesteś super programistą, a raczej mnie to nie obchodzi. Oczekiwałem normalnego wyjaśnienia, ale widzę że się nie da.. no cóż.

Opublikowano

toc ci napisalem normalnie

4 godziny temu, damianq20 napisał:

@up nie pierdol durnot :/

https://hub.spigotmc.org/javadocs/spigot/org/bukkit/command/CommandSender.html#sendMessage-java.lang.String-


Player p = (Player)sender;

to nie ma nic do rzeczy :


Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.command
.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player

pisze jak byk co za problem probojesz obiekt ktory nie jest Player castowac na player

a dokladniej klase


org.bukkit.craftbukkit.v1_12_R1.command
.ColouredConsoleSender

chcesz sobie magicznie zrobic na


org.bukkit.entity.Player

 

Opublikowano
11 godzin temu, Asesis napisał:

@damianq20

Zadaje normalne pytanie bo czegoś nie rozumiem to po kiego od razu obrażasz co? Cieszę się, że Ty za to jesteś super programistą, a raczej mnie to nie obchodzi. Oczekiwałem normalnego wyjaśnienia, ale widzę że się nie da.. no cóż.

daj cały kod to ci poprawie, bo damianq20 już dużo ci wyjaśnił, ale bez podstaw bedzie trudno.

16 godzin temu, MAROSKiNG napisał:

public boolean onCommand(CommandSender sender, Command command, String label, String args) {
	if(command.getName().equalsIgnoreCase("komenda")) {
        if(!(sender instanceof Player)) {
            //jesli komenda zostala wykonana przez console
        } 

        Player p = (Player) sender;
        //tutaj kod gdzie gracz to gracz z serwera
	}
}

Nie działa dlatego że tworzysz playera p, a wysyłasz wiadomość konsoli.

public boolean onCommand(CommandSender sender, Command command, String label, String args) {
	if(command.getName().equalsIgnoreCase("komenda")) {
        if(!(sender instanceof Player)) {
            //jesli komenda zostala wykonana przez console
        } 

        Player p = (Player) sender;
        //tutaj kod gdzie gracz to gracz z serwera
	}
}

i to pierwsze i to drugie sie wykona dla konsoli :)

wiec np. tutaj rzuci błąd:

17 godzin temu, Asesis napisał:

Witam, mam pewien dziwny błąd w pluginie i nie mam pojęcia dlaczego jest przez konsolę uważany jako błąd.. 


Player p = (Player) sender;

Kiedy taka linijka jest w kodzie, nie mogę wywołać żadnej komendy z konsoli. Wziąłem pod uwagę, że kiedy komenda jest wywoływana przez konsolę nie można użyć p.sendMessage(); i tego nie użyłem zamiast p jest sender. Nawet w pluginie który ma tylko jedną komendę /hello, nawet pomimo tego, ten Player p nie jest w ogóle używany, konsola wyrzuca błąd. 


Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.command
.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player

 

Przykładowo ten kod działa normalnie:


if(label.equalsIgnoreCase("hello")){
			sender.sendMessage("Hello console");
		}

A ten już nie:


if(label.equalsIgnoreCase("hello")){
			Player p = (Player)sender;
			sender.sendMessage("Hello console");
		}

 

dalbym ci przyklady itd. jak to wszystko dziala ale lece do szkoly :< 

 

Aktualnie interesuję się javą, powoli ogarniam java swing i awt, czasem bawię się HTML.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...