-
Ilość zawartości
284 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
5
Treść opublikowana przez GotoFinal
-
w plugin.yml musisz podać nazwę głównej klasy, a ty podałeś tylko nazwę paczki, więc musisz dodać jeszcze klase. moje.package.GłównaKlasa a tak to dalej nie poprawiłeś głównej klasy tak jak pisałem w pierwszym poście...
-
nie, ty pytasz się o gotowe rozwiązanie teraz, zamiast samemu poszukać, zobaczyć przykłady itd. To różnica, pokaż swoja zaangażowanie to i my pomożemy
-
jak pytasz o takie rzeczy to ewidentnie znak że musisz poczytać o podstawach samego języka, bo nie możesz tu pytać o każdą głupotę, to podstawowa umiejętność - umieć szukać takich rzeczy. Tak trudno w google dać java boolean czy coś? A błąd masz chyba oczywisty, nie ma takiego pola/metody czy co tam robiles
-
To przy każdej żarówce jest wyjaśnienie, jak nie rozumiesz to googlowac i jak nie znajdziesz nic co rozumiesz to piszesz na forum najlepiej podając co znalazłeś sam by nikt ci tego napisał ponownie A tak to zacznij od jakiś poradników samej Javy, bo ewidentnie nie ogarniasz nawet składni i podstawowych zasad. Tak samo nie znasz podstaw bukkita, że klasa z listenerami musi implementować interfejs Listener, I że metody co są listenerami muszą mieć adnotacje event handler. A tak to najlepiej mieć w tej klasie finalną zmienna z instancja głównej klasy przekazywaną przez konstruktor, tylko to pewnie musisz doczytać o samej javie by wiedzieć jak tego użyć.
-
package pl.kacper.beChat; package tylko z małych I zdecyduj się czy używasz tabów czy spacji... formatuj kod, każde IDE ma taką opcję public boolean onCommand(CommandSender sender, Command cmd, String arg, String[] args){ // Wszystkie prawa zastrzeżone if(cmd.getName().equalsIgnoreCase("chat")){ // Wszystkie prawa zastrzeżone co to ma znaczyć te komentarze xD if (arg == "on"); średnik po ifie więc zakończyłeś ifa, a else niżej jest do linijki z sprawdzeniem nazwy komendy. Podobnie z off. Jak byś formatował kod to by było widać, a każde IDE ma od tego nawet skrót klawiszowy. (nie znam do eclipse a pewnie używasz) Do tego porównywanie stringów == jest zazwyczaj wynikiem błędu, bo nie porównujesz czy są takie same, tylko czy to ten sam string, a to różnica. powinno być equals. Nie nazywaj zmiennych, a tyb bardziej getterów/setterów jednoliterkowcami, bo to nic nie mówi. Do tego po co są ci tam te zmienne? i dlatego ten chat to zmienna typu String a nie boolean? Ani trochę nie rozumiem po co ci tam zmienna "p" z graczem, szczególnie że może być tylko jedna na cały plugin. I po co te wiadomości w onEnable/Disable, bukkit i tak wysyla takie. Więc ogólnie wszystko bez sensu
-
ale daj cały error...
-
to twój plugin? wklej kod tego ETools, bo tam jest gdzieś błąd
-
ale że czekasz aż ktoś to za ciebie całe napisze? to nie tak działa...
-
Po co tak porównujesz booleany if (AddonsPlugin.chatStatus == false) wystarczy: if (!AddonsPlugin.chatStatus) tak samo dla == true bez negacji czyli wykrzyknika. A tak to w listenerze nie masz adnotacji @EventHandler nad metodą
-
najlepiej w nbt, ale to już trzeba grzebać w NMS lub bibliotekami, więc możesz klasycznie yamlem, bukkit pozwala zmienić YamlConfiguration na stringa. Lub tego co dostałeś w poprzednim temacie użyj: Tylko najlepiej zapisywać bez kodowania base64 do bazy jako BLOB czyli czyste bajty byte[]. (pod spodem ten bukkitowy stream tak na prawdę daje właśne do yamla, ale zwraca jako bajty a nie tekst)
-
... ale po co, to nie ma sensu, zwyczajnie nie zapisuj itemów w takim dziwnym formacie o.O, szczególnie że to wynik .toString chyba, a to się może zmienić, do tego .toString nie musi zawierać wszystkich danych itemku
-
EntityDamageByEntityEvent i obrażenia z łuku ?
GotoFinal odpowiedział(a) na Arczi98 pytanie w Pytania i problemy
to nie twórz takiego pluginu z bazą danych, bo nawet nie chcesz się tego nauczyć tylko zostawasz jak jest pomimo ze to nie będzie działać. -
EntityDamageByEntityEvent i obrażenia z łuku ?
GotoFinal odpowiedział(a) na Arczi98 pytanie w Pytania i problemy
no ale wtedy je pobierasz tylko raz i to podczas ładowania serwera, więc nikogo jeszcze wtedy nie ma, no i możesz wtedy pobrać wszystkie na raz jednym zapytaniem. -
EntityDamageByEntityEvent i obrażenia z łuku ?
GotoFinal odpowiedział(a) na Arczi98 pytanie w Pytania i problemy
nie, nie musisz (a wręcz nie możesz bo każdy taki event będzie ci zatrzymywał serwer na kilka ms, więc 10-20 graczy i będziesz miał 0tps), przecież możesz te dane trzymać w pamięci.... I czemu nie dasz rady zablokować potków wtedy? toż to się da, tylko trzeba każde te entity z listy sprawdzić i blokować dla wybranych tamtą metodą co podałem. Ale kod jest wtedy nieczytelny z takimi skrótami, pobierz sobie porządne ide polecam naukę Intellij Samo podpowiada takie nazwy i ogólnie pisząc tę linijkę musiłem tylko kliknąć p.N <enter> .v <enter> wybrać (wtedy podpowiada .var i robi z tego zmienną w kodzie, więc całego początku "String playerName" nie muszę pisać) nazwę strzałką i enter, mniej wciśnięć niż w takim eclipse, a kod lepiej opisany -
EntityDamageByEntityEvent i obrażenia z łuku ?
GotoFinal odpowiedział(a) na Arczi98 pytanie w Pytania i problemy
nie nazywaj zmiennych takimi skrótowcami, od tego masz IDE by mało pisać i ci te nazwy podpowiadało, a tylko utrudnia czytanie jak nagle widzisz uzycie jakis pn pg ec dt er itd. A tak... nie używaj bazy danych w eventach, przecież na czas połączenie zatrzymasz cały serwer! a co dopiero jak robisz kilka zapytań zamiast jednego... A co do samego błędu... wina peirwszego ifa, .getEntity w potion splash event też zwraca potka. Potki mogą uderzyć w wielu graczy lub moby, więc jest specjalna metoda co zwraca ich listę: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/entity/PotionSplashEvent.html#getAffectedEntities-- zauważ że jest też metoda https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/entity/PotionSplashEvent.html#setIntensity-org.bukkit.entity.LivingEntity-double- więc możesz dla każdego wybranego entity ustawić jak mocni oberwał. -
EntityDamageByEntityEvent i obrażenia z łuku ?
GotoFinal odpowiedział(a) na Arczi98 pytanie w Pytania i problemy
ale to może być wszystko co implementuje ten interfejs, np blok - dispenser, a to nie jest entity... do tego plugin może np strzelać strzałami z cegoś własnego - też może od tego wykonać ten event, więc takie castowanie jest zwyczajnie błędne i będzie crashować. -
najlepszy i najprostszy wybierz jedno Najprostszy to właśnie w yaml z domyślną wbudowaną serializacją, można też wtedy to próbować przerobić na jsona jak ktoś chce/potrzebuje. A tak to wszystko zależy co się robi, do zapisu w bazie lub przesyłania np redisem znacznie wygodniej zapisać jaki czyste bajty z NBT, bo mniej danych, ale niestety bukkit nie udostępnia żadnego api od tego. No ale plugin na magazyny to raczej zapisujesz array itemów do pliku yml i tyle, i niech sobie bukkit sam serializuje do yamla.
-
EntityDamageByEntityEvent i obrażenia z łuku ?
GotoFinal odpowiedział(a) na Arczi98 pytanie w Pytania i problemy
nie wklejaj gotowego kodu i do tego z błędami... bo to nie ma sensu, nie dośc że się niczego nie nauczy, to jeszcze będzie miał z.. popsuty i niedziałający kod. attackerEntity = (Entity) ((Projectile) attackerEntity).getShooter(); Skąd wiesz że to Entity...? -
EntityDamageByEntityEvent i obrażenia z łuku ?
GotoFinal odpowiedział(a) na Arczi98 pytanie w Pytania i problemy
po co ci te puste else. A tak to strzała czy potka to też Entity, więc attacker w typ wypadku to np Strzała, lub bardziej abstrakcyjnie - Projectile - czyli dowolne taki obiekt-pocisk - w tym potka, o ile trafi gracza. I z takiego Projectile może pobrać kto go wystrzelił, za pomocą metody getShooter, tylko pamiętaj że to zwraca dopiero obiekt ProjectileSource, bo to nie musi być gracz, to moze być np dispenser, czy szkielet, więc musisz sprawdzić czy to jest instanceof Player Z potkami są osobne eventy, jak chyba PotionSplashEvent i takie tam inne, i wtedy też musisz pobrać potkę, kto ją rzucił, kto oberwać, zobaczyć jakie są efekty - bo mogą byc przecież pozytywne. I zdecydować jak to blokować, bo nie musisz anulować eventu, możesz tylko usunąć efekty negatywne dla tej samej drużyny, tak samo pozytywne dla przeciwnej jeśli chcesz. -
funkcja zazwyczaj robi to co ma napisane w nazwie
-
ja [ciach], czy ktoś na tym forum umie obsługiwać wyjątki? catch (Exception e) { e.printStackTrace(); } return false; co to ma być... API mojangu cię np zbanuje na chwilę i nawet się o tym nie dowiesz, bo nie obsługujesz wyjątku w żaden sensowny sposób, a gracz wtedy zawsze zostanie uznany za pirata - czyli w przypadku błędu ktoś może się włamać na inne konto... //Wulgaryzm @JPablo
-
No musisz wykonać autoryzacje z mojangiem, zgodnie z protokołem http://wiki.vg/Protocol Ale tylko dla graczy co mają nick premium - bo inaczej client non-premium się rozłączy. A tak to najwygodniej zrobić to pod bungee, tam w evencie od początku logowania masz zwyczajnie metodę do ustawienia czy gracz ma być autoryzowany, dla każdego connection można ustawić .setOnlineMode czy jakos tak
-
nie sprawdzasz. Tutaj sprawdzasz czy otworzone EQ to te prawidłowe, ale nie sprawdzasz czy to te kliknięte... Jest osobna metoda .getClickedInventory
-
bo nie sprawdzasz w jakie EQ klika gracz, mając otworzone GUI masz jednocześnie swoje EQ i te GUI, więc są dwa sloty o numerze 0.
-
Pytasz autora o kod, jak ci da, to masz, jak nie da, to znaczy że masz nie ruszać bo łamiesz prawo ¯\_(ツ)_/¯
- 2 odpowiedzi
-
- rozkodowanie
- plugin
-
(i 1 więcej)
Oznaczone tagami:
