Skocz do zawartości

Ixidi

Zasłużony
  • Ilość zawartości

    2042
  • Rejestracja

  • Wygrane w rankingu

    18

Treść opublikowana przez Ixidi

  1. Ja bym zrobił mapę, w której kluczem jest np. UUID, a wartością ostatni czas użycia w milisekundach. No i potem sprawdzasz czy mapa zawiera dane UUID, jeśli tak to porównujesz różnice między aktualnym czasem, a tamtym z np 5000 (5 sekund). Jeśli jest większe lub równe, to może użyć, wykonujesz dany kod i dodajesz aktualny czas dla danego UUID, jeśli jest mniejsze to wyświetlacz jakąś wiadomość czy coś.
  2. https://www.spigotmc.org/resources/protocollib.1997/
  3. Ixidi

    [YAML] Podstawy

    To zrób tak: on right click: if player is holding {_type}: //lub if player's tool is {_type}:
  4. Ixidi

    [YAML] Podstawy

    set {_type} to yaml value "narzedzieid" from "costam/config.yml" parsed as itemtype set {_name} to yaml value "narzedzie" from "costam/config.yml" give {_type} named {_name} to player
  5. Ixidi

    Errory

    Problem został rozwiązany.
  6. Ixidi

    Errory

    Statyczne pola inicjują się przed wykonaniem metody onEnable.
  7. Ten temat został przeniesiony.
  8. Ixidi

    [Integracja] Q&A

    Jestem tu dłużej od niego A ciebie?
  9. Ixidi

    [Integracja] Q&A

    Bo jeszcze nie umarłem. Dlaczego używasz internetu?
  10. To zależy od jakiego bloku chcesz go tworzyć (środka, krańca, środka ściany etc.). Załóżmy, że chcesz stworzyć prostopadłościan "do okoła" danego bloku o krawędziach podstawy 21 i 31 oraz wysokości od Y = 0 do Y = 200. Będzie to wyglądać mniej więcej tak Block block; //Twój wyjściowy blok. Location location = block.getLocation(); //Na początek musimy wyznaczyć dwa krańce po przekątnych (pamiętajmy o wymiarach 31, 21), uwzględniając wysokość (0 - 200). Location upper = location.add(10, 0, 15); Location lower = location.subtract(10, 0, 15) upper.setY(200); lower.setY(0); //Teraz które koordynaty są większe, a które mniejsze. int lowerX, lowerY, lowerZ, upperX, upperY, upperZ; //Tutaj warto napisać sobie jakąś metodę/klasę, aby nie powtarzać kodu, ja tego nie zrobie. if (upper.getBlockX() > lower.getBlockX()) { lowerX = lower.getBlockX(); upperX = upper.getBlockX(); } else { upperX = lower.getBlockX(); lowerX = upper.getBlockX(); } if (upper.getBlockY() > lower.getBlockY()) { lowerY = lower.getBlockY(); upperY = upper.getBlockY(); } else { upperY = lower.getBlockY(); lowerY = upper.getBlockY(); } if (upper.getBlockZ() > lower.getBlockZ()) { lowerZ = lower.getBlockZ(); upperZ = upper.getBlockZ(); } else { upperZ = lower.getBlockZ(); lowerZ = upper.getBlockZ(); } //Teraz tworzymy sobie liste lokalizacj. List<Location> locations = new ArrayList<>(); //I wreszcie zapętlamy bloki for (int x = lowerX; x <= upperX; x++) { for (int y = lowerY; y <= upperY; y++) { for (int z = lowerZ; z <= upperZ; z++) { locations.add(new Location(location.getWorld(), x, y, z)); } } } Wszystkie lokalizacje w obszarze masz w locations, możesz sobie je zamienić na bloki, czy co tam chcesz. Pisane na szybko, mam nadzieję, że się nie pomyliłem i pomogłem
  11. Ixidi

    Inventory

    Ogólnie to polecam do tworzenia itemstacków napisać sobie jakiegoś buildera, bo potem wychodzi takie coś i powtarzanie kodu milion razy. No i jeszcze itemshop.setItem(0, glass); możesz po prostu zrobić pętlą zamiast kopiować i wklejać tyle razy
  12. Ixidi

    Jeden skrypt

    Problem został rozwiązany.
  13. Ixidi

    Inventory

    Możesz użyć do tego jakiejś biblioteki np. https://www.spigotmc.org/resources/gui-api.45799/ Jeśli nie chcesz, to tutaj masz poradnik przykładowy https://www.spigotmc.org/threads/tutorial-how-to-create-a-gui.280215/, tego na necie jest pełno.
  14. Ixidi

    Inventory

    Namieszałeś, this odnosi się do instancji, nie do statycznych pól.
  15. Jaki ranking?
  16. Ixidi

    Autorskie toolsy core itp

    Ten temat został przeniesiony do kosza!
  17. Ixidi

    Autorskie toolsy core itp

    Forum nie wspiera takich rzeczy.
  18. Ixidi

    pewny event

    Problem został rozwiązany.
  19. Ixidi

    Problem z kodem

    Widzę, że próbowałeś zapisać plik z licencja w formacie JSON, nie jest to jednak zrobione poprawnie. Plik może wyglądać np. tak: { "servers": [ "jakiserwser.pl", "serwer.com" ] } Należy teraz odpowiednio zinterpretować format JSON. Najlepiej użyć do tego jednej z wielu bibliotek, pokaże Ci to przy użyciu tego. No więc tak załóżmy, że masz przeczytany plik z licencją do zmiennej jsonString. Kod będzie wyglądał mniej więcej tak: String jsonString; //licencja String serverName; //nazwa serwera wpisana w licencji JSONObject json = new JSONObject(jsonString); JSONArray array = json.getJSONArray("servers"); boolean exists = false; int length = array.length(); if (length > 0) { for (int i = 0; i < length; i++) { if (array.getString(i).equals(serverName)) { exists = true; break; } } } if (!exists) { // licencja nie zawiera serwera return; } // licencja zawiera serwer
  20. Ixidi

    pewny event

    Ogólnie nie jest to bug, bo item znika po próbie użycia go, ale mniejsza. Musisz najpierw zrozumieć czym są eventy. Jak sama nazwa wskazuje są to po prostu zdarzenia. Śmierć, postawienie bloku, zniszczenie bloku, złowienie ryby, każde wydarzenie. Aby wywołać dany kod podczas danego eventu, należy go nasłuchiwać. Służy do tego "słuchacz" Listener. Dlatego właśnie nie może istnieć event, który sprawdza co gracz ma w eq, nie jest to wydarzenie. Logiczne, prawda? Ekwipunek gracza przechowuje kolekcja, którą możesz pobrać przez player.getInventory(); Mam nadzieję, że pomogłem
  21. Ixidi

    Blokowanie Unicode

    Nie testowałem ale powinno być ok.
  22. Ixidi

    pewny event

    Jaki bug I o jaki event dokładnie Ci chodzi, bo nie rozumiem.
  23. Nowe tytuły: Administrator @xVendrome - do 15.10.2019
  24. Ixidi

    Zarządzenia

    Zarządzenie @Ixidi 01/15.10.2018: @xVendrome rezygnuje z rangi administratora oraz moderatora.
  25. Ixidi

    Optymalizacja

    https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/EventPriority.html
×
×
  • Dodaj nową pozycję...