Skocz do zawartości

yooniks

Użytkownik
  • Zawartość

    763
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    6

Ostatnia wygrana yooniks w dniu 2 lutego

Użytkownicy przyznają yooniks punkty reputacji!

9 obserwujących

O yooniks

  • Tytuł
    Znany

Informacje

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

Metody kontaktu

  • Discord
    yooniks#2411

Ostatnie wizyty

2 977 wyświetleń profilu
  1. yooniks

    Eq

    https://www.spigotmc.org/wiki/bbcode.1415/archive nasluchujesz inventoryclickevent
  2. yooniks

    Ochrona, pytanie

    przy większej ilości graczy event będzie działał o wiele więcej
  3. yooniks

    Gui

    Nie porównujemy enumów metodą equals, od tego jest == takie priority (high) jest niepotrzebne, zamiast 3 ify z returnami - wystarczy jeden z użyciem || (lub) action nigdy nie bedzie nullem, wiec taki if useless warunek nizej i tak sprawdza material, wiec ten if niepotrzebny no i jest od dawna metoda e.getItem() wiec pobieranie itemu z reki gracza jest bez sensu (tym bardziej chyba z tej glownej, bo przeciez gracz moze uzyc tez drugiej reki?) zastostuj sie do tych wszystkich rad do kodów które ci podesłali Małe wytłumaczenie co do samego tematu, jak chcesz zrobić sam: tworzysz klase implementująca listener, tworzysz metode z adnotacja @EventHandler, w parametrach dajesz PlayerInteractEvent (bo to go chcesz nasluchiwac) w metodzie sprawdzasz czy PlayerInteractEvent#getItem().getType() to Material.COMPASS -> otwierasz inventory, które najlepiej jest stworzyć w konstruktorze (tak zeby bylo tylko raz tworzone, a nie za kazdym razem przy evencie), inventory tworzysz uzywajac Bukkit.createInventory(inventoryHolder (najczesciej null), inventorySize, inventoryName);
  4. yooniks

    UserManager POMOCY.

    nie zmieniles najwazniejszego, czyli branie usera po kluczu (uuid), tylko znowu loopujesz całą mape, a tego wlasnie autor tematu nie chce, do tego od dawna jest pełno fajnych funkcji od javy 8, np. streamy, kod nawet lepiej by z nimi wygladal. public static User getUser(UUID uuid) { return users.get(uuid); } do tego zamiast jako typ mozesz trzymac concurrentmap lub map, a nie concurrenthashmap,
  5. yooniks

    Czyszczenie mysql

    delete from table lub truncate table zalecam te drugie
  6. yooniks

    W czym można jeszcze pisać pluginy oprócz eclipse ?

    zapewne w kazdym 'IDE' xd
  7. yooniks

    Programista na zlecenie!

    Niestety tylko zlecenie, chyba, że oferta jest naprawdę interesująca, możesz napisać prywatną wiadomość na discordzie lub tutaj.
  8. yooniks

    Level Gracza

    daj bez " "
  9. yooniks

    Problem z Puszką Pandory

    on place of dragon egg..?
  10. yooniks

    DemoN-Zestawy - Zestawy na twoim serwerze!

    to nie zaden plus =/ gdzie github =(
  11. 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
  12. yooniks

    Ochrona, pytanie

    tak, tylko zalezy co jeszcze chcesz robic
  13. yooniks

    Ochrona, pytanie

    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
  14. 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
  15. yooniks

    Najdziwniejszy 'błąd' w BungeeTabListPlus

    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
×