Mods para Minecraft Server: ¿cómo funciona?

9

El servidor de Minecraft viene como un solo jar. ¿Cómo se desarrollan las modificaciones? ¿Cómo interactúan con el frasco original? ¿Qué hay debajo del capó?

¿Qué tecnologías están involucradas allí? Soy principalmente un tipo de C ++ / Python, pero me gustaría aprender algo sobre el desarrollo de mods.

goodrone
fuente

Respuestas:

11

Un JAR es simplemente un archivo ZIP, que contiene los diversos archivos de clase y otros metadatos utilizados; es un formato completamente estandarizado.

Los archivos ZIP se pueden extraer y los archivos de clase se pueden editar según sea necesario para la modificación. Los archivos modificados se vuelven a agregar al archivo, lo que hace que el servidor use los archivos modificados en lugar de los originales.

Técnicamente, los mods de Minecraft son realmente versiones "pirateadas" del código original: los archivos de clase binarios reales tienen que modificarse para que el juego sepa sobre las nuevas cosas; todavía no hay soporte oficial de mods (aunque Notch ha declarado que trabajarán en él durante la versión Beta).

Por supuesto, esa no es una muy buena manera de hacer las cosas si diseñas activamente para modificaciones. En su lugar, diseñaría algún tipo de arquitectura de complemento que permita ejecutar código personalizado cuando sea apropiado. El modo exacto en que lo harías depende de lo que quieras que hagan tus mods; por ejemplo, si la seguridad es una preocupación, probablemente quieras diseñar la interfaz de mods para usar algún tipo de secuencia de comandos, de modo que puedas restringir que los mods hagan todo tipo de cosas a la computadora del usuario.

Michael Madsen
fuente
Esto no es del todo cierto: McAdmin, por ejemplo, se escribió en C #
BlueRaja - Danny Pflughoeft el
@BlueRaja: MCAdmin no es realmente un mod en mi opinión, es un servidor personalizado e independiente. Si bien puede permitir al cliente hacer cosas nuevas a través de comandos, considero que las dos cosas son diferentes.
Michael Madsen
¿Eh? No, definitivamente fue un mod; era una envoltura alrededor del servidor de Minecraft. Se requería que el servidor de Minecraft se ejecutara, por lo que no era independiente. Miré brevemente la fuente, y parecía interceptar los mensajes de la red y alterarlos en su camino de entrada / salida.
BlueRaja - Danny Pflughoeft
3
@BlueRaja: Eh, podría haber jurado que era un servidor independiente, pero, de nuevo, admito que en realidad nunca lo usé. Es una especie de caso especial, ya que parece funcionar al actuar como un servidor proxy entre el jugador y el servidor. Todavía no lo llamaría un mod, pero eso podría ser solo yo.
Michael Madsen
6

Las modificaciones para un jugador son versiones pirateadas del código original. Los modos multijugador son diferentes en este momento. Casi todos usan el contenedor del servidor de hey0, que enlaza en minecraft_server.jar (o el término que se encuentre en la tierra de Java) pero define sus propias clases de funciones, sobrecarga algunas de las funciones principales y ejecuta su propio main ()

Hey0 proporciona una API mod . Ver

cthom06
fuente
1

Para su información, Mojang lanzará una "Mod API" en un futuro cercano (durante la versión beta, así que antes de su lanzamiento oficial, que será alrededor de noviembre de 2011).

De hecho, será el código fuente completo, como se menciona en el blog de Notch

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

pero por ahora, debe "descompilar" los frascos para ver un código parcialmente ofuscado y volver a compilarlo para su posterior uso / depuración.

Para hacer esto, recomiendo Minecraft Coder's Pack http://mcp.ocean-labs.de/index.php/MCP_Releases

También hay un par de tutoriales de modificación en los foros, como este: http://www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

dominicbri7
fuente