Serveur minecraft

Bukkit, CraftBukkit & Spigot 1.8 | SpigotMC – Un bon serveur Minecraft

Le 29 septembre 2019 - 19 minutes de lecture

Deux ans. C’est depuis longtemps que nous avons ces forums, et pour un jeu sorti officiellement depuis seulement trois ans, c’est terriblement long. Bien que la grande nouvelle d’aujourd’hui soit évidemment la version 1.8, je voudrais profiter de cette occasion pour aborder les nombreux aspects du passé, du présent et de l’avenir de ce magnifique projet. Ce qui suit est un résumé abrégé des principales étapes que nous avons vécues ensemble. J'espère que cette petite section donne un petit aperçu de l'histoire et de la création de Spigot, et montre à quel point nous sommes arrivés à une distance qui semble si courte.

À l'époque sombre de mai 2012, il existait une version modifiée de CraftBukkit appelée CraftBukkit ++, écrite par Afforess, qui comportait de nombreuses fonctionnalités permettant d'améliorer les performances et d'autres éléments sophistiqués. Malheureusement, au cours de sa vie relativement courte, il a réussi à se faire encombrer de fonctionnalités inutiles et à prendre du retard par rapport au rythme de développement rapide de Bukkit. En tant que tel, j’ai été chargé par @andrewkm, propriétaire d’EcoCityCraft, de créer une version légère dotée de fonctionnalités similaires et, bien entendu, d’améliorations des performances. Finalement, la nouvelle de ce «super-serveur» modifié a circulé et on m'a demandé de la publier publiquement, ce que j'ai fait sur les forums Spout, sous l'onglet [satirical] nom "CraftBukkit–". Humblement hébergée hors de ma Dropbox, puis divers serveurs Jenkins hébergés par NyanCraft puis par EcoCityCraft (qui héberge toujours Jenkins à ce jour), CraftBukkit est devenu un hit et a attiré une clientèle petite mais dévouée de propriétaires de serveurs. CraftBukkit ++ a finalement été abandonné et CraftBukkit – est devenu le Spigot que nous connaissons et aimons aujourd'hui. Plusieurs traits originaux d’Afforess, ou inspirés par lui, existent encore dans Spigot, et nous en sommes reconnaissants. Une fois que notre fil de discussion sur les forums Spout a atteint 100 pages, nous avons décidé qu'il était temps de chercher notre propre maison et notre site Internet. BungeeCord avait été publié plusieurs mois auparavant (changeant ainsi les serveurs Minecraft pour toujours, bien que ce soit une histoire différente), et Staminus Communications m'a proposé de me faire sponsoriser. Bien qu'ils soient maintenant connus ici sous le nom de Intreppid, Staminus (et en particulier Bryant) ont hébergé ces forums pendant deux ans et ont également contribué à initier divers autres aspects de la propriété de serveurs Minecraft, tels que rendre la protection contre les attaques DDoS bien plus abordable. que ce soit, et en lançant une gamme de serveurs overclockés spécifiquement pour les instances Minecraft à grand nombre de joueurs. Nous leur sommes reconnaissants pour leur partenariat et espérons qu'il se poursuivra pendant les deux prochaines années et au-delà! Au cours de l’année suivante, SpigotMC a connu une croissance fulgurante et de nombreux jalons ont été atteints. Nous avons commencé à ajouter une compatibilité en aval aux versions ultérieures de Minecraft, ce qui a été un énorme succès et un booster de popularité. nous avons ajouté une section de ressources et un wiki où la communauté pouvait contribuer des plugins et de la documentation, et nous avons bien sûr réussi à avoir un stand à Minecon avec Intreppid, ce qui a été une expérience incroyable pour tous et a certainement contribué à faire connaître Spigot. Plus tard dans l’année, nous avons également lancé le réseau IRC irc.spi.gt, qui fête son premier anniversaire la semaine prochaine. Il va sans dire que nous n’avons pas non plus joué cette année avec la mise en place d’un nouveau thème de forum conçu sur mesure et l’ajout de ressources premium, permettant ainsi aux développeurs de gagner de l’argent grâce à leur dur labeur. Mais bien sûr, une autre chose est arrivée cette année aussi, quelque chose qui permet finalement à SpigotMC de faire la transition de “fork of CraftBukkit” vers Bukkit, CraftBukkit, Spigot et tous les serveurs intermédiaires: 1.8.

