Mods pour Minecraft Server - comment ça marche?


9

Le serveur Minecraft se présente sous la forme d'un seul pot. Comment les mods sont-ils développés? Comment interagissent-ils avec le pot d'origine? Qu'y a-t-il sous le capot?

Quelles technologies y sont impliquées? Je suis principalement un gars C ++ / Python, mais j'aimerais apprendre quelque chose sur le développement des mods.

Réponses:


11

Un JAR est simplement un fichier ZIP, contenant les divers fichiers de classe et autres métadonnées utilisées - c'est un format complètement standardisé.

Les fichiers ZIP peuvent être extraits et les fichiers de classe peuvent être modifiés si nécessaire pour la modification. Les fichiers modifiés sont ensuite ajoutés dans l'archive, ce qui oblige le serveur à utiliser les fichiers modifiés au lieu des fichiers d'origine.

Techniquement, les mods Minecraft sont vraiment des versions "piratées" du code original: les fichiers de classe binaires réels doivent être modifiés pour que le jeu connaisse les nouvelles choses; il n'y a pas encore de support officiel pour les mods (bien que Notch ait déclaré qu'ils travailleraient dessus pendant la bêta).

Bien sûr, ce n'est pas une très bonne façon de faire les choses si vous concevez activement des mods. Au lieu de cela, vous devez concevoir une sorte d'architecture de plugin qui permet d'exécuter du code personnalisé le cas échéant. La façon exacte dont vous procéderiez dépend de ce que vous voulez que vos mods soient capables de faire - par exemple, si la sécurité est un problème, vous voudrez probablement concevoir l'interface de mod pour utiliser une sorte de script, afin que vous puissiez empêcher les mods de faire toutes sortes de choses à l'ordinateur de l'utilisateur.


Ce n'est pas tout à fait vrai - McAdmin, par exemple, a été écrit en C #
BlueRaja - Danny Pflughoeft

@BlueRaja: MCAdmin n'est pas vraiment un mod à mon avis - c'est un serveur personnalisé personnalisé. Bien que cela puisse permettre au client de faire de nouvelles choses via des commandes, je considère que les deux choses sont différentes.
Michael Madsen

Hein? Non, c'était définitivement un mod; c'était une enveloppe autour du serveur minecraft. Il fallait que le serveur minecraft soit en cours d'exécution, il n'était donc pas autonome. J'ai brièvement regardé la source, et elle a semblé intercepter les messages du réseau et les modifier en entrant / sortant.
BlueRaja - Danny Pflughoeft

3
@BlueRaja: Huh - aurait pu jurer que c'était un serveur autonome, mais là encore, j'avoue que je ne l'ai jamais réellement utilisé. C'est une sorte de cas particulier, car il semble fonctionner en agissant comme un serveur proxy entre le lecteur et le serveur. Je ne dirais toujours pas que c'est un mod, mais c'est peut-être juste moi.
Michael Madsen

6

Les mods solo sont des versions piratées du code original. Les mods multijoueurs sont différents en ce moment. Ils utilisent presque tous le wrapper du serveur de hey0, qui relie dans le minecraft_server.jar (ou quel que soit le terme en Java) mais définit ses propres classes de fonctions, surcharge certaines des fonctions de base et exécute son propre main ()

Hey0 fournit une API mod . Voir


1

Pour votre information, Mojang publiera un "Mod API" dans un avenir proche (pendant la version bêta, donc avant sa sortie officielle qui sera vers novembre 2011).

En fait, ce sera le code source complet, comme mentionné sur le blog de Notch

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

mais pour l'instant, vous devez "décompiler" les bocaux, pour voir un code partiellement obscurci et le recompiler pour une utilisation / débogage ultérieure.

Pour ce faire, je recommande fortement le pack de codeurs Minecraft http://mcp.ocean-labs.de/index.php/MCP_Releases

il y a aussi quelques tutoriels de modding sur les forums, comme celui-ci: http://www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.