Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Plugin] sItemStacker – zaawansowany system automatycznego łączenia przedmiotów


Rekomendowane odpowiedzi

Opublikowano

1fdaf30b-0751-4c33-ba28-f7f28607aed7.png

sItemStacker to nowoczesny plugin dla Minecraft (wersje 1.21.4+), który automatycznie łączy przedmioty leżące na ziemi, dzięki czemu serwer działa płynniej, a zarządzanie dropem jest wygodniejsze. Plugin został zaprojektowany z myślą o dużych serwerach, gdzie optymalizacja i minimalny wpływ na wydajność są kluczowe.


🎯 Główne Funkcje

  • Auto-łączenie przedmiotów w zdefiniowanym promieniu (domyślnie 2.5 bloku)

  • Pełna kontrola przez whitelistę i czarną listę materiałów

  • Obsługa różnych maksymalnych rozmiarów stacków (np. 64, 16, 1)

  • Asynchroniczne przetwarzanie (async) — wyższa wydajność na dużych serwerach

  • Limit operacji na tick (np. maksymalnie 120 łączeń na tick) — zapobiega lagom

  • Konfigurowalne efekty wizualne: cząsteczki i dźwięki podczas łączenia

  • Możliwość zastąpienia domyślnego vanilla systemu łączenia przedmiotów

  • Zaawansowane statystyki i tryb debugowania dla developerów


🌟 Co wyróżnia sItemStacker?

  • Minimalny wpływ na TPS nawet przy dużej ilości graczy i przedmiotów

  • Zaawansowane mechanizmy zapobiegające lagom i przeciążeniom serwera

  • Grupowanie itemów wg chunków dla szybszego wyszukiwania i efektywniejszego zarządzania pamięcią

  • Cache nazw przedmiotów zmniejszający obciążenie CPU

  • Elastyczna konfiguracja dostosowana do różnego typu serwerów (survival, ekonomiczne)

  • Możliwość pracy w trybie asynchronicznym dla zachowania stabilności


⚙️ Przykładowa konfiguracja (config.yml)

To jest ukryta treść, proszę

🚀 Zaawansowane optymalizacje i techniczne detale

1. Wydajne struktury danych

  • FastUtil:

    • Long2ObjectOpenHashMap do przechowywania przedmiotów według klucza chunku (opakowane X i Z w long), co daje szybszy dostęp i oszczędność pamięci w porównaniu do standardowego HashMap.

    • Object2BooleanOpenHashMap używana dla whitelisty/blacklisty, aby efektywnie zarządzać materiałami.

  • Caffeine Cache:

    • Przechowuje wygenerowane nazwy przedmiotów i usuwa te, które są nieużywane przez godzinę.

    • Maksymalny rozmiar cache ustawiony na 500 wpisów, działa asynchronicznie w tle, nie blokując serwera.


2. Asynchroniczne przetwarzanie (async)

  • Główna logika łączenia itemów jest uruchamiana w osobnym wątku, co zmniejsza wpływ na główny wątek serwera i pozwala na płynniejsze działanie przy dużym natężeniu dropów.

  • Synchronizacja wyników odbywa się tylko raz na tick, co minimalizuje ryzyko lagów.


3. Limity zabezpieczające przed przeciążeniem

  • max-merges-per-tick ogranicza maksymalną liczbę łączeń, które mogą być wykonane w jednej iteracji, chroniąc serwer przed spadkami wydajności przy masowych dropach.

  • item-buffer-size ogranicza ilość itemów branych pod uwagę w jednej operacji, co zapobiega przeciążeniu.

  • Wbudowana funkcja prevent-lag-spikes przerywa operacje w przypadku zauważalnego spadku TPS.


4. Grupowanie itemów wg chunków

  • Zamiast przeszukiwać wszystkie itemy globalnie, ItemStacker dzieli przedmioty na grupy według chunków, które są identyfikowane za pomocą unikalnego long (kombinacja współrzędnych chunku X i Z).

  • Ta metoda znacznie przyspiesza wyszukiwanie itemów w pobliżu oraz zarządzanie pamięcią, ponieważ plugin może łatwo usuwać dane z chunków, które są unloadowane.


5. Cache nazw przedmiotów i minimalizacja operacji GUI

  • Nazwy przedmiotów są cache’owane, więc plugin unika ciągłego generowania tych samych stringów, co odciąża CPU.

  • Aktualizacja nazw w GUI odbywa się tylko w momencie faktycznej zmiany stosu (np. po scaleniu).


📊 Podsumowanie korzyści

Mechanizm Korzyść
FastUtil Zmniejszenie zużycia pamięci, szybsze operacje na kolekcjach
Caffeine Cache Automatyczne zarządzanie pamięcią, brak wycieków
Async Processing Brak lagów nawet przy dużych ilościach przedmiotów
Grupowanie wg chunków Szybki dostęp do przedmiotów, łatwa obsługa pamięci
Limity i zabezpieczenia Stabilność TPS nawet przy 100+ graczach

🔍 Hierarchia sprawdzania whitelisty i blacklisty (kluczowa logika działania)
 

Spoiler

Plugin sprawdza, czy dany przedmiot ma się łączyć, według ścisłej kolejności:

  1. Blacklista ma pierwszeństwo

    • Jeśli przedmiot jest na blacklistcie → nigdy się nie łączy, nawet jeśli jest na whiteliscie.

    • Przykład:

      blacklist: [DIAMOND_BLOCK]

      → Diamentowe bloki nie będą się łączyć, nawet gdyby były na whitelistcie.

  2. Następnie sprawdzana jest whitelista

    • Jeśli whitelista jest niepusta, tylko przedmioty na niej się łączą.

    • Przykład:

      whitelist: [STONE, DIRT]

      → Tylko kamień i ziemia będą się łączyć (reszta nie, nawet jeśli nie ma na blacklistcie).

  3. Jeśli whitelista jest pusta

    • Łączą się wszystkie przedmioty, które nie są na blacklistcie.

    • Przykład:
       


📌 Podsumowanie zasad

Whitelista Blacklista Czy przedmiot X się łączy?
Pusta Pusta Tak – wszystkie przedmioty
Pusta Zawiera X Nie – X nie łączy się
Zawiera X Pusta Tak – tylko przedmioty na whitelistcie
Zawiera X Zawiera X Nie – blacklist ma pierwszeństwo nad whitelistą
Nie zawiera X Pusta Nie – tylko whitelistowane przedmioty łączą się

⚠️ Ważne wyjątki

  • Gdy obie listy są puste → plugin łączy wszystko.

 

Download:
sItemStacker - download

Skan:skan

 

 

 

http://o.aolcdn.com/hss/storage/midas/dbb2fba7a1724ff9f49593989439ae90/203012134/rih.gif

  • AlexsanderARG zmienił(a) tytuł na [Plugin] sItemStacker – zaawansowany system automatycznego łączenia przedmiotów

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...