Skocz do zawartości

yooniks

Użytkownik
  • Ilość zawartości

    987
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    13

Treść opublikowana przez yooniks

  1. ^ = ( wywala nulla bo dajesz nulla w parametrach = ( Start.main(null);
  2. no raczej nie =/ https://github.com/SocketByte/OpenSectors/releases - tu masz fajne sektorki
  3. wiem, slepy nie jestem: if(sender instanceof Player || sender.hasPermission("gamemode.cmd")) { szybka lekcja: || - lub && - i warunek sie wykona jezeli wykonujacy komende jest graczem LUB ma permisje (tutaj tez bedzie dzialala pewnie konsola) poprawnie powinno byc && zamiast || i byłoby git.
  4. zwracasz false, czyli informujesz ze cos poszlo nie tak, dostep do komendy ma KAZDY GRACZ nawet bez uprawnien, jedyne co poprawiłeś to dałeś string zamiast int
  5. może po prostu spróbuj: final Packet packet = new ClientPluginMessagePacket("MC|PrList", "jakisString".getBytes()); handler.sendPacket(packet); a drugiego argumentu nie bedziesz dostawał w postaci stringa tylko tablicy byte, czyli sprobuj cos w stylu: player.sendMessage(new String(event.getPacket().getByteArrays().getValue())); //nie wiem jakie tam sa metody
  6. tak jak wyżej, spamisz konsole, niepotrzebne logi, do tego zamiast 100 razy powtarzać tą samą metodę wystarczy wysłać raz, ogromny znak. private final char[] bigMessage = new char[7680]; Arrays.fill(chars, ' '); player.sendMessage(String.valueOf(bigMessage));
  7. yooniks

    ItemStack

    napisał, że ma błąd, a nie, że mu nie ustawia nazwy, no i to logiczne, że nie bedzie mial dostepu z non-static do static, jak by zrobił tak: static { im.setDisplayName(".."); } to by nie było błędu, błąd miał od razu w IDE
  8. yooniks

    ItemStack

    XD czemu ludzie zaczynacie od bukkita a nie javy? private final ItemStack[] kit_player = new ItemStack[] { new ItemStack(Material.DIAMOND_PICKAXE), new ItemStack(Material.WOOD) }; blad pewnie jest przez to ze z non-static chcesz miec dostep do static
  9. może być i dość fajny pomysł na plugin :d ja bym tu poprawił tylko kilka rzeczy: usermanager trzymasz jako obiekt w klasie głównej a w generatormanager już wszystko static, raz zwracasz optional, a potem i tak zwracasz null, używasz optional, ale streamów to już nie, za każdym wykopywaniem 'generatora' tworzysz nowy itemstack i dropisz go na ziemie, a wystarczy raz gdzieś to trzymać, a potem tylko pobierać raz używasz arraylisty implementacje listy), a tutaj: już trzymasz tylko interfejs kod już troche brzydki sie robi przez te optional itd. raz go używasz a raz nie, do tego masz kilka niepotrzebnych metod no i tak jak napisał ktoś wyżej, te generatory są trzymane w pamięci cały czas, do tego brak żadnego zapisu, w sumie to je niepotrzebnie trzymasz, bo po restarcie i tak sie usuną, a generatory które już były przed restartem przestaną działać, może wywal tą liste z generatorami i zrób to jakoś inaczej (bez zapisów itd, po prostu np. podczas kopania sprawdzaj blok pod wykopanym blokiem itd)? (no i jak juz masz package listener to wrzuc tam moze od razu listener z userami, a nie trzymasz pod package user) i tak jakos znajomy kod, chyba kogos z discorda xd
  10. ?? po pierwsze to czemu to jest statyczne, po drugie czemu nie uzyjesz od razu w konstruktorze usera,a po trzecie co to jest: ""+p.getName()+" po czwarte metoda to sie nazywa createHologram ale player to juz p =/ rownie dobrze mogles nazwac metode tez cH }; czemu tu jest średnik po piąte to on chce zrobić coś w stylu: i hologram ma być JEDEN dla WSZYSTKICH, a nie, że wszyscy widzą hologram na którym są statystyki innego gracza
  11. nie wiem co to 'implement' i nie wiem co innego moze zwracac boolean i miec nazwe oncommand i te same parametry co metoda w commandexecutorze
  12. kurde no nie rozumiem, kto was uczy dawać te paragrafy i return false w onCommand w commandexecutorze =/ 1. nie stworzyles zmiennej 'e', wiec nie mozesz do niej przypisac zadnej wartosci 2. uzyj streamow z javy 8 i dodaj graczy uzywajac .collect(Collectors.joining(",")) w streamach
  13. po pierwsze to nie dawaj gotowcow bo tak to nikt sie niczego nie nauczy, a po drugie masz tak samo zle kod. Zacznijmy od tego, że item zdefiniowany w zmiennej 's' może być nullem, np. jak gracz kliknie ppm 'niczym' - lub będzie to powietrze - a powietrze nie zawiera itemmety (z tego co wiem) Każdy item zawiera itemmete oprócz powietrza, sprawdzaj czy item w zmiennej jest nullem, jak tak to returnuj event (lub chyba w 1.12+ jest cos takiego jak event.hasItem()), sprawdzaj czy item zawiera itemmeta, jezeli nie to returnuj (s.hasItemMeta()), no i oczywiscie tez sprawdzaj czy ma nazwe, (s.getItemMeta().hasDisplayName()), do tego jak gracz kliknie w powietrze to nic sie nie dzieje i uzna to za jakiś błąd, sprawdzaj dodatkowo akcje RIGHT_CLICK_AIR.. kolejne: tworzysz itemy podczas eventu, bez zadnych warunkow itd. przed tworzeniem, zaloze sie ze wystarczy z kilkunastu botów poklikać troche ppm i pewnie troszke lagi będą =/, zdefiniuj to sobie najlepiej w jakims polu w tej klasie kolejne: if (s.getItemMeta().getDisplayName().equals("§dVoucher §8(§fVIP§8)")) nie uzywaj paragrafów, do tego po co takie porównywanie, wystarczy użyjesz metody ItemStack#isSimilar do tego nie wiem po co to castujesz: Bukkit.dispatchCommand((CommandSender)Bukkit.getConsoleSender(), "pex user " + p.getName() + " group set VIP"); to juz i tak jest commandsender, no i ja oczywiscie zamiast tych ifów to bym zrobił jakiś interfejs voucherhandler, i tam mial po prostu jakąś metodę a w klasie voucherviphandler itd bym po prostu implementowal tą metodę i wrzucil to co jest w ifach, no ale to juz jak kto woli no i na koniec: public void Voucher(PlayerInteractEvent e) { brak adnotacji EventHandler nad metodą, do tego metody nazywamy z małej litery, już nie mówiąc o tym, że ta nazwa nie ma sensu (w sumie to event sie wykonuje wiec adnotacja pewnie jest, ale jej nie pokazałeś)
  14. to użyj sobie hologramapi, tam mozesz wyswietlac dany tekst dla tylko jednego gracza lub jest cos tam w stylu replace, i mozesz sobie tam walnac tam zmienna itd bo api holographicdisplays to takie plytkie
  15. xd, nie, to juz jak kto woli, klamra jest? jest tak jest jak sie nie potrafi czytac stacktrace i jak cos wyskoczy o 17 linijka, uj ze to tylko pokazuje source do bledu (czyli w tym przypadku metode, a ona jest w 17 lini, wiec na nią ci wskazuje, a dalej ci pisze co jest dokladnie zle, ale przeciez ty wiesz lepiej i nie wkleisz stacktrace) błąd jest zapewne tutaj: porównujesz string z integerem, to dwa różne typy, popraw na "0" z 0 do tego nie uzywaj paragrafow bo pozniej masz syf w kodzie jak to przenosisz itd =/ i nie rozumiem po co wszyscy robią sprawdzanie czy liczba argumentow jest równa 1 lub 2, przecież może być równa 3, i co? wtedy już wysyłasz poprawne użycie, a przecież ma jeden/dwa wymagane argumenty podane.. nazwy parameterów z małej litery, i najlepiej pełnymi nazwami, to tak jakby ktoś do ciebie krzyczał (przyjmijmy, że masz na imie Mateusz i koledzy na ciebie mówią M) ty wiesz o co chodzi, ale już ktoś kto cie nie zna - nie wie o co chodzi, tak samo masz z kodem, ty wiesz o co chodzi, ale ktoś kto będzie to w przeszłości edytował lub czytał nie będzie wiedział (czepiam sie trochę bo widać, że main, ale tak samo masz z resztą) do tego side-effects: wiadomo, tak jest wygodniej, ale powinienes to robić gdzieś indziej, np. w głownej klasie podczas gdy rejestrujesz wszystko, a nie podczas tworzenia instancji tej klasy, bo skąd ktoś ma wiedzieć co tam robisz, to ma tworzyć obiekt, a nie go od razu wszędzie rejestrować itd =/
  16. z tego co przeczytalem na stronie z tym pluginem to używa on placeholderapi, więc pewnie wystarczy, że zrobisz sobie hooka do tego api ze swoimi zmiennymi i tyle :d
  17. no ale te pierwsze, bo zakladam ze 1, 2, 7 to jest id itemu, a mozesz uzyc po prostu material, a w drugim mozesz sobie zostawic liczbe, w sumie to nie powinno walic bledu, sprobuj dać tam " zamiast ' i zobacz czy dalej nie bedzie dzialac, moze po prostu nie odczytuje tego jako string tylko jako dwie liczby, no ale w sumie nie powinno byc problemu =/ nie pobieraj instancji caly czas tylko dostarcz ją np. w parametrze i rób sekcje tak jak ci napisalem (ten drugi lepszy)
  18. zmien nazwe get na cos innego i zrób to w "something" a nie 'something' a najlepiej daj tam jakis tekst, np. zamiast 1 to stone i zamiast tak: mozesz robic tak: final ConfigurationSection entities = this.getConfig().getConfigurationSection("entities"); for (String id : entities.getKeys(false)) { final String name = entities.getConfigurationSection(id).getString("name"); ... } lub od razu zrobic sekcje entity a w niej bedzie name, action itd
  19. daj logi i plik plugin.yml z twojego pluginu
  20. zakładam, że dlatego, bo robisz to w pętli i masz jakąś dziwną metodę giveItem do ustawiania amount itd.
  21. autoin nie jest już wspierane, używaj fastlogin, i fastlogin używa tego samego api co każdy plugin, tylko używa tego mądrze no ale tutaj masz też ciekawe rzeczy: https://github.com/OtekPlay/HasPaidMojang, https://github.com/MrGregorix/SimpleAutoLogin - tutaj też ciekawie wyglądają te requesty itd. a nie tak jak w każdym pluginie na logowanie w playerjoinevent od nowa sprawdzanie itd.
  22. .. zrob sobie liste z itemami ew. mapke integer/double, itemstack lub obiekt w ktorym trzymasz szanse, item i wiadomosc + rób foreach i sprawdzaj szanse i tyle. kod skrócony kilka razy i łatwiej wszystko czytać, szukać błędów.
  23. java decompiler to nie jd-gui Nie potrafisz wyszukać w google api mojangu, a bierzesz sie za logowanie premium? https://api.mojang.com/users/profiles/minecraft/yooniks_tendev - zwraca coś - gracz jest premium - nic nie zwraca - gracz nie jest premium no i tutaj: https://github.com/SparklingComet/java-mojang-api/blob/master/src/main/java/org/shanerx/mojang/Mojang.java masz nawet dużo funkcji z api użytych ale pamiętaj http://wiki.vg/Mojang_API#Notes - możesz wysłać maksymalnie 600 zapytań na 10 minut, musisz dobrze wykonywać te zapytania, i do tego dobrze obsługiwać wyjątek.
  24. To kamilkime uczył javy? Uczył pisania pluginów pod minecraft - ale to poradnik dla kogoś kto już ogarnia jave na dość dobrym poziomie, bo ostatnio widziałem komentarze jak mu pisali, że nie tłumaczy czemu ma tak klamry ustawione lub co to true itd.. Na początek darmowe kursy javy z różnych stron, rózne ciekawostki itd. też ci sie przydadzą. javastart.pl, kobietydokodu.pl + https://docs.oracle.com/javase/tutorial/
  25. na początek: polecam ci sprawdzać czy event został przerwany, jeżeli tak to piszesz wysyłasz playerowi wiadomość, że nie może tutaj postawić case'a, a gdy nie bedzie przerwany to po prostu robisz e.getBlock().setType(Material.AIR) - i już nie musisz sie bawić w usuwanie tego itemu z inventory gracza. Pierw pobierasz item w rece gracza (przy zmiennej im), dopiero potem sprawdzasz czy item ,!= null, do tego nie sprawdzasz czy Meta itemu zawiera nazwe i lore tylko od razu ją sprawdzasz, no i do tego zamiast sobie gdzieś walnąć te 'wiadomości itd.' do configu to robisz to od razu w kodzie i do tego używasz paragrafów.. No i tak samo z dropieniem itemów, zamiast zrobić sobie jakiś obiekt CaseDrop i tam trzymać różne szanse na ten przedmiot i od razu możesz zrobić pętle z tymi casedrop, sprawdzić czy szansa sie sprawdza, jeżeli tak to dropisz itemy i wysyłasz wiadomość, no ale przecież java to tak trudny język.. zróbmy wszystko static i bez żadnej konfiguracji ja tu nie widze żadnych emeraldów, może daj nam kod klasy "Stacki"?
×
×
  • Dodaj nową pozycję...