Aujourd'hui, je suis fier d'annoncer la disponibilité immédiate de Bukkit, CraftBukkit, Spigot-API et du serveur Spigot, tous mis à jour et prêts à être utilisés avec Minecraft 1.8! La décision de procéder nous-mêmes à cette mise à jour a été prise début octobre, il y a environ 7 semaines, et un objectif auquel nous travaillons inlassablement depuis. Évidemment, les choses seront un peu différentes que par le passé, mais espérons qu'elles ne seront pas plus compliquées (nous avons fait de notre mieux pour rendre les choses aussi simples que possible, mais les corrections et les améliorations sont les bienvenues).

À partir d’aujourd’hui, tous les développements Bukkit / Spigot seront centrés sur le «SpigotMC Development Hub», par opposition à GitHub. Ce hub de développement à usage spécifique contient toutes les applications et tous les outils nécessaires aux projets Bukkit et Spigot, y compris le code source, l'intégration continue, le suivi des problèmes et les référentiels Maven. Vous pouvez le trouver ici: https://hub.spigotmc.org/. Toutes les connexions sont gérées via JIRA, mais bien que la création de compte ne soit soumise à aucune restriction, l'accès de connexion à Stash (pour les développeurs) sera limité à ceux qui ont soumis leur copie de notre contrat de licence de contributeur (pour plus d'informations à ce sujet plus tard).

Évidemment, la partie la plus intéressante pour tout le monde qui lit est comment compiler / installer CraftBukkit ou Spigot, c’est donc le sujet que je vais aborder en premier. Notez que, comme nous n’avons actuellement aucun développeur Macintosh et que certains programmes ne fonctionnent pas sur cette plate-forme, seuls les compilations Linux et Windows sont prises en charge, bien que le fichier jar terminé s’exécute parfaitement là où Java est pris en charge (Mac OSX, FreeBSD). , Solaris, vous le nommez!).

Veuillez installer les conditions préalables suivantes sur le système de votre choix avant de continuer:

Prérequis Windows

  1. Kit de développement Java. Pour compiler un code Java, vous aurez besoin du Java Development Kit, ou JDK. Ceci est différent de Java normal, donc même si vous utilisez Java, vous devrez toujours installer le JDK. Si vous avez déjà créé un plugin, vous n'avez pas à vous inquiéter car le JDK est déjà installé. Vous pouvez le récupérer à partir d'ici: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  2. A partir de BuildTools # 22, JDK n'est pas requis!
  3. Vous avez également besoin de Git pour Windows ou de msysgit, comme on l'appelle. C'est très facile à installer, il suffit de télécharger et d'exécuter le programme d'installation: http://msysgit.github.io/.

Prérequis de Linux
L'installation de la configuration requise sur Linux est très simple. Pour les serveurs Debian / Ubuntu, exécutez simplement la commande: sudo apt-get install git openjdk-7-jdk, ou pour les serveurs CentOS: sudo yum installez git java-1.7.0-openjdk-devel.

Instructions du serveur

Maintenant que vous avez installé la configuration requise, il vous suffit de récupérer les outils de construction et de les utiliser pour compiler les serveurs de votre choix. Veuillez noter que Linux est recommandé car il est beaucoup plus rapide et bien testé. OS X n'est pas pris en charge pour le moment.

  1. Ouvrez un terminal. Si vous utilisez un poste de travail Linux, vous savez probablement comment faire. Si vous utilisez un serveur Linux, ouvrez simplement un terminal SSH comme vous le feriez normalement. Pour ceux qui utilisent Windows, double-cliquez simplement sur l'icône Git Bash qui apparaît sur votre bureau ou dans le menu Démarrer. Vous pouvez également cliquer avec le bouton droit de la souris -> ouvrir le terminal ici.
  2. Téléchargez le fichier BuildTools à partir de https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar. Vous pouvez le faire avec votre navigateur ou la commande curl / wget: curl -o BuildTools.jar ou wget -O BuildTools.jar .
  3. Exécutez le fichier JAR BuildTools comme suit: Si vous avez une version différente du JDK, veuillez la remplacer par la version que vous avez installée. Vérifiez le dossier des fichiers programme pour voir quelles versions vous avez installées. Si vous souhaitez automatiser cela, vous pouvez copier les commandes dans un fichier se terminant par “.sh” puis double-cliquez dessus. Veuillez l'exécuter à partir d'un répertoire VIDE.
    1. Windows 32 bits: JAVA_HOME = "C: Fichiers de programme (x86) Java jdk1.8.0_25" java -jar BuildTools.jar
    2. Windows 64 bits: JAVA_HOME = "C: Program Files Java jdk1.8.0_25" java -jar BuildTools.jar
    3. A partir de BuildTools # 20, java -jar BuildTools.jar devrait être suffisant pour toutes les plateformes.
    4. Linux: java -jar BuildTools.jar
  4. Si tout se passe bien, environ 10 minutes plus tard, vous disposerez des pots Bukkit, CraftBukkit et Spigot. Ceux-ci peuvent être trouvés dans $ server / target / XXXX.jar.
    1. Pour Spigot, ce sera: Spigot / Spigot-Server / target / spigot-1.8-R0.1-snapshot.jar
  5. Pour mettre à jour, téléchargez et exécutez à nouveau BuildTools.jar. Le processus devrait être beaucoup plus rapide cette fois-ci, environ 2 minutes pour la plupart des utilisateurs! Assurez-vous de vérifier régulièrement les mises à jour de BuildTools.

