Skocz do zawartości

yooniks

Użytkownik
  • Zawartość

    926
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    13

Ostatnia wygrana yooniks w dniu 20 września

Użytkownicy przyznają yooniks punkty reputacji!

O yooniks

  • Tytuł
    Znany

Informacje

  • Płeć
    Nie podano
  • Hobby
    just someone who likes java
  • Nick w MC
    phasmatos_

Metody kontaktu

  • Discord
    yooniks#2411

Ostatnie wizyty

4 971 wyświetleń profilu
  1. Co ty wgl napisałeś xD? Na co ty teraz odpisałeś? Może w niedzielę będę miał czas to się pobawie
  2. Napisałem że potestuje, ale nie napisalem kiedy - jak na razie to realizuje pełno zleceń dla polskich jak i zagranicznych klientów, więc każdy wolny czas (po szkole itp) przeznaczam na coś ciekawszego niż testowanie twojego serwera. Ten serwer nie osiąga nawet 10 graczy, u mnie za 10zl serwery 100+ osób miały poważne problemy z crasherkami a stoją stabilnie, no a cena się różni, twoja to jakaś kosmiczna
  3. yooniks

    Programista na zlecenie!

    Myślę, że to jak pomagam innym na tym forum też wpływa na to jak postrzegają mnie inni użytkownicy i widać, że znam się na rzeczy Co innego było by jakbym to ja prosił tutaj co chwile o pomoc. Jeżeli już tak mielibyśmy podchodzić - to każdy kto tutaj negatywnie skomentował mój temat nic u mnie nie zamawiał (a jedynie kupił gotową rzecz, zrobioną dawno - no ale to już inny "temat", ponieważ bardziej chodziło o utratę kontaktu) - albo po prostu mają ze mną złe wspomnienia - np. lagowanie im serwera itp. Każdy może się wypowiedzieć
  4. Antycrasher za 250zl/msc? XD Trochę śmieszne się to wydaje, i to tylko na 1.8, a co do botow - masz świadomość tego że wystarczy kilka tysięcy połączeń na sekundke i taki antibot padnie? Może podałbys nazwę serwera z takim twoim anty crashem? Mój kosztuje 12zl (a używa go 300+ serwerow) i to na zawsze, wysoko się cenisz, chętnie bym to stestowal w przyszlosci
  5. yooniks

    Szukam wykonawcy pluginu

    Jestem w stanie coś takiego napisać (stronka prosta, ty będziesz musiał ogarnąć sobie jakiś fajny styl (tzn. kolorki, lepsze położenie przyciskow itp) możesz napisać pv.
  6. Załaduj konfiguracje a potem zapisz ja w pliku.
  7. final File languages = new File (plugin.getDataFolder(), "languages"); languages.mkdir(); zrób zamiast twojego lang1
  8. Nie polecam na większe serwery @edit mam juz troche czasu wiec sprobuje ci pomóc "udoskonalić" troche ten plugin Dodaj wsparcie dla innych wersji - nie wiem jak to zrobisz - albo refleksje albo dla każdej wersji rob oddzielnie implementacje z nms. (tzn. interfejs pingchecker i np. pingchecker_1_8_r3 implementacja z uzyciem nms od 1.8.8) Jezeli chodzi o kod (raczej ten "slabo napisany") public static Main inst; public static Main getInstance() { if (inst == null) { return new Main(); } return inst; } public void onEnable(){ inst=this; Szkoda ze nie wiesz jak to dziala =( Gdy instancja jest nullem to tworzysz nawet tysiące takich obiektów (jak tysiac razy zostanie wywolana metoda getinstance() przed wywolaniem metody onEnable()) zamiast zwracac niepotrzebnie nowy obiekt zrob return inst = new Main() lub od razu zrob cos w stylu getPlugin(Main.class) bo przeciez jest juz taka metoda w JavaPlugin. new Task().runTaskTimerAsynchronously(this, 1L, 1L); No i po co puszczac takiego taska co 1 ticka? Skoro mozna co kilka sekund Czemu zapisujesz config w onEnable? Klasa "Ping" public Ping(final Main plugin){ this.plugin = plugin; this.plugin.getCommand("ping").setExecutor(this); } Czemu rejestrujesz komende w konstruktorze? Taska mogles puscic juz normalnie, ale komendy tak samo rejestrowac nie mozesz .. =( to sie nazywa side-effects (zla praktyka, nie rob tak) UserManager.setPingPowiadomienia(p.getName(), 1); Czemu usermanager i set jest po angielsku a pingpowiadomienia juz po polsku? To jakas nowa moda na mieszanie angielskiego z polskim, czy po prostu nie wiedziales jak sa powiadomienia po angielsku? =( args.length == 0 || (args.length > 1) Od czego to jest? UserManager.setPingPowiadomienia(p.getName(), 0); Czemu zamiast uzywac booleana - true/false to jest 1 albo 0? Od tego sa booleany =( jak zwracasz false w onCommand to informujesz serwer ze komenda nie wykonala sie prawidlowo Paczek nie nazywa sie w liczbie mnogiej i nie rob takich skrótow =( zamiast cmds to command, zamiast utils to util. Powiedzmy ze chce zedytowac twoj plugin - widze ze w mainie jest klasa Ping - ale g*wno jest napisane co to jest. Czy to komenda czy to zwykly obiekt =/ Masz paczkę tasks a w niej klasa Task xD to albo robisz tą paczke aby tam przechowywac rozne taski albo jeden ktory nic konkretnie nie mowi o tej klasie - po prostu Task. I skąd ktoś ma wiedzieć od czego ta klasa jest? Np. z nazwy "PingCheckerTask" wiadomo od czego to jest - ping checker task. Sprawdza ping i do tego jest taskiem. Do tego metode getPing trzymasz w dwóch klasach (duplicated code) Czemu paczka util zawiera klase Api? I wgl czemu to sie nazywa api? Api do mogloby byc gdybys cos dostarczal ze swojego pluginu dla innych pluginow.. Np ile razy gracz mial zbyt duzy ping lub cos w tym stylu. Do tego to powinien byc obiekt a nie klasa statyczna z wysylaniem title/subtitle. Jak juz to moglbys to dac gdzies indziej lub od razu nazwac TitleUtil lub coś w tym stylu (ja na twoim miejscu tez bym zrobil interfejs titlesender i implementacja dla 1.8.8 itp) Wiecej czytac mi sie nie chce, nie mam czasu xd
  9. yooniks

    Lista w configu

    Masz na czerwono messages - bo tam są dwie różne zmienne (tak samo nazwane), to byl tylko przyklad kodu. Config masz na czerwono bo wgl nie stworzyles takiej zmiennej, to mialobyc odwolanie do FileConfiguration z glownej klasy tak jak napisales, myslalem ze ogarniesz. Chyba jeszcze troche musisz podstaw sie pouczyc lub poogladaj jakies gotowe pluginy publiczne z dobrym kodem. public class TestCommand implements CommandExecutor { private final FileConfiguration config; public TestCommand(FileConfiguration config) { this.config = config; } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage("this command is executable only by player"); return true; } Player p = (Player) sender; //napisalem ze to ustawia w configu "messages" na jakies wiadomosci, nw po co to tu dales /*final List<String> messages = Arrays.asList("first message", "second message"); config.set("messages", messages);*/ final List<String> messages = config.getStringList("messages"); final String message = String.join("\n", messages); p.sendMessage(message); } } a w glownej klasie zrob po prostu cos w stylu public class TestPlugin extends JavaPlugin { @Override public void onEnable() { this.saveDefaultConfig(); final TestCommand testCommand = new TestCommand(this.getConfig()); this.getCommand("test").setExecutor(testCommand); } } config.yml ma wygladac tak: messages: - "first message" - "second message" a plugin.yml: #jakies inne typu main, author, version itp commands: test: aliases: [testcommand, testalias] description: "Test command"
  10. yooniks

    Lista w configu

    Jeżeli chodzi o zapisywanie listy do configu (i jej tworzenie), to po prostu tworzysz prosty key i value. //zapisywanie listy do configu final List<String> messages = Arrays.asList("first message", "second message"); config.set("messages", messages); //wysylanie listy do gracza //Player#sendMessage przyjmuje jako parametry String, czyli Liste z configu musisz sprowadzic do stringa, najlatwiej bedzie //przy uzyciu String.join final List<String> messages = config.getStringList("messages"); //pierwszy parametr to "delimiter" czyli w krotkim tlumaczeniu taki 'oddzielacz' wiadomosci, //zamiast \n (czyli nowej lini) mozesz uzyc np. przecinka final String message = String.join("\n", messages); //do gracza zostanie wyslana nastepujaca wiadomosc: /* first message second message */ player.sendMessage(message); zmienna config to po prostu FileConfiguration pobrane np. z twojej klasy glownej rozszerzoną o JavaPlugin - plugin.getConfig()
  11. yooniks

    MYSQL

    Skoro lobby jest pierwszym serwerem na który gracz będzie łączony to mysle ze bez problemu możesz prefix przekazać poprzez plugin messaging channel no ale mysql z tabela oddzielna to też bardzo dobry pomysł. No i ja osobiście wybralbym te drugie rozwiazanie jeżeli mysql to nie problem.
  12. Chodzi ci o jedną linijke czy co? Wywolanie komendy to jedna linijka.
  13. to po prostu zamień wykonywanie komendy nick na skriptowy kick? czyli kick player
  14. Wygląda interesująco, jeżeli jest dalej aktualne to napisałem prywatną wiadomość.
  15. no takie sredniawe ;/ cała klasa dateutil nie jest twoja tylko z myhardow, tak trudno było zrobić fajny system przy uzyciu uuid, long? zamiast uuid jest string, nie można dać graczom kilku cooldownow, do tego klasa helper to ma być util a nie coś co trzyma dane o graczach;/ Niepotrzebne logi do konsoli, wystarczyłoby rzucac jakiś wyjatek (exception) a jakby ktoś chciał logować to do konsoli to lapal by wyjatek i sam to printowal, usuwasz cooldown w metodzie iscooldown, why?
×