Mody do Minecraft Server - jak to działa?

9

Serwer Minecraft jest dostarczany jako pojedynczy słoik. Jak rozwijane są mody? Jak wchodzą w interakcje z oryginalnym słojem? Co jest pod maską?

Jakie technologie są tam zaangażowane? Jestem głównie facetem C ++ / Python, ale chciałbym dowiedzieć się czegoś o rozwoju modów.

goodrone
źródło

Odpowiedzi:

11

JAR to po prostu plik ZIP zawierający różne pliki klas i inne użyte metadane - jest to całkowicie znormalizowany format.

Pliki ZIP można wyodrębnić, a pliki klas można edytować w razie potrzeby do modyfikacji. Zmodyfikowane pliki są następnie dodawane z powrotem do archiwum, co powoduje, że serwer używa zmodyfikowanych plików zamiast oryginalnych.

Technicznie rzecz biorąc, mody Minecrafta są tak naprawdę „zhakowanymi” wersjami oryginalnego kodu: rzeczywiste pliki klas binarnych muszą zostać zmodyfikowane, aby gra wiedziała o nowych rzeczach; nie ma jeszcze oficjalnego wsparcia dla modów (chociaż Notch oświadczył, że będą nad tym pracować podczas wersji beta).

Oczywiście nie jest to zbyt dobry sposób na robienie rzeczy, jeśli aktywnie projektujesz mody. Zamiast tego zaprojektowałbyś jakąś architekturę wtyczek, która pozwala uruchamiać niestandardowy kod w razie potrzeby. Dokładnie to, jak byś to zrobił, zależy od tego, co chcesz, aby twoje mody były w stanie zrobić - np. Jeśli bezpieczeństwo budzi obawy, prawdopodobnie chcesz zaprojektować interfejs modowy, aby używał jakiegoś skryptu, abyś mógł ograniczyć mod do robienia wszelkiego rodzaju rzeczy na komputerze użytkownika.

Michael Madsen
źródło
To nie do końca prawda - na przykład McAdmin został napisany w C #
BlueRaja - Danny Pflughoeft
@BlueRaja: MCAdmin nie jest tak naprawdę modem - to niestandardowy, samodzielny serwer. Chociaż może to pozwolić klientowi robić nowe rzeczy za pomocą poleceń, uważam te dwie rzeczy za różne.
Michael Madsen
Co? Nie, to zdecydowanie był mod; było to opakowanie wokół serwera Minecraft. Wymagało to uruchomienia serwera Minecraft, więc nie był samodzielny. Spojrzałem krótko na źródło, które zdawało się przechwytywać wiadomości sieciowe i zmieniać je w drodze do wejścia / wyjścia.
BlueRaja - Danny Pflughoeft
3
@BlueRaja: Huh - mógłbym przysiąc, że był to samodzielny serwer, ale z drugiej strony przyznaję, że tak naprawdę nigdy go nie użyłem. Jest to pewien szczególny przypadek, ponieważ wydaje się działać, działając jako serwer proxy między odtwarzaczem a serwerem. Nadal nie nazwałbym tego modem, ale to może być tylko ja.
Michael Madsen
6

Mody dla jednego gracza to zhakowane wersje oryginalnego kodu. Mody dla wielu graczy są teraz inne. Prawie wszyscy używają otoki serwera hey0, która łączy w pliku minecraft_server.jar (lub jakikolwiek inny termin znajduje się w środowisku Java), ale definiuje własne klasy funkcji, przeciąża niektóre podstawowe funkcje i uruchamia własną funkcję main ()

Hey0 zapewnia mod API . Widzieć

cthom06
źródło
1

Dla twojej informacji, Mojang wyda „Mod API” w najbliższej przyszłości (w fazie beta, a więc przed oficjalnym wydaniem, które nastąpi około listopada 2011 r.).

W rzeczywistości będzie to pełny kod źródłowy, jak wspomniano na blogu Notch

http://notch.tumblr.com/post/4955141617/the-plan-for-mods

ale na razie musisz „zdekompilować” słoiki, aby zobaczyć częściowo zaciemniony kod i przekompilować go do późniejszego użycia / debugowania.

Aby to zrobić, gorąco polecam Minecraft Coder's Pack http://mcp.ocean-labs.de/index.php/MCP_Releases

na forach jest również kilka samouczków dotyczących modowania, takich jak ten: http://www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

dominicbri7
źródło