Skocz do zawartości

GotoFinal

Użytkownik
  • Ilość zawartości

    284
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    5

Treść opublikowana przez GotoFinal

  1. Czemu uważasz ze zapisywanie graczy w configu jest głupie?
  2. To jest niepoprawna odpowiedz, zadziała poprawnie tylko jeśli dajesz 1 item z ilością 1, w innych przypadkach masz bugi i to poważne, wiec lepiej nigdy nie pisać takiego kodu. Poprawnie powinno być Location loc = p.getLocation(); HashMap<Integer, ItemStack> rest = p.getInventory().addItem(items); for (ItemStack item : rest.values()) { loc.getWorld().dropItemNaturally(loc, item); } bo metoda .addItem zwraca mapę gdzie klucz to index z array itemów do dodania, a wartość to itemy których nie udało się dodać
  3. to poczytaj o gicie i githubie, masa o tym w internecie
  4. Ale jest cała masa wiadomości których się nie da meta.setDisplayName(Utils.c(StringUtil.ITEM_NAME).replace("%>", "»").replace("{ITEM_NAME}", "Refile")); jak nazwy itemów w EQ, niektóre wiadomości w komendzie ` sender.sendMessage("�4Blad: �7Podaj nick gracza");` itd itp
  5. "Innowacyjny" Ale pluginów na schowki jest masa https://www.spigotmc.org/resources/playervaults.9228/ https://www.spigotmc.org/resources/cosmic-vaults.34309/ https://www.spigotmc.org/resources/betterplayervaults-give-your-player-vaults-only-they-can-open.16033/ https://www.spigotmc.org/resources/vaults.1274/ Tylko nie wiem jaki sens schowka co limituje tylko wybrane przez ciebie itemy... to już lepiej jak by się samemu wybierało limity dowolnego przedmiotu... Tak samo na twardo wpisane rangi w kod, a co jak ja nie mam tylko vip i supervip? Może mam 5 różnych rang? Do tego ten github na którym nic nie ma... kod bez mavena Brak możliwości edycji wiadomości. Elementy kodu są po polsku. Nazwa package powinna być tylko z małych liter Twoja klasa z MySQL wygląda jak zajebana, bo częściowo zaciemniona... Do tego robisz zapytania sql na zasadzie sb.append("name='" + u.getName() + "',");, co może być użyte na źle zabeczpieczonym serwerze offline mode do SQL injection Wszystkie twoje try/catch kończą się na ` e.printStackTrace();` co jest po prostu bez sensu, bo jak plugin nie połączy się do MySQL to nie ma prawa działać, czyli powinien sie wyłączyć i poinformować użytkownika. | Chrome blokuje tak wszystkie pliki wykonywalne które nie są popularne i z małych hostingów
  6. poczytaj dokumentacje na ich stronie... ProGuard to nie czarodziej, musisz mu powiedzieć czego nie może usunąć, bo skąd ma wiedzieć że ta klasa/metoda jest ci potrzebna? trzeba mu wskazać że program zaczyna się w głównej klasie pluginu, żeby wiedział że ona i wszystko czego używa jest potrzebna, tak samo trzeba mu wskazać że pomimo że niektóre metody nie są używane, to jak mają metodę @EventHandler to są potrzebne, itp itd.
  7. Allatori jest i tak płatne, z darmowych znam tylko proguard, dobrze użyty daje dość sporo, był np w autoin użyty. Ale i tak zdekompilowanie zależy tylko od tergo czy komuś się chce, więc przed typowym gimbusem proguard wystraczy, a reszta jak chce to i tak sobie poradzi, ale dla gównianego pluginu można i kod na githuba wrzucić i nikt nie ruszy bo po co.
  8. no musisz zrobić pętlę po tych enchatnach i samemu ułożyć sobie stringa, obiekt Enchantment ma już ładne .toString, więc robisz for loopa po map.entrySet i składasz jak chcesz
  9. GotoFinal

    spawn zombie

    Da się, ale nie ma do tego prostej metody, trzeba się bawić najczęściej z NMS by to sensownie wyglądało, a to sporo kodu i inny w zależności od wersji. Inną możliwością jest użycie jakiegoś gotowego API, np citizens się nada i można zrobić npc-zombie i wtedy go kontrolować, są też dodatki do citizens by od razu stworzyć ścieżkę po jakiej ma się poruszać mob.
  10. AutoIn nie jest juz wspierane, zerknij na plugin FastLogin oferuje to samo co autoin EDIT: i nauczcie się czytać xD # If you have one of that plugin, you can force AutoIn to don't use them even if they can be used. (change to true) ForceDisable: ProtocolLib: true Skript: false AuthMe: true LogIt: false XAuth: false LoginSecurity: false pisze że zmiana na true oznacza zignorowanie pluginu a i tak ludzie ustawiają xD
  11. no ten co to pisał ma kod, i to kod trzeba skompilować poprawnie i będzie działać i żadnego otwierania tego notatnikiem Skoro ci to napisał to powinien wiedzieć jak wyexportować własny projekt.
  12. To nie jest kod, to jest skompilowana klasa otworzona notatnikiem, tak się nie da nic zrobić....
  13. no ten bład jest dość nietypowy, bo pokazuje błędną wersję, java 8 to 52.0, a nie "8242.8224" Może to być jakiś błąd/popsuty plik, skompiluj ponownie, lub poszukaj innego źródła javy, możesz też spr użyć jakiegoś edytora bytecode i zmienić wymaganą wersję na 52.0 i modlić się by nie było więcej błędów. O dziwo widzę sporo dokładnie takich dziwnych wersji z google, ale nie mogę wyśledzić skąd się to bierze EDIT: o znalazłem: https://stackoverflow.com/questions/20845561/how-to-run-a-class-file-created-by-user-not-created-by-copiler Czyli prawdopodobnie ten .jar czy dana klasa była kopiowana w niepoprawny sposób - np tekstowo z jakiegoś powodu.
  14. Plugin wymaga innej wersji WorldGuarda starszej lub nowszej, trudno powiedzieć, błąd mówi że jedna z klas WorldGuarda powinna być interfejsem - czyli w jakiejś wersji zostało to zmienione. (autor WG zazwyczaj dba o kompatybilność, więc jak masz wersje 5.x to spr 6.x i odwrotnie, bo takie duże zmiany zazwyczaj oznaczają zmianę wersji major)
  15. zamiast anulować event i ręcznie ustawiać bloki na powietrze czy .break, to użyj z eventu tej listy bloków: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityExplodeEvent.html#blockList-- i dodawaj/usuwaj bloki, tam są wszystkie co mają być zniszczone.
  16. GotoFinal

    Cobblex

    Polecam poszukać jakiegoś gotowca, b niestety crafting w MC cały działa na zasadzie 1 itemu na slot, więc robienie czegoś innego jest bardzo utrudnione i wymaga ręcznej zabawy z eventami od EQ by wykryć kiedy ktoś podnosi wynik cratingu. Np ten plugin zdaje się od najnowszej wersji wspierać takie recipes: https://www.spigotmc.org/threads/custom-recipes.88032/ Można tworzyć craftingi z GUI lub z poziomu API w javie. A jak z jakiegoś bezsensownego powodu chcesz sam, to niestety musisz nasłuchiwać InventoryClickEvent i InventryDragEvent i tam ręcznie spradzać crafting i ręcznie zabierać itemy w momencie zdobycia przedmiotu, całkiem sporo kodu by wszystkie przypadki utrzymać, więc na pewno nikt ci gotowca nie wklei.
  17. Twoje jest jeszcze bardziej bez sensu, bo nie masz pewności że dany string da się sparsować do inta. Najwygodniej mieć coś takiego: public static Integer parseOrNull(String str) { try { return Integer.parseInt(str); } catch (NumberFormatException e) { return null; } } parsujesz tym i jak jest null to znaczy że to nie był poprawny int, proste, szybkie, wygodne. A wydajność pewnie i tak nie jest problemem bo pewnie robisz to w komendzie, to fakt czy komenda wykona się 300ns wolniej nic nie zmieni Integer value = parseOrNull(arg); if (value == null) { return; } // i dalej możesz używać jak inta
  18. GotoFinal

    Akcja aktualizacja!

    ale z minecraft-statistic.net/ który śledzi 3x mniej serwerów
  19. GotoFinal

    Akcja aktualizacja!

    ot dodaje info do statystyk, co by mogli ludzie sobie zobaczyć jak wygląda rozkład wersji
  20. GotoFinal

    Akcja aktualizacja!

    https://bstats.org/global/bukkit
  21. GotoFinal

    Losowa Liczba

    tak, tylko wydajniej i nie zasyfiając pamięci
  22. GotoFinal

    Losowa Liczba

    Nie twórz nowego random za każdym razem... daj: public int getRandom(int lower, int upper) { Random random = ThreadLocalRandom.current(); return random.nextInt((upper - lower) + 1) + lower;
  23. no ale nie potrzebujesz żadnego loopa wtedy @EventHandler public void onCommand(PlayerCommandPreprocessEvent event) { if (!event.getMessage().startsWith("/")) return; String msg = getConfig().getString(event.getMessage().substring(1)); if (msg == null) return; event.setCancelled(true); sender.sendMessage(s); } Ale ogólnie... to powinieneś normalnie rejestrować komendy w plugin.yml ;/ można też od biedy dynamicznie refleksjami dodawać, używanie do tego eventu nie jest zalecane, no ale niestety... bukkit jest jaki jest.
  24. zrób te wiadomości jako normlane stringi pomoc: |2- Linia 1 linia 2 linia 3 vip: |2- Linia 1.... wtedy w komendzie możesz po prostu pobierać cfg.getString(command) i sprawdzać czy string jest nullem czy nie (tylko nie rób tak jak masz w tym pliku jakieś inne dane, lub przenieś to do osobnej sekcji konfiguracji, tak by przypadkiem ktoś ci nie robił "/mysql.password" ( ͡° ͜ʖ ͡°)
  25. ale jaki dokladnie masz problem? dlaczego miałoby pisać coś innego? jeśli spodziewales się event będzie anulowany, to możesz spr pobawić się z priorytetami np @EventHandler(priority = EventPriority.NORMAL) i tak posprawdzać różne wartości EventPriority, raczej te powyżej NORMAL, jak HIGH itd, IDE ci podpowie jakie masz możliwości lub zerknij do dokumentacji, bo tak to nie wiem który masz ustawić... musisz wybadać, bo plugin który chroni spawn anuluje ten event w swoim listenerze, i jeśli twój listenerze wykonuje się przed nim... no to jeszcze nie widzisz tej zmiany. ALE, jeśli chcesz TYLKO nasłuchiwać eventu (nie chcesz go potem anulować czy zmiemić jakieś jego dane) to możesz użyć @EventHandler(priority = EventPriority.MONITOR) zawsze wykonuje się jako ostatni, ale pamiętaj BY NIGDY NIE ANULOWAC LUB EDYTOWAC TAM EVENTU, bo inaczej to wszystko straci sens a ty wylądujesz z setkami bugów, bo już nie będziesz miał żadnej gwarancji że ten listener wykona się ostatni.
×
×
  • Dodaj nową pozycję...