-
Ilość zawartości
987 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
13
Treść opublikowana przez yooniks
-
on place of dragon egg..?
-
to nie zaden plus =/ gdzie github =(
-
po co tu priorytety xd jak juz to ja bym chyba wolal dac na lowest zeby lepiej sprawdzalo czy event zostal juz zcancelowany, zeby kazdy inny listener w innych pluginach poszedl predzej bo moga cos zmieniac itd(chyba że to na odwrót było to uj) a tak to jak najbardziej to co napisal Ixidi, szczegolow takich jak logika w getterach itd. juz nie bede wymienial bo to chyba nie ma sensu ale jednego nie rozumiem xd - obiekt guild jest w utilsach, public void addMember(final String member) { String members = getInfo("members"); String members_list = getInfo("members_list"); MySQL mysql = PropertyGuilds.getInstance().getMySQL(); try { PreparedStatement ps = mysql.getConnection().prepareStatement( "UPDATE `guilds` SET `members`=?, `members_list`=? WHERE `tag`='" + this.tag + "'" ); ps.setInt(1, Integer.parseInt(members) + 1); ps.setString(2, members_list + ";" + member); ps.executeUpdate(); ps.close(); } catch (SQLException e) { e.printStackTrace(); } } public String getInfo(final String info) { MySQL mysql = PropertyGuilds.getInstance().getMySQL(); try { PreparedStatement checkStatement = mysql.getConnection().prepareStatement( "SELECT * FROM `guilds` WHERE tag=?" ); checkStatement.setString(1, this.tag); ResultSet result = checkStatement.executeQuery(); String has; if (result.next()) { String str = result.getString(info); if (result.wasNull()) has = null; else has = str; } else return null; checkStatement.close(); result.close(); return has; } catch (SQLException e) { e.printStackTrace(); } return null; } taki obiekt powinien byc budowany tylko raz, np. przy onenable, w ladowaniu wsyzstkich gildii (a np. gracz przy wejsciu, lub tez onenable), a ty za kazdym razem robisz tak: @EventHandler(priority = EventPriority.HIGH) public void playerDeath(final PlayerDeathEvent e) { if (e.getEntity().getKiller() != null) { ConfigUtils config = new ConfigUtils(ConfigMessageType.CONFIG); User user = new User(e.getEntity()); User killer = new User(e.getEntity().getKiller()); if (user.hasGuild()) { killer.updateStats("points", config.getInt("points.kill.player-with-guild")); user.updateStats("points", config.getInt("points.death.player-with-guild")); if (killer.hasGuild()) new Guild(killer.getGuild()).points(config.getInt("points.kill.to-guild")); new Guild(user.getGuild()).points(config.getInt("points.death.to-guild")); } no i do tego config tez budowany caly czas od nowa xd protected String tag, name, leader, members_list, alliances_list, location; zamiast np. member_list sprowadzac z bazy (ze stringa) do listy i pozniej mozesz nawet z tego wyciagnac wielkoscl isty, latwiej loopowac memberow itd. to ty za kazdym razem dodajesz po prostu do stringa ":" + nick, jak dla mnie to bardzo duzo do zmiany. tymbardziej ze te akcje ktore musisz wykonac asynchronicznie - nie wiem jak toz robisz bo masz bardzo dziwnie i przy kazdym getterze wykonujesz nowe zapytanei do bazy zamiast pobierac obecne i tylko przy wylaczeniu pluginu zapisywac/updateowac - i to dopiero po sprawdzaniu chyba 2-4 klas
-
tak, tylko zalezy co jeszcze chcesz robic
-
No lepiej zrobic jakis globalny task ktory bedzie zbieral wszystkich, sprawdzal ich ochrone itd. bo pozniej jak bedziesz chcial sprawdzic czy gracz ma ochrone, a jeszcze ten event sie nie wykonal to bedzie ze niby dalej ma ochronke, a jak ktos go uderzy to sie zdziwi. No ale ogolnie powinno to byc trzymane najlepiej w longu (system.currenttimemillis() + jakisczas), i potem tylko sprawdzasz czy ten time > System.currenttimemillis.., wiec taki tak niepotrzebny, chyba ze chcesz ich po prostu informowac o zmianie czasu
-
Tak jak w temacie, plugin (mam nadzieje) fixuje wiekszosc exploit nbt poprzez sprawdzanie kazdej listy, kazdego tagu - i ich wielkosci - zbyt duze wielkosci = kick github: https://github.com/yooniks/casual-exploitpatch (plik jar: _https://github.com/yooniks/casual-exploitpatch/releases/tag/1.0-SNAPSHOT) Można dodać jeszcze swój "checker" nbt do aktualnych w bardzo łatwy sposób, dorobić inny connectioncloser (defaultowy zamyka polaczenie poprzez nowego taska, bo w async nie moge tego zrobic) Fix pod arm-animation przydatny tylko (chyba) ponizej 1.11 (cos kolo tego) bo na wyzszych wersjach juz jest dawno timestamp pod armanimation. Tak samo z block-placem, jak bedzie walilo errory od klikania ppm to wylaczyc block-place w configu trzeba, bo pakiet nie zawiera itemstacka w wyzszych wersjach Mogłbym zamiast sprawdzania nbt po prostu walnąć tam zastepowanie nowego itemu innym, z usunietym nbt (tylko te same atrybuty, nazwa, lore itd) ale niektore serwery dodaja jakies potrzebnych rzeczy do nbt w itemach, wiec takie usuwanie nie mialoby troche sensu
-
Najdziwniejszy 'błąd' w BungeeTabListPlus
yooniks odpowiedział(a) na STEINER pytanie w Pytania i problemy
Tak, sproboj normalnie zarejestrowac ta zmienna bez tej metody z enuma, raz w onenable to zarejestruj i debuguj - problem sam sie nie rozwiaze, musisz znalezc przyczyne -
Najdziwniejszy 'błąd' w BungeeTabListPlus
yooniks odpowiedział(a) na STEINER pytanie w Pytania i problemy
po co robisz helpera z enuma xd, w for'ach dodaj system.out.println z czyms i w getreplacement i walnij to normalnie do maina czy cos bo bez sensu to xd -
Najdziwniejszy 'błąd' w BungeeTabListPlus
yooniks odpowiedział(a) na STEINER pytanie w Pytania i problemy
pokaz czym jest corehelper i instance, debuguj, dodaj do plugin.yml loadbefore: ['BungeeTabListPlus'] -
ENTITY EQUIPMENT z ProtocolLib'u. Jak wywołać pakiet?
yooniks odpowiedział(a) na UltimJPlay | pytanie w Pytania i problemy
napisz na discordzie: yooniks#2411, sprobuje ci pomoc -
ENTITY EQUIPMENT z ProtocolLib'u. Jak wywołać pakiet?
yooniks odpowiedział(a) na UltimJPlay | pytanie w Pytania i problemy
jak wrócę ze szkoły to ci podeślę na pastebinie (zedytuje ta odpowiedź) -
to już zależy czy wolisz tracić na pamięci czy zużyciu cpu, ja sobie zrobiłem małe api z inventory, clickableitems i to wszystko tworze, potem otwieram gui przy inventory.open(player..) a w tej metodzie tworzę inventory z zapisaną wielkością,nazwa itd przez konstruktor (do tego w takich itemach możesz zrobić sobie zwracanie danego itemu dla danego usera (getItem(user)) i tam replacuje lore w obecnym itemie itd.. żebym był na kompie to bym ci dał przykład kodu, no ale to już jak chcesz mieć jakiś fajniejszy system gui
-
ENTITY EQUIPMENT z ProtocolLib'u. Jak wywołać pakiet?
yooniks odpowiedział(a) na UltimJPlay | pytanie w Pytania i problemy
https://code.skript.pl/11skWfpZ https://code.skript.pl/11skWfpZ jakis bardzo stary plugin, ale dziala jak powinien, kilka rzeczy bym pozmienial tylko, do tego bez protocolliba. -
tak jak napisał Ixidi, nie mogłem znaleźć jakiejs klasy która te wszystkie listenery zbiera itd więc ci nie powiem czy to jakaś różnica ale pewnie jakieś nano/mili sekundy więc tego nawet nie odczujesz
-
Wlasciwie to taki task powinien wykonywac jedno okreslone zadanie, i zamiast nazwac go worldthread, to np. WeatherClearingRunnable - odpowiada za jedna rzecz - wszystko sie zgadza, kazdy sie w kodzie odnajdzie
-
em no własciwie to lepiej uzywac tych longów, no i nawet łatwiej byłoby tego użyć. private final Map<UUID, Long> timestamp = new HashMap<>(); @EventHandler(ignoreCancelled = true) public void onClick(InventoryClickEvent event) { if (!(event.getWhoClicked() instanceof Player)) { return; } final Player player = (Player) event.getWhoClicked(); if (event.getClickedInventory().getTitle().equals(x.getTitle()) { if (!timestamp.containsKey(player.getUniqueId()) { timestamp.put(player.getUniqueId(), System.currentTimeMillis() + 500L); return; } if (timestamp.get(player.getUniqueId()) > System.currentTimeMillis()) { event.setCancelled(true); //zwolnij itd.. } } //no i quit z wywalaniem gracza z mapy }
-
Nie wiedziałem, że jest taka metoda tu masz jakies urywki kodów: https://www.spigotmc.org/threads/nick-prefixes-with-scoreboard-teams.120168/ - znajdziesz coś dla siebie. tworzysz scoreboarda, tworzysz team, ustawiasz prefix teamowi, ustawiasz graczowi ten scoreboard.
-
? przeciez to patch xd wedlug mnie za duzo roboty, niektóre rzeczy albo niewykonywalne, albo trudno zrobić. musiałbyś jakoś nadpisać istniejące już metody, ew. jakoś cancelować niektóre eventy i robić to po swojemu.
-
Problem z otrzymaniem IntegerListy z configu
yooniks odpowiedział(a) na Spideusz pytanie w Pytania i problemy
Dokładnie, nie jest to żadna lista, jest to sekcja. for (String id : configuration.getConfigurationSection("section").getKeys(false)) { final Generator generator = new StoneGenerator.. } -
funnyguilds nie ma jakiegos api, wiec np. pobieranie rankingu, dostepnosc usera moga w kazdej chwili zmienic, a wtedy z aktualizacja pluginu na serwerze musisz wszystko poprawiac w swoim kodzie, w pluginie. funnyguilds dodaje swoje zmienne do placeholderapi, wiec czemu ich po prostu nie uzyjesz? https://github.com/FunnyGuilds/FunnyGuilds/blob/master/src/main/java/net/dzikoysk/funnyguilds/hook/PlaceholderAPIHook.java
-
zostanę Programista na zlecenie! [4 lata doświadczenia]
yooniks odpowiedział(a) na yooniks temat w Archiwum współpracy
To co piszesz jest zalosne XD piszesz mi o serwerze z ktorym wspolpracowalem 2 lata temu, i sam lepiej wiem co pisalem za inne pliki mial mi placic, poza tym wlasnie na nich wystartowal, tylko lekko je zedytowal ktos inny, a ja sam odszedlem bo nie mialem juz czasu na ten serwer w dodatku piszac za free. no takie oskarzenia bez zadnych dowodow sa zalosne, to ze ktos mnie poleca na serwerze nie znaczy, ze to ja crashuje. duzo osob (glownie korzystajacych z moich exploitow) pisze do mnie ze zalatwilo mi klienta, m.in za to ze robie im znizki na te exploity lub daje cos za free. Uwierz ze nie mam czasu wchodzic na kazdy serwer i pisac czy chca zakupic fixa, tymbardziej ze teraz zajmuje sie swoim serwerem Poza tym odbiegasz calkowicie od tematu - moje umiejetnosci sie poprawili w te 2 lata, wg. mnie nauczyłem się dość sporo i do teraz jakoś nikt mi nie zhejtował nowego projektu na githubie, a jedynie pisze o jordiim z ktorym wspolpracowalem bardzo dawno XD wgl nie rozumiem czemu wspominasz o 'crashowaniu', co to ma do tematu?- 28 odpowiedzi
-
- programista
- developer
-
(i 2 więcej)
Oznaczone tagami:
-
zostanę Programista na zlecenie! [4 lata doświadczenia]
yooniks odpowiedział(a) na yooniks temat w Archiwum współpracy
Chodzi ci o plugin, który wykonałem pod współpracę z JORDIIM, wtedy dopiero zaczynałem z programowaniem, a sam jordii wiedział na co się piszę - dlatego pisałem za darmo - mogłem się rozwijać, a moje pluginy testowały setki graczy - chyba nie musze przypominać, że było to dwa lata temu? Przecież mam githuba, napisz mi co takiego jest niewydajnego w tych projektach, poza tym moi klienci są zadowoleni, a ci co trochę ogarniają programowanie mówią, że kod wygląda bardzo czysto, a nawet niektórzy robią dodatki do tych pluginów - np. w corze sobie dodają do sidebara aktualną arene itd. - każdy bug staram się jak najszybciej poprawić, a plugin można przetestować przed całkowitą zapłatą. Żaden z klientów nie skarżył się na lagi, w pluginach staram się o jak najwydajniejsze rozwiązania. Nie crashuje serwerów dla zabawy, ew. testuje zabezpieczenia, nie wyłudzam żadnych pieniędzy, ani nie każę nikomu kupować moich fixów, osoby same się do mnie zgłaszają. Poproszę jakiś dowodzik, a nie piszesz byle co. To że twoje i twoich kolegów umiejętności mam w jednym palcu nie znaczy, że musisz od razu tworzyć fake'owe konto i komentować mi wątek bez żadnych dowodów, mógłbyś się chociaż wysilić i napisać mi coś o którymś projekcie na githuba (nawet jakimś starym, nie pogniewałbym się) - a tu zero, pustka =( No tak się składa, że niedługo wypuszczam publiczne fixy pod serwery proxy (bungee itd) jak i te docelowe (spigot itd) - bungee będzie zabezpieczone, a z serwerem głownym mam nadzieję, że wiekszość exploitów będzie blokować, a osoby na których taki atak został przeprowadzony i ominął zabezpieczenia - chętnie zaproszę na discorda, podeśle mi logi, a ja zajme sie fixem za DARMO.- 28 odpowiedzi
-
- programista
- developer
-
(i 2 więcej)
Oznaczone tagami:
-
zostanę Programista na zlecenie! [4 lata doświadczenia]
yooniks odpowiedział(a) na yooniks temat w Archiwum współpracy
Zależy co w takich toolsach miałoby być- 28 odpowiedzi
-
- programista
- developer
-
(i 2 więcej)
Oznaczone tagami:
-
Po co ci to? No po prostu możesz sprawdzać inventoryaction, https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/inventory/InventoryAction.html (w inventoryclickevent - event.getAction(), no i tez mozesz sprawdzac clicktype left,right) Jeżeli jest jakaś którą chcesz blokować, to sprawdzasz czy gracz ma cooldown i wtedy cancelujesz event. @edit @Queito niby tak, sam tego uzywam w pluginie na sklep, ale zgaduje ze i tak to dziala tak samo (tzn. isleft itd zwraca po prostu czy te clicktype == left itd), wiec niczym sie nie rozni) - no a ze w dokumentacji zobaczylem to tak dla przypomnienia tylko napisalem
-
zostanę Programista na zlecenie! [4 lata doświadczenia]
yooniks opublikował(a) temat w Archiwum współpracy
Szukasz dobrego programisty, z doświadczeniem w tworzeniu pluginów i nie tylko? Dobrze trafiłeś, od ponad 4 lat zajmuje się programowaniem w języku java (oraz tworzeniem pluginów) i od długiego czasu interesuje się ogólnie programowaniem, różne wzorce projektowe, clean code itp. Troche o mnie Jestem dość młody, programować zacząłem ponad 4 lata temu. Już od dawna interesowało mnie programowanie, a gdy wróciłem do gry w minecrafta zaciekawiły mnie pluginy i tak się zaczęła moja przygoda z programowaniem. Mój płatny, bardzo dobrze znany plugin na ochronę serwera minecraft: (był na spigotmc z ponad 300 zakupami, ale dostałem bana) Płatność - paypal lub przelew bankowy (na początku płacisz zaliczkę - 1/4 ceny pluginu - na "zachętę" i abym w trakcie robienia pluginu nie uslyszał, że jednak go nie chcesz, a moja robota pójdzie na marne (i kasy nie dostane) Możliwości Dowolny plugin na twój serwer spigot, bungee (proxy), sponge Wykonanie rest-api do każdego z pluginów Wykonanie api dla innych pluginów (typu możliwość pobrania coinsow) Wsparcie dla skripta i placeholderapi, np. pobieranie coinsow w skripcie za pomocą zmiennej ℅coins℅ Wykonanie prostej stronki opierającej się na pluginie (np.weryfikacja antybot poprzez klikanie na przycisk z nickiem) Edycja/kontynuacja innego pluginu, np. dodanie funkcjonalności (np. dodanie questu/zadania do pluginu na questy), poprawa bugów, usuwanie backdora, wydajności itd Współpraca - podejmę współpracę z serwerem z MIN. liczbą 100 osób w godzinach szczytu (np. po starcie serwera) za ℅ z serwera. Sprzedanie aktualnie zrobionego pluginu (np. plugin pod lobby z dodatkami typu fly, particlesy, animowane gui serwerow, chowanie i ukrywanie graczy, tablista, sidebar, chat itp), auth z logowaniem premek - po niższej cenie. Czego możesz się ode mnie spodziewać? Dojrzałe i profesjonalne podejście Szybki i miły support (prawie 24/7) (Po skończeniu zlecenia) Dodanie kilku innych funkcjonalności za drobną opłatą (lub nawet za darmo, zależy) Darmowa poprawa bugów (w jak najszybszym czasie) i usuwanie funkcji Możliwość przetestowania pluginu na serwerze testowym (jeżeli uznam, że jest to potrzebne - bez sensu kupywać testowy serwer dla jakiegoś małego pluginu, moge podrzucić ssy lub nawet nagranie gdy plugin jest mniejszy) Czysty i przejrzysty kod, z łatwą dalszą kontynuacją. Czego od ciebie oczekuję? Zdecydowanie i przemyślane decyzje (w środku robienia pluginu nie chce słyszeć o tym, że wszystko ma jednak całkiem inaczej działać) Dobrze opisane projekty - nie każ mi się ścigać o szczegóły! Jeżeli mi nie napiszesz o wszystkim czego chcesz, to tego nie zrobię. Przyzwoita aktywność (kontakt) Przykładowe projekty: https://www.github.com/yooniks/NatalciaGuilds https://github.com/yooniks/phasmatos-inventory-api https://github.com/yooniks/casual-exploitpatch Kontakt: discord: yooniks#0289 e-mail: [email protected] lub tutaj w wiadomosci prywatnej- 28 odpowiedzi
-
- programista
- developer
-
(i 2 więcej)
Oznaczone tagami:
