- Mixin to biblioteka Java, która poprawia skompilowane klasy Minecrafta podczas ładowania.
- Mody opisują, gdzie wstrzyknąć kod, a nie jak wygląda plik, dzięki czemu poprawki przetrwają aktualizacje gry.
- Fabric jest zbudowany na Mixin i stosuje mixiny każdego moda podczas ładowania klas.
- Nigdy nie instalujesz Mixin samodzielnie; ładowacz go dołącza.
Mixin to biblioteka Java, która umożliwia modyfikowaniu skompilowanych klas Minecrafta podczas ładowania gry, bez edycji oryginalnego kodu źródłowego. Mody piszą małe klasy, które mówią „dodaj ten kod w tym miejscu w tej metodzie gry”, a Mixin wplata je w bytecode w czasie działania. Fabric wykorzystuje go jako podstawowy mechanizm modyfikacji.
Gdzie pasuje Opal
Opal to mod Fabric, więc działa na Mixin pod spodem. Nie musisz instalować Mixin samodzielnie; przewodnik konfiguracji opisuje, jak uruchomić Opal i Fabric.
Jak działa Mixin
Mixin edytuje klasy po ich skompilowaniu, ale przed uruchomieniem przez JVM. Mod wysyła klasę Mixin, która celuje w rzeczywistą klasę gry. Adnotacje na tej klasie oznaczają, gdzie ma zostać wstawiony kod: początek metody, jej koniec, konkretne wywołanie metody lub wartość zwracana. Kiedy Minecraft ładuje klasę docelową, Mixin przepisuje jej bytecode, aby wpleść kod modu.
Ma to znaczenie, ponieważ Minecraft nie został zaprojektowany do rozszerzania. Gra nie posiada oficjalnych punktów wtyczek dla większości zachowań. Mixin daje modom możliwość dostępu, traktując skompilowaną grę jako powierzchnię rozszerzenia.
Dlaczego mody używają go zamiast edytować grę
Dwa powody: kompatybilność i aktualizacje.
Bezpośrednia edycja kodu źródłowego gry oznacza wysyłanie całej zmodyfikowanej kopii, na której nikt inny nie może budować i która przestaje działać w momencie aktualizacji gry. Patch Mixin jest mały i precyzyjny, dzięki czemu wiele modów może poprawiać tę samą grę bez wysyłania pełnego rozwidlenia.
Patch opisują, gdzie wstawić kod, a nie jak wygląda plik, więc mixin napisany dla jednej wersji często nadal działa po aktualizacji gry, o ile docelowa metoda nadal istnieje.
Jak to współgra z Fabric
Fabric opiera się na Mixin. Ładowarka odczytuje konfigurację mixin dla każdego moda, a następnie przekazuje klasy mixin do Mixin, aby zostały zastosowane podczas ładowania klas. Typowy mod Fabric składa się głównie z własnych klas oraz garstki mixinów, które podłączają się do kilku metod gry, które mod musi zmodyfikować.
Popularne punkty wstrzykiwania
| Adnotacja | Co robi |
|---|---|
@Inject | Wykonuje Twój kod w wybranym punkcie wewnątrz docelowej metody |
@Redirect | Zastępuje konkretne wywołanie metody w docelowej |
@ModifyArg | Zmienia argument przekazywany do wywołania w docelowej |
@ModifyVariable | Zapisuje lokalną zmienną w trakcie działania metody |
@Overwrite | Zastępuje całą metodę (ostateczność; łatwo się psuje) |
@Inject jest domyślnym narzędziem, ponieważ jest najmniej inwazyjny i najbardziej prawdopodobny do przetrwania aktualizacji gry. @Overwrite należy unikać, ponieważ koliduje z każdym innym modem, który modyfikuje tę samą metodę.
FAQ
Nie. Mixin to biblioteka, z której budowane są modyfikacje. Nie instalujesz go samodzielnie; ładowarek, taki jak Fabric, łączy go i stosuje miksery, które dostarczają twoje modyfikacje.
Nie. Pliki poprawek są ładowane do pamięci wraz z klasami. Pliki na dysku pozostają nietknięte, dlatego też usunięcie moda w czysty sposób usuwa jego zmiany.
Jeśli oba modyfikują tę samą metodę w sposób niezgodny, zwłaszcza przy użyciu @Overwrite, jeden może unieważnić lub zepsuć działanie drugiego. Dobrze napisane mixiny używają wąskich punktów wstrzykiwania, aby uniknąć wzajemnego kolidowania.
Nie. Mixin to ogólny framework do manipulacji bytecode'em w Javie, ale modowanie Minecrafta jest miejscem, gdzie jest on najczęściej używany, a przyjęcie go przez Fabric uczyniło go standardem w tym środowisku.