Skocz do zawartości

TheMolkaPL

Użytkownik
  • Ilość zawartości

    536
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    13

Treść opublikowana przez TheMolkaPL

  1. TheMolkaPL

    Enderchest

    Wystarczy dostać się do tego https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/nms-patches/EntityHuman.patch#27 i w InventorySubcontainer podmienić b (int) na własność wartość.
  2. Takie rzeczy ustala się w ipconfig, nie pluginami... Osoby z zewnątrz w ogóle nie powinny mieć jakiegokolwiek dostępu do tego serwera zasłoniętego przez proxy (BungeeCord)...
  3. Utils... (inaczej helper) - czyli coś gdzie wrzucasz wszystko co nie pasuje do żadnej twojej klasy... Założenie jest takie, że musisz zrobić jakąś metodę, ale nie ma żadnej klasy która reprezentowała by strukturę, gdzie taka metoda by pasowała... albo potrzebujesz zrobić metodę do klasy finalnej, więc nierozszerzalnej, lub coś w tym rodzaju. W związku z tym klasa ta nie ma obiektów. Powinieneś tą klasę oznaczyć jako final, tak, aby nikt nie mógł jej rozszerzać oraz zrobić prywatny konstruktor bez parametrów. Dzięki temu stworzenie instancji tej klasy nie będzie możliwe. Teraz wady i zalety takiego rozwiązania. Zaletą jest na pewno łatwy dostęp do takich metod. Są to, a przynajmniej powinny, publiczne metody statyczne, a więc wystarczy odnieść się do klasy i wywołać statyczną metodę. Wad natomiast znalazłbym kilka. Po pierwsze globalność - takiej metody nie da się nadpisać i zmienić jej zachowania - czyli jednej z najważniejszych zalet programowania obiektowego. W najlepszej sytuacji powinna być klasa, która będzie coś reprezentować, którą można rozszerzyć i nadpisać metody, by zmienić ich zachowanie. Po drugie trudność debugowania. Metoda ta jest globalna, dostępna zewsząd. Debugowanie takiej metody w poszukiwaniu zmian jest znacznie bardziej utrudnione. Czyli podsumowując takie utils to metody, które nie pasują do żadnej klasy, którą masz, więc wrzucasz je do jednego worka, aka "utils"/"helper". Metody w tej klasie zawarte powinny być publiczne i statyczne, co niesie za sobą łatwość dostępu, ale za to trudność debugowania i niezmienność (brak możliwości zmiany ich zachowania). Jeszcze inną kwestią jest, tutaj nie poruszona, przechowywanie modyfikowalnych (mutable) danych globalnie, czyli w polach statycznych. Pozdrawiam Czerwono
  4. Jeżeli nie ma żadnej licencji to domyślnie jest (c) wszelkie prawa zastrzeżone, więc nie można.
  5. Nie da się tak, bo BungeeCord jest proxy, czyli pomiędzy połączeniem klienta z serwerem.
  6. Musisz wejść a JAR pluginu i tam go edytować.
  7. Przed edycją musisz się upewnić, że masz do tego prawo. Potencjalnie możesz pogwałcić czyjeś prawa autorskie.
  8. Użyj argument 1, argument 2, itd.
  9. TheMolkaPL

    Anty WLAM

    Zdefiniujcie nam najpierw towarzyszu czym miałby być ten "włam". Ochrony nie przeprowadza z poziomu pluginów, a tym bardziej skryptów.
  10. Przecież towarzysze dobrze napisali. Możesz zrobić plugin na BungeeCord (nie do Bukkit!!), który będzie pisał wiadomość do wszystkich graczy na proxy, że ktoś dołączył. Albo możesz zrobić plugin BungeeCord, który przy wejściu jakiegoś gracza wysyła jakimś sposobem plugin channel (bo ten działa pakietami jakiegoś klienta, więc nie będzie działać jak nikogo na serwerze nie ma) do wszystkich instancji Bukkita, które to posiadają swój plugin, który taką wiadomość nasłuchują i informują graczy na serwerze o wejściu.
  11. Możesz pobrać najbliższe entity od gracza. https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Entity.html#getNearbyEntities-double-double-double-
  12. Jedynie jaki przychodzi mi na myśl to WorldGuard. Spróbuj usuwać po kolei pluginy i skrypty to się dowiesz.
  13. Musi to blokować jakiś plugin, albo skrypt. Zrób sobie replikę serwera i usuwaj po kolei pluginy oraz skrypty, a między nimi cały czas testuj czy w końcu działa.
  14. TheMolkaPL

    [Anti Grif]

    Tylko po co komu coś takiego? Jeżeli ma to być element mini-gry, to robi się to już w produkcie jednego projektu.
  15. Należy wykorzystać w tym celu API Mojangu. http://wiki.vg/Mojang_API#Playernames_-.3E_UUIDs
  16. Taki, że jest reCAPTCHA, którą nie jest łatwo ominąć.
  17. Class loader ma taki problem, że GC Javy nie widzi braku referencji do statycznej zmiennej. Prowadzi to do tego, że po wykonaniu reload, a przecież pluginy ładują się przez Bukkitowski class loader, statyczne zmienne nie są czyszczone co ostatecznie w większości przypadków prowadzi do memory leaków. Po drugie co znaczy, że nie możesz zrobić reloadu - występują jakieś błędy? "Core" to nie jest dobra nazwa pluginu, jest zbyt generalna, bardzo łatwo o duplikat takiej nazwy... a sama nazwa też nic nie mówi co ten plugin robi. Kolorowanie powinno się odbywać przez ChatColor, a najlepiej całkowicie wiadomości powinny zostać wysyłane poprzez komponenty chatu. Jako separatora wyboru używa się znaku |, nie /. Czyli masz przykładowo <value1|value2>. Parsujesz string do integera, ale nie wyłapujesz NumberFormatException, który to zostaje wyrzucony gdy nie uda się takiego stringu przekonwertować. Pomyśl o tym - w innej sytuacji nastąpi wyrzucenie tego wyjątku dalej do Bukkita i się wysypie. AuroraCase jest tworzone wielokrotnie bez żadnej różnicy przy wykonywaniu komendy. Takie rzeczy jest sobie fajnie zapisywać np w stałych, a potem gdy chcemy użyć to wystarczy sobie go sklonować. Twój użytek komendy to nie /casegive <gracz/all> <nick/ilosc> <ilosc/puste>, bo jest nieczytelne i błędne (bo wynika z tego, że wybór można mieszać, a nie można); lecz /casegive <gracz <nick> <ilosc>|all <ilosc>>. Na twoim miejscu zamiast gracz spodziewałbym się już nicku gracza - po co tak to rozpisywać? Nie musisz robić sprawdzania isCancelled(), bo Bukkit ma funkcję ignoreCancelled = true w adnotacji, co z resztą powoduje, że ten listener się przy anulowaniu event się po prostu nie wykona. W przyszłości (albo już teraz przez jakiś plugin) getItemInHand() może być nullem; upewniaj się, że nim nie jest, bo inaczej się wysypie. im.getDisplayName() != null - do tego służy metoda hasDisplayName() w ItemMeta. b.setType(Material.AIR); - zmieniasz blok, czyli w jakiś sposób stan event, co na priorytecie MONITOR jest niedozwolone. No i normalnie te szanse napisz
  18. To zależy ile takich regionów byś chciał. Jeżeli będzie ich niewiele to możesz loopować przy ruchu gracza wszystkie regiony w jego świecie. Sprawdzasz następnie odległość od środka regionu, a samym graczem. Jeżeli byłoby ich wiele, to możesz te regiony indeksować przykładowo chunkami. Czyli klucz to współrzędne chunki, a wartość to lista potencjalnych regionów, które na tym chunku się znajdują. Potencjalny region to region, który znajduje się w tym chunku w jakiś sposób.
  19. End crystal to nie blok, tylko entity. Lepiej jest obliczać dystans między punktami, a jeżeli tak loopować bloki.
  20. Hmmm... da się, ale to wymagałoby dużej mocy obliczeniowej przy usuwaniu. Szczególnie wtedy gdy będziemy chcieli usunąć bloki z chunku, który nie jest załadowany. Drugi problem jest taki w jaki sposób przypisywać większość bloków do graczy. Przykładowo ktoś tworzy i stawia wagonik z TNT i o rozsadza. Jest dużo różnych takich przypadków i każdy z nich trzeba przewidzieć. A co z mobami, na przykład creeperami, albo endermanami? No i trzeba się liczyć z tym, że to jest już dużo informacji do przechowywania, więc najlepiej nadałaby się w tym celu baza danych, bo ten CSV w Skript będzie wydłużał czas ładowania, odczytu no i też będzie dużo kosztował w samym użytkowaniu,
  21. TheMolkaPL

    Tryby

    Ale musiało to być w każdym listenerze, w każdej komendzie, w każdym skrypcie. Natomiast autor chce po prostu to odseparować między światami.
  22. Co to jest to "rozkodowanie"? Zdefiniujecie co to znaczy? To jeszcze zależy jaki masz Essentials. Główny projekt został... hmm... wstrzymany, dopóki Mojang nie zadeklaruje swojej pozycji na temat modowania Minecrafta. Najpierw sforkował to team Spigota i zaktualizowali to do nowszych wersji (bo nupy psują kompatybilność wsteczną...). Potem powstały jeszcze jakieś EssentialsX, którymi w ogóle się nie interesowałem, i na pewno jeszcze masa innych. No to jak wiesz jaki Essentials, to znajdziesz na pewno jego kod źródłowy, bo tak mówi licencja GPL-3.0, czyli ta na której stoi oryginalny kod Essentials. Mówi ona, że każda wersja pluginu, która jest na jakiejkolwiek publicznej dystrybucji musi być dostępna w jakiejś formie w postaci kodu źródłowego.
  23. TheMolkaPL

    Tryby

    Możecie spróbować z pluginem PerWorldPlugins.
  24. TheMolkaPL

    Skrypt na anty bota

    Zanim napiszecie temat to użyjcie wyszukiwarki... Tylko dzisiaj powstał taki właśnie skrypt, a jest ich masa.
×
×
  • Dodaj nową pozycję...