Moonlight Lib

📖 Opis 📖
Dawniej znana jako Selene Library, Moonlight Lib to zestaw specjalistycznych narzędzi i współdzielonego kodu, którego używam w swoich modach.
Obejmuje on wysoce wyspecjalizowane funkcje, takie jak dynamiczne generowanie zasobów, 2 nowe rejestry danych, dynamiczny system rejestracji, a także standardowe pomocniki dla wielu platform i opakowania do tworzenia modów zarówno na Fabric, jak i Forge.

🛠️ Funkcje🛠️
Oto najważniejsze zawarte funkcje. Jeśli jesteś programistą i planujesz użyć tej biblioteki, ta sekcja jest dla Ciebie!
Główne miejsca z dokumentacją to:
- Ta strona
- Klasy przykładowego pakietu na github
- Java Docs w klasach z pakietu API na github
Aby zaimportować tę bibliotekę, po prostu przejdź do sekcji plików tutaj i kliknij "copy gradle line". Następnie wklej to w swoim pliku build.gradle.
🎨Dynamiczne zasoby
Moonlight pozwala na dynamiczne generowanie dowolnych zasobów, zarówno dla pakietów danych, jak i pakietów zasobów. W szczególności mod zawiera rozbudowane API do generowania dynamicznych tekstur z narzędziami takimi jak wyodrębnianie palety, przycinanie, zmiana kształtu obrazów, automatyczne przemalowywanie i więcej.
- Przykład dynamicznych zasobów:
- Przykład przemalowywania tekstur:
- Przykład manipulacji paletą:
🌍 Narzędzia dla wielu platform
Te zestawy narzędzi starają się być tak proste, jak to możliwe, zazwyczaj opierając się na statycznych funkcjach pomocniczych zamiast adnotacjach czy innych praktykach OOP, i głównie emulują zachowanie Forge przez proste opakowanie go funkcjami pomocniczymi. Dla Fabric odpowiednie zachowanie jest wywoływane lub implementowane, jeśli nie jest dostępne. Wśród nich warto wyróżnić odroczoną rejestrację, wspólną konfigurację i inne.
Mod koncentruje się na prostocie, dlatego najważniejsze wywołania są podzielone na zaledwie 4 główne klasy API.
Są to: PlatHelper, ClientHelper, RegHelper oraz ForgeHelper.
Dla konfiguracji i sieci główne klasy to ConfigBuilder i ChannelHandler
Konfiguracje w szczególności mają dodatkowe funkcje, takie jak możliwość używania Codecs, wczesnego ładowania lub automatycznej synchronizacji z klientami
- Przykład PlatHelper:
- Przykład ClientHelper
- Przykład RegHelper:
- Przykład ConfigBuilder:
- Przykład ChannelHandler:
📒 Dynamiczna rejestracja
Obejmuje to nowy system (BlockSetAPI), który pozwala na dynamiczne wykrywanie "zestawów bloków" zaraz po zarejestrowaniu wszystkich bloków i dynamiczne rejestrowanie nowych wpisów, które od nich zależą. Przykładem jest użycie wbudowanego WoodTypeRegistry lub LeavesTypeRegistry, dwóch zestawów bloków, które zostaną dynamicznie wypełnione wszystkimi zainstalowanymi gatunkami drewna i liści z dowolnego moda, umożliwiając rejestrację twoich drewnianych przedmiotów we wszystkich istniejących rodzajach drewna.
- Przykład BlockSetAPI: definiowanie zestawu bloków
- Przykład BlockSetAPI: rejestrowanie dynamicznych bloków
🧙♂️ Inne narzędzia
- Przykład DispenserHelper
- Przykład animacji przedmiotów w pierwszej i trzeciej osobie:
🍩Niestandardowe modele 3D
- Przykład niestandardowego modelu i ładowarki modeli:
- Przykład Quad Utils:
🌽Niestandardowe oferty wieśniaków
Używając folderu pakietu danych `moonlight/villager_trades` będziesz mógł dodać nowe niestandardowe oferty do dowolnego wieśniaka. Oto przykładowa oferta. Sprawdź Supplementaries lub Sawmill po więcej przykładów
- Block Color API: Zestaw narzędzi umożliwiający wykrywanie dowolnego koloru DyeColor dla modyfikowanych bloków, a także uzyskanie równoważnego bloku w innym kolorze
Działa to dynamicznie dla każdego modyfikowanego bloku lub przedmiotu
- Niestandardowe znaczniki map:
Kompletny system umożliwiający łatwą implementację i dodawanie dekoracji map oraz znaczników map, a także kontrolę każdego ich aspektu, takiego jak renderowanie. Pozwala również przechowywać proste dane w danych map, oferując kilka hooków do ich użycia, np. w tooltipie przedmiotu.
System ten oferuje również prostą implementację Data Driven, co oznacza, że możesz łatwo rejestrować nowe znaczniki za pomocą pakietów danych!
- Globalny folder pakietów danych oraz folder ładowarki modeli
odpowiednio w moonlight-global-datapacks i /assets/models/special_models
- Dynamiczne AI wieśniaków
System pomocniczy do łatwego i dynamicznego dodawania zadań oraz modyfikowania harmonogramów wieśniaków w kompatybilny sposób, bez nadpisywania całego istniejącego AI. Pozwala również na prawidłowe dodawanie typów pamięci
- Niestandardowe animacje pierwszo- i trzecioosobowe:
Pozwala modderom na zaimplementowanie prostego interfejsu w ich przedmiotach, aby umożliwić im posiadanie niestandardowych animacji w trzeciej i pierwszej osobie (jak kusze).
Zawiera proste i łatwe w użyciu interfejsy, które pozwalają kontrolować animacje pierwszo- i trzecioosobowe, a także callback do renderowania samego przedmiotu (podobnie jak w lunecie) bezpośrednio w klasie przedmiotu
- Globalny folder pakietów danych
- Polecenie debugowania rendererów
- Wyzwalacze osiągnięć w kamieniu szlifierskim:
Mod dodaje niestandardowy wyzwalacz, który jest wywoływany, gdy przedmiot przejdzie przez kamień szlifierski, który możesz wywołać w plikach JSON osiągnięć swojego moda
- Elastyczny system płynów:
W pełni Data Driven, niestandardowy, wirtualny system płynów, który działa na Forge'owym systemie i jest zaprojektowany tak, by lepiej pasować do vanilla Minecrafta. Jego główną cechą jest możliwość posiadania wielu pojemników na płyny, takich jak butelki, miski i wiadra, a także zapewnienie wsparcia dla zup i napojów, które mogą być spożywane bezpośrednio ze zbiornika. W przeciwieństwie do systemu płynów Forge, ma jednostkę bazową 1 butelki Minecraft (250 mb Forge). System automatycznie generuje wszystkie potrzebne płyny dla już zarejestrowanych płynów Forge i pozwala użytkownikowi je nadpisać lub łatwo dodać nowe. Płyny są wirtualne, więc mogą istnieć tylko w modyfikowanych pojemnikach przeznaczonych specjalnie dla nich