Mods para Minecraft Server - como funciona?

9

O servidor Minecraft vem como um único jar. Como os mods são desenvolvidos? Como eles interagem com o frasco original? O que há sob o capô?

Quais tecnologias estão envolvidas lá? Eu sou principalmente um cara de C ++ / Python, mas gostaria de aprender algo sobre o desenvolvimento de mods.

goodrone
fonte

Respostas:

11

Um JAR é simplesmente um arquivo ZIP, contendo os vários arquivos de classe e outros metadados usados ​​- é um formato completamente padronizado.

Os arquivos ZIP podem ser extraídos e os arquivos de classe podem ser editados conforme necessário para a modificação. Os arquivos modificados são então adicionados novamente ao arquivo, o que faz o servidor usar os arquivos modificados em vez dos originais.

Tecnicamente, os mods do Minecraft são realmente versões "hackeadas" do código original: os arquivos reais das classes binárias precisam ser modificados para que o jogo saiba sobre as novidades; ainda não há suporte oficial para mods (embora o Notch tenha declarado que eles trabalharão nele durante a versão beta).

Obviamente, essa não é uma maneira muito legal de fazer as coisas se você projetar ativamente para mods. Em vez disso, você criaria algum tipo de arquitetura de plug-in que permita que o código personalizado seja executado quando apropriado. Exatamente como você lidaria com isso depende do que você deseja que seus mods possam fazer - por exemplo, se a segurança é uma preocupação, você provavelmente deseja projetar a interface do mod para usar algum tipo de script, para impedir que os mods façam todo o tipo de coisas no computador do usuário.

Michael Madsen
fonte
Isso não é inteiramente verdade - o McAdmin, por exemplo, foi escrito em C #
BlueRaja - Danny Pflughoeft
@BlueRaja: MCAdmin não é realmente um mod na minha opinião - é um servidor independente e personalizado. Embora possa permitir que o cliente faça coisas novas por meio de comandos, considero as duas coisas diferentes.
Michael Madsen
Hã? Não, foi definitivamente um mod; era um invólucro em torno do servidor minecraft. Exigia que o servidor minecraft estivesse em execução, por isso não era autônomo. Olhei brevemente a fonte e ela pareceu interceptar as mensagens da rede e alterá-las na entrada / saída.
BlueRaja - Danny Pflughoeft
3
@BlueRaja: Huh - poderia jurar que era um servidor independente, mas, novamente, admito que nunca realmente o usei. É um caso especial, pois parece funcionar agindo como um servidor proxy entre o player e o servidor. Eu ainda não chamaria isso de mod, mas isso pode ser apenas eu.
Michael Madsen
6

Mods para um jogador são versões hackeadas do código original. Mods multiplayer são diferentes agora. Quase todos eles usam o wrapper de servidor hey0, que se vincula ao minecraft_server.jar (ou qualquer que seja o termo em Java), mas define suas próprias classes de funções, sobrecarrega algumas das funções principais e executa sua própria main ()

Hey0 fornece uma API mod . Vejo

cthom06
fonte
1

Para sua informação, a Mojang lançará uma "Mod API" em algum momento no futuro próximo (durante a versão beta, antes do lançamento oficial, que será em novembro de 2011).

De fato, será o código fonte completo, como mencionado no blog de Notch

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

mas, por enquanto, você precisa "descompilar" os jars, para ver um código parcialmente ofuscado e recompilá-lo para uso / depuração posterior.

Para fazer isso, eu recomendo o Minecraft Coder's Pack http://mcp.ocean-labs.de/index.php/MCP_Releases

também existem alguns tutoriais de modificação nos fóruns, como este: http://www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

dominicbri7
fonte