Les développeurs
Bien que les scripts soient agréables et faciles à utiliser, en tant que développeur, vous voudrez peut-être avoir une meilleure idée de la façon dont ils fonctionnent afin que vous puissiez apporter vos propres modifications, ou le faire manuellement au cas où ils ne fonctionneraient pas comme prévu. En gros, les scripts d'installation suivent les étapes suivantes:

  1. Clonez les dépôts Bukkit, CraftBukkit et Spigot d’Atlassian Stash.
  2. Télécharger la version requise dépend: Maven, SpecialSource, Fernflower, Jacobe, Minecraft Server Jar, etc.
  3. Appliquez les mappages de désobfuscation inclus et les transformations d’accès au serveur Jar Minecraft.
  4. Décompiler et formater le code décompilé en utilisant fernflower et Jacobe.
  5. Appliquez les correctifs inclus à la source CraftBukkit.
  6. Compilez le tout en utilisant Maven!
  7. Si vous installez Spigot, exécutez ./applyPatches and Maven comme d'habitude.

Si vous avez besoin d’aide pour apporter des modifications à Spigot ou à CraftBukkit, veuillez vous rendre sur notre canal de développement IRC sur irc.spi.gt, # spigot-dev. Pour régénérer les correctifs NMS en particulier, vous devez utiliser le script ./makePatches.sh dans la source CraftBukkit. L'argument de ce script doit être le répertoire propre décompilé que BuildTools a généré, c'est-à-dire: ../work/decompile-bb26c12b

Nous sommes également très intéressés par les améliorations apportées aux scripts de construction. En particulier, les forks personnalisées ne sont pas très pris en charge, bien que, une fois le fichier jar désobfusqué installé, le serveur puisse être compilé avec Maven comme d’habitude.

En tant que développeur, vous souhaitez probablement également accéder au serveur Stash afin de pouvoir effectuer des demandes d'extraction avec toutes vos nouvelles fonctionnalités et améliorations. Comme mentionné précédemment, pour obtenir cet accès, vous devez d'abord créer un compte sur JIRA, puis soumettre notre CLA. Pourquoi un gros CLA effrayant, vous pourriez demander? Tout d’abord, ce n’est pas effrayant du tout, c’est beaucoup plus court et plus facile à lire que la plupart des accords que vous soumettez quotidiennement (pensez à Apple, iTunes et tous ces autres termes et conditions). La raison de ce document est de vous protéger et de nous protéger. Ce que fait la CLA, c’est au lieu de licencier votre code sous [L]GPL, BSD ou toute autre licence utilisée par nos projets, elle vous concède une licence pour votre code. C’est une bonne chose. En l’appliquant, nous espérons que vous constaterez les avantages de nos principales raisons:

  • C'est simple à comprendre: auparavant, lorsque vous contribuiez à un projet de licence LGPL, vous deviez accepter à la fois les licences GPL et LGPL, qui, une fois combinées, représentent près de 6500 mots de langage juridique si complexes qu'il nécessite une étude approfondie par des professionnels du droit, même expérimentés. Notre CLA, quant à elle, compte environ 1 800 mots, soit quatre fois moins, et est rédigée dans un langage que nous espérons facile à comprendre même pour ceux dont l'anglais n'est pas la langue maternelle.
  • Cela vous protège en tant que développeur: la CLA explique clairement, par écrit, quels droits vous nous accordez et quels droits vous n’avez pas. En particulier, le droit qui nous préoccupe le plus est le droit d’utiliser et de redonner une licence à votre code. Cela indique également clairement que vous consentez irrévocablement à ce que vos contributions soient utilisées dans Spigot / Bukkit.
  • Cela nous protège en tant que projet: en ayant un document signé indiquant que vous nous donnez la possibilité de concéder sous licence et d’utiliser votre code, il 1) empêche l’idée que les contributions passées puissent être annulées de quelque manière que ce soit, sous quelque forme que ce soit et 2) permet: Nous devons redéfinir la validité de votre code afin de mieux servir et préserver les objectifs à long terme du projet, le cas échéant.
  • Il élimine les ambiguïtés et encourage, espérons-le, les contributions de ceux qui ne le feraient normalement pas. L’une des principales raisons (excuses) des développeurs qui ne contribuent pas à Spigot que j’ai dit est «Je ne pense pas que j’ai le droit de le faire à cause de ma NDA». Ce document est, espérons-le, la solution à tous ces problèmes et, en le faisant co-signer par votre employeur, il ne devrait y avoir aucun problème et vous pouvez contribuer au contenu de votre coeur! Nous ne pouvons pas espérer progresser davantage si les meilleurs développeurs ne contribuent pas car ils sont liés ailleurs.

Il peut sembler étrange que je consacre un point entier aux développeurs qui développent exclusivement pour d’autres grands serveurs. Cependant, je l’inclue parce que j’estime que c’est un problème important qui nous concerne en tant que développeurs Spigot et que nous souhaitons voir. adressé. Nous fournissons Spigot, et maintenant CraftBukkit, en tant que logiciel gratuit et à source ouverte, qui est gratuit. Vous faites presque tous des profits avec vos serveurs, et certains d’entre vous en gagnent des centaines de milliers par an; nous ne C’est bon, car nous ne sommes pas concentrés sur cela. Cependant, ce que nous pensons ne va pas, ce ne sont pas les modifications que vous apportez à notre logiciel, en particulier celles qui corrigent des erreurs. exploits et autre bugs critiques. Cela peut sembler exagéré, mais c’est la situation exacte à laquelle notre équipe a été confrontée plus d'une fois dans la dernière année. C’est donc notre appel aux grands propriétaires de serveurs. Si vous avez un développeur ou une équipe de développeurs travaillant sur des versions modifiées de notre logiciel, veuillez le faire de manière publique, avec laquelle nous pourrons travailler. Cela ne ferait que créer un meilleur logiciel, avec plus de fonctionnalités API et moins de bugs. Nous sommes en mesure de vous fournir toute l'assistance dont vous avez besoin, notamment en fournissant des organisations dédiées sur notre instance Stash. En particulier, j'aimerais prendre exemple sur SportBukkit, maintenu depuis plusieurs années sous la forme de projet open source par les serveurs @MonsieurApple et oc.tc. En fait, plusieurs fonctionnalités de l'API Spigot sont basées sur leur travail. , bravo à eux!

Enfin, en ce qui concerne la CLA, si vous êtes intéressé par l’un des contenus inclus, sachez qu’il s’appuie largement sur le bien connu Harmony CLA, avec quelques modifications mineures apportées par nos avocats. Si vous avez des inquiétudes particulières concernant un libellé, n'hésitez pas à nous contacter et nous ferons de notre mieux pour vous aider.

Veuillez noter que le champ "Nom réel" sur JIRA est public pour tous les utilisateurs. Si vous n'êtes pas à l'aise avec ceci, veuillez le définir avec votre nom d'utilisateur. Tous les détails de la CLA doivent cependant être corrects.
Soumettez l'ALC ici: https://docs.google.com/forms/d/1jWCM0_fXg2-ub0t7-zHRaeuD9ZZKSoTHnKStZ3totWo/viewform

Poursuivant sur le thème des développeurs, il peut être intéressant de savoir que nous recherchons également des développeurs juniors pour nous aider à développer Spigot et Bukkit. Un développeur junior aura la plupart des responsabilités d'un développeur normal, mais il ne participera pas aux mises à jour et ne disposera pas d'un accès de validation direct à la branche principale. Ils aideront également au développement de plugins que nous maintenons. En tant que tel, j'aimerais souhaiter la bienvenue à @ dmulloy2 en tant que premier développeur junior et responsable de la maintenance du plug-in ProtocolLib. Ce plugin est devenu un incontournable dans de nombreux serveurs, mais a depuis été abandonné par son auteur original. Dmulloy le mettra à jour à la version 1.8 dès que possible et veillera à ce que cela fonctionne parfaitement avec les futures versions de Spigot.

Changements d'API et de Plugin
Vous serez très heureux de constater qu’il n’ya pratiquement eu aucune rupture d’API lors du passage à la version 1.8, et que la plupart des plugins (non-NMS) devraient fonctionner parfaitement. Il existe toutefois une exception à cette règle: la version incluse de Guava a été modifiée de 10.0 à 17.0, la même version fournie avec Minecraft. Il s’agit là d’un changement assez important qui casse quelques plugins populaires, mais nous pensons que c’est une chose rentable à faire maintenant avec cette mise à jour 1.8, car l’ancienne version incluse dans Bukkit est obsolète depuis un certain temps et, en tirant parti de cette Nous pouvons nous assurer que les développeurs pourront tirer parti des nouvelles fonctionnalités de Guava 17. En particulier, les fonctions de goyave sont obsolètes pendant deux ans avant leur suppression. Il est donc peu probable que cela se reproduise (Guava 10 a plus de 3 ans). Cela étant dit, un certain nombre de plugins populaires ont été cassés par ce changement, la plupart d'entre eux corrigés par une simple recompilation. La plupart des changements concernent la classe «Cache».

Vous trouverez en particulier les plugins mis à jour par nous ici: Assurez-vous que si vous utilisez ces versions, ne vous plaignez pas des développeurs au sujet des ruptures. Nous ouvrirons les demandes de tirage aux plugins listés dès que possible.

Comme pour tous les plugins endommagés par cette modification, un développeur Spigot les mettra à jour et les ajoutera à la liste si nécessaire. Notez toutefois que cela ne concerne que les plugins endommagés par cette modification et non les modifications NMS. Globalement, nous pensons que très peu de plugins devraient être affectés.

Nous avons également inclus une sélection préliminaire de nouvelles API, en nous concentrant sur les nouveaux types de créatures, les supports d'armure et les bannières. Toutefois, les demandes d'extraction pour d'autres nouvelles fonctionnalités sont extrêmement bienvenues. En particulier, nous aimerions voir des ajouts d’API qui évitent la nécessité d’une utilisation commune de NMS.

Pour les développeurs NMS, nous avons apporté un changement qui peut affecter quelques plugins. Dans les versions précédentes de CraftBukkit, les dépendances de Minecraft étaient déplacées dans net.minecraft.util, ce qui leur permettait de ne pas entrer en conflit avec les dépendances Bukkit / CraftBukkit. À partir de cette version, nous avons supprimé cela et modifié toutes les dépendances en conflit (Guava) afin qu'elles utilisent la même version que Minecraft. Cela présente deux avantages: la goyave n'est pas incluse deux fois dans le dernier bocal et Bukkit n'utilise plus une version de Goyave âgée de deux ans. Comme toujours, la stabilité du système NMS n’est pas garantie et il peut changer à tout moment.

Notes finales et merci
Quoi qu’il en soit, je commence à faire des progrès ici et je ferais mieux de me taire pour pouvoir commencer à mettre à jour vos serveurs. Je tiens à remercier toutes les personnes qui ont participé à Spigot au fil des ans, en particulier cette mise à jour. Merci à vous, les membres de la communauté, qui nous ont fourni l’appui nécessaire pour y parvenir. Merci à nos avocats, notamment Hansen et Jason, qui nous ont fourni d'excellents conseils au cours des derniers mois. Merci aux forums et au personnel de l'IRC qui ont fourni un soutien, des conseils et aidé à modérer la communauté. Merci à @cindy_k qui est en charge des tests et à @GunfighterJ qui est derrière les scripts que vous verrez (et qui, espérons-le, fonctionneront correctement).

Et enfin, un grand merci à @Thinkofdeath, qui est à l'origine de la plupart du code que vous voyez aujourd'hui. Sans lui, cette mise à jour ne serait tout simplement pas possible.

Dans l’ensemble, j’espère que ces programmes fonctionnent et j’espère qu’ils fonctionnent bien pour vous. Ensemble, nous pouvons aider à inaugurer le nouvel âge d'or de la propriété de serveur Minecraft.

Longue vie à Spigot!
~ Équipe Spigot

PS: Bien que le logiciel serveur lui-même soit très stable, ces outils de construction sont très nouveaux. Nous vous demandons donc de bien vouloir les utiliser, et les améliorations sont les bienvenues!

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.