Dodaje menu modów umożliwiające przeglądanie listy zainstalowanych modów.
3 polubień
93 pobrań

Mod Menu pozwala przeglądać zainstalowane mody i, jeśli mod to obsługuje, umożliwia szybki i łatwy dostęp do jego ekranów konfiguracyjnych.
Mod Menu obsługuje również bardziej zaawansowane funkcje, takie jak przetłumaczalne nazwy i opisy modów, obsługę formatowania QuickText w opisach modów dzięki API zastępników tekstu, filtrowanie modów bibliotecznych spośród zwykłych modów, sprawdzanie aktualizacji modów hostowanych na Modrinth lub dostarczających własne źródła aktualizacji oraz zaawansowaną konfigurację wszystkich dostępnych funkcji.
Mod Menu jest obecnie dostępny dla Fabric lub Quilt na Minecraft: Java Edition 1.14 lub nowszy.
Mod Menu zawiera szereg API dla twórców, które pozwalają ulepszyć wygląd ich moda w Mod Menu. Obejmują one klucze językowe, metadane JSON, a nawet API w Javie.
Możesz przetłumaczyć nazwę, podsumowanie i opis swojego moda bez dotykania kodu Javy. Wystarczy dodać klucze tłumaczeń w obsługiwanym formacie do dowolnego języka.
<details> <summary>Dokumentacja API tłumaczeń</summary>
Oto przykład tłumaczenia Mod Menu na język piratów. Aby stworzyć własne, po prostu zastąp modmenu na końcu (NIE to na początku) klucza tłumaczenia swoim ID moda, na przykład modmenu.descriptionTranslation.traverse.
en_pt.json
"modmenu.nameTranslation.modmenu": "Menu o' mods!",
"modmenu.descriptionTranslation.modmenu": "Menu o' mods ye installed matey!",
"modmenu.summaryTranslation.modmenu": "Menu o' mods ye installed matey!"
Tłumaczenie podsumowania jest tutaj zbędne i nie musi być dołączone, ponieważ jest takie samo jak opis, ale zostało dodane, aby pokazać, że możesz tłumaczyć podsumowanie (krótki, jednozdaniowy opis moda) oddzielnie od opisu, nawet w języku angielskim!
</details>
Istnieje wiele rzeczy, które możesz dodać tylko za pomocą metadanych w swoim fabric.mod.json.
Wszystkie one są dodawane do niestandardowego bloku w fabric.mod.json dla metadanych Mod Menu. Oto przykład użycia wielu funkcji tego API:
fabric.mod.json
{
...
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://discord.gg/jEGF5fb"
},
"badges": [ "library", "deprecated" ],
"parent": {
"id": "example-api",
"name": "Example API",
"description": "Modular example library",
"icon": "assets/example-api-module-v1/parent_icon.png",
"badges": [ "library" ]
},
"update_checker": true
}
}
}
"badges": [ ])Podczas gdy odznaka Client jest dodawana automatycznie do modów oznaczonych jako tylko po stronie klienta (ustaw "environment": "client" w fabric.mod.json), inne odznaki, takie jak Library i Deprecated, wymagają tutaj definicji.
Obsługiwane wartości:
library - powinna być przypisana do modów, które są wyłącznie zależnościami dla innych modów i nie powinny być domyślnie wyświetlane użytkownikowi, chyba że je włączy.deprecated - powinna być przypisana do modów, które istnieją wyłącznie ze względów dziedzictwa, takich jak stary moduł API.Wszelkie inne wartości zostaną zignorowane, a Mod Menu nie obsługuje dodawania własnych odznak. Możesz otworzyć zgłoszenie tutaj, jeśli masz przekonujący przypadek użycia dla nowej odznaki.
"links": { })Obiekt links pozwala autorom modów dodawać niestandardowe hiperłącza na końcu opisu. Jeśli określisz kontakt sources w oficjalnych metadanych fabric.mod.json, zostanie on również uwzględniony w sekcji linków.
Każdy klucz w obiekcie links zostanie uwzględniony w sekcji linków, a klucz będzie używany jako klucz tłumaczenia. Na przykład to:
fabric.mod.json
"custom": {
"modmenu": {
"links": {
"modmenu.discord": "https://discord.gg/jEGF5fb"
}
}
}
zostanie wyświetlone jako link z tekstem "Discord", ponieważ "Discord" jest angielskim tłumaczeniem "modmenu.discord" dostarczonym przez Mod Menu.
Mod Menu dostarcza kilka domyślnych tłumaczeń, które mogą być używane dla linków. Pełną listę można zobaczyć w pliku językowym Mod Menu tutaj. Wszystkie domyślne klucze tłumaczeń linków mają postać modmenu.<typ>.
Możesz również dostarczyć własne tłumaczenia, jeśli chcesz dodać niestandardowe linki. Upewnij się, że używasz własnej przestrzeni nazw (a nie modmenu) dla niestandardowych kluczy.
"parent": "mod_id" lub { })
Rodzice są używani do wyświetlania moda jako dziecka innego moda. Ma to na celu użycie dla modów podzielonych na różne moduły. Poniższy element w fabric.mod.json zdefiniuje moda jako dziecko moda 'flamingo':
fabric.mod.json
"custom": {
"modmenu": {
"parent": "flamingo"
}
}
Jeśli jednak chcesz pogrupować mody pod rodzicem, ale rodzic nie jest prawdziwym modem, również możesz to zrobić. W poniższym przykładzie mod definiuje metadane dla rodzica. Upewnij się, że te metadane są zawarte we wszystkich dzieciach, które używają fałszywego/atrapowego rodzica. Może to być również używane jako rezerwa dla opcjonalnego rodzica - zostanie zastąpione prawdziwymi metadanymi moda, jeśli są obecne.
fabric.mod.json
"custom": {
"modmenu": {
"parent": {
"id": "this-mod-isnt-real",
"name": "Fake Mod",
"description": "Do cool stuff with this fake mod",
"icon": "assets/real-mod/fake-mod-icon.png",
"badges": [ "library" ]
}
}
}
Atrapowe mody rodzicielskie obsługują tylko następujące metadane:
id (String)name (String)description (String)icon (String)badges (Array of Strings)"update_checker": false)Domyślnie sprawdzanie aktualizacji Mod Menu użyje hasha twojego pliku jar moda, aby wyszukać najnowszą wersję na Modrinth. Jeśli znajdzie pasujący projekt, sprawdzi najnowszą wersję obsługującą twój loader modów i wersję Minecrafta, a jeśli ma inny hash niż twój istniejący plik, poinformuje użytkownika, że dostępna jest aktualizacja.
Możesz wyłączyć sprawdzanie aktualizacji, ustawiając update_checker na false w metadanych Mod Menu w następujący sposób:
fabric.mod.json
"custom": {
"modmenu": {
"update_checker": false
}
}
Ponieważ Mod Menu obsługuje również Quilt, te same API z sekcji API metadanych Fabric są również dostępne dla modów Quilt, ale format niestandardowych metadanych jest nieco inny.
Zamiast bloku "modmenu" wewnątrz bloku "custom", umieszczasz blok "modmenu" jako element w obiekcie głównym. Powinno to wyglądać tak:
quilt.mod.json
{
...
"modmenu": {
// Tutaj umieszczasz swoje linki, odznaki itp.
}
}
Aby użyć API Javy, musisz dodać Mod Menu jako zależność w czasie kompilacji w swoim projekcie gradle. Nie sprawi to, że twój mod będzie wymagał Mod Menu, ale będzie obecny w twoim środowisku do testowania.
build.gradle
// Dodaj repozytorium maven Terraformers do bloku repositories
repositories {
maven {
name = "Terraformers"
url = "https://maven.terraformersmc.com/"
}
}
// Dodaj Mod Menu jako zależność w swoim środowisku
dependencies {
// Przed Minecraft 26.x użyj "modImplementation"
implementation("com.terraformersmc:modmenu:${project.modmenu_version}")
}
Następnie zdefiniuj wersję Mod Menu, której używasz w swoim gradle.properties. Możesz pobrać najnowszy numer wersji tutaj, ale możesz potrzebować innej wersji, jeśli nie używasz najnowszej wersji Minecrafta. Zobacz stronę wersji, aby uzyskać pełną listę wersji.
gradle.properties
modmenu_version=NR_WERSJI_TUTAJ
Jeśli nie chcesz go w swoim środowisku do testowania, ale nadal chcesz kompilować z Mod Menu do używania API Javy, możesz użyć
modCompileOnlyzamiastmodImplementation(będzie to działać nawet jeśli Mod Menu nie jest zaktualizowane do wersji Minecrafta, którą uruchamiasz).
Aby użyć API, zaimplementuj interfejs ModMenuApi w klasie i dodaj go jako punkt wejścia typu "modmenu" w swoim fabric.mod.json w ten sposób:
fabric.mod.json
"entrypoints": {
"modmenu": [ "com.example.mod.ExampleModMenuApiImpl" ]
}
Mody mogą dostarczyć fabrykę ekranów, aby udostępnić niestandardowy ekran konfiguracji otwierany przyciskiem konfiguracji. Zaimplementuj metodę getModConfigScreenFactory w swojej implementacji API, aby to zrobić.
Zamierzonym przypadkiem użycia jest umożliwienie modom dostarczania własnych ekranów konfiguracji. Id moda ekranu konfiguracji jest automatycznie określany na podstawie kontenera moda źródłowego, z którego pochodzi punkt wejścia.
Mody mogą również dostarczać fabryki ekranów, aby udostępnić niestandardowe ekrany konfiguracji otwierane przyciskami konfiguracji dla innych modów. Zaimplementuj metodę getProvidedConfigScreenFactories w swojej implementacji API w tym celu.
Zamierzonym przypadkiem użycia jest umożliwienie modowi takiemu jak Cloth Config dostarczania ekranów konfiguracji dla modów korzystających z jego API.
Mody mogą nadawać innym modom odznakę Modpack, implementując metodę attachModpackBadges, na przykład w następujący sposób:
@Override
public void attachModpackBadges(Consumer<String> consumer) {
consumer.accept("modmenu"); // Wskazuje, że 'modmenu' jest częścią modpacka
}
Należy pamiętać, że mody 'wewnętrzne', takie jak sam Minecraft i loader modów, nie mogą otrzymać odznaki modpacka, ponieważ nie są dystrybuowane w typowym modpacku.
ModMenuApi oferuje również kilka metod pomocniczych dla modów, które chcą lepiej współpracować z Mod Menu, na przykład tworząc własne przyciski modów.
Możesz wywołać tę metodę, aby uzyskać instancję ekranu modów:
Screen createModsScreen(Screen previous)
Możesz wywołać tę metodę, aby uzyskać tekst, który byłby wyświetlany na przycisku modów Mod Menu:
Text createModsButtonText()
Udało się!