J’avais déjà écrit un article sur Sponge, il y a quelques mois de cela afin de vous présenter cette nouvelle initiative prise par la communauté Minecraft. À l’époque, le projet était tout neuf et dans la confusion de la fin de Bukkit et du rachat de Minecraft par Microsoft, personne ne savait s’il tiendrait la longueur.
Eh bien je suis content de vous annoncer qu’il a tenu et que Sponge est enfin disponible en téléchargement !

Sponge, c’est quoi ?

Petit historique pour ceux qui n’auraient pas suivi.

Nous avons tout d’abord Bukkit qui est un add-on au serveur Minecraft vanilla permettant de lui ajouter des fonctionnalités sous forme de plugins, côté serveur uniquement (e.g. ajout de commandes, modification de l’existant mais pas de rajout de contenu type blocs ou mobs). Nous avons aussi Spigot, un fork de Bukkit intégrant des fonctionnalités supplémentaires appréciables.
D’un autre côté, nous avons Forge dont le but est d’ouvrir très largement l’API Minecraft aux modeurs afin que ceux-ci puissent rajouter du contenu. Il est possible avec un mod Forge d’ajouter tout ce que ferait un plugin Bukkit et bien plus. Cependant, Bukkit est plus simple d’accès et devient donc très populaire.
Bukkit et Forge sont incompatibles entre eux. Naît alors MCPC+ rebaptisé Cauldron dont le but est de faire fonctionner ensemble mods et plugins ce qui, à part pour quelques cas très particuliers, se révèle être un succès.
Fin de l’été 2014, Bukkit sombre sous les coups de la démotivation et du DMCA. Spigot et Cauldron le suivent. Spigot se relève et son développement continue en 1.8 et ultérieur mais Cauldron est définitivement arrêté. Il n’est désormais plus possible de faire fonctionner ensemble mods et plugins au-delà de la 1.7.10.C’est là que l’idée de Sponge naît, portée par deux développeurs de grand talent : sk89q (auteur de WorldEdit et WorldGuard notamment) et blood (ancien développeur de Cauldron).

L’idée de base de Sponge – même s’il est devenu bien plus que cela, nous allons le voir – c’est de proposer une API semblable à celle de Bukkit et qui soit 100% compatible avec Forge.

Les multiples visages de Sponge

Au final, le nom Sponge regroupe plusieurs projets. Le premier et le plus important est la SpongeAPI. Une API – Application Programming Interface que l’on peut traduire par interface de programmation – n’est ni plus ni moins qu’une norme qui définit la manière dont se fait l’accès aux fonctionnalités de l’application qu’elle couvre. Pour schématiser, imaginons que Sponge est un système physique extrêmement complexe composé de dizaines de moteurs et de milliers de rouages qui tournent dans tous les sens. La SpongeAPI serait alors le tableau de bord, chargé de piloter tout cela avec d’un côté les boutons qui permettent d’agir sur le système et d’un autre côté les voyants qui permettent de voir l’état du système. La SpongeAPI nous permet ainsi d’accéder aux fonctionnalités de Sponge à partir d’une interface simplifiée qui fait abstraction du fonctionnement complexe au cœur de l’outil. Concevoir une API logique et facile à utiliser est une tâche extrêmement ardue et ne doit pas être négligé.
Maintenant que nous avons notre interface, il faut développer les fonctionnalités auxquelles cette interface donne accès. Cette étape s’appelle l’implémentation de l’interface. Et c’est là que les choses se corsent quelque peu : la SpongeAPI dispose de plusieurs implémentations.
La première d’entre elles se nomme Sponge Coremod. C’est la version originelle de Sponge, celle qui était là depuis le départ. Il s’agit d’un mod Forge que l’on ajoute au serveur afin de pouvoir charger les plugins Sponge. Ainsi, Forge et mods fonctionnent en même temps que Sponge et ses plugins, ce qui était bien l’idée de base.

La deuxième s’appelle SpongeVanilla et c’est une implémentation de l’API Sponge sur un serveur vanilla. C’est un peu la même idée que pour Bukkit et Spigot : vous avez un serveur Vanilla capable de charger des plugins qui font sensiblement la même chose que les plugins Bukkit ou Spigot.

Enfin, la troisième n’est pas officielle mais elle est intéressante tout de même : il s’agit de SpongeGlowstone. Elle est construite au-dessus d’un projet nommé Glowstone. Glowstone est un serveur Minecraft entièrement développé depuis zéro ce qui lui permet d’être open-source car il n’utilise aucun code de Mojang.

Je télécharge où ?

Doucement chers amis ! Avant que vous ne vous ruiez sur tant de bonnes nouvelles pour remplacer vos anciens serveurs, faisons un petit point sur l’avancement.
Actuellement, il n’y a que Sponge Coremod qui soit disponible – à mes yeux c’est l’implémentation de Sponge la plus intéressante, donc tant mieux – et de surcroît, il s’agit d’une version de développement. Ça signifie que, d’une part, la totalité de l’API n’est pas implémentée et que d’autre part, il peut y avoir encore pas mal de bugs.
Il est donc extrêmement déconseillé de passer vos serveurs de production sous Sponge pour le moment et si vous le faites, faites un backup de vos données avant. En revanche, vous êtes vivement encouragés à le télécharger pour le tester afin de traquer les bugs ou de vous former au développement de plugins.
Téléchargez la dernière version de Sponge. (Il faut cliquer sur le bouton main, source c’est le code source et javadoc c’est la documentation.) Si vous avez Forge, c’est très simple, il vous suffit de placer Sponge dans votre dossier mods et de démarrer votre serveur. Si vous n’avez pas Forge, vous n’avez même pas besoin de le télécharger, Sponge est capable de s’en occuper pour vous. Il vous suffit de créer un script contenant cette commande :
java -jar <votre jar Sponge> go
Exécutez le script et Sponge va gérer les dépendances pour vous.

Les plugins

C’est bien mignon tout ça, mais Sponge sans plugin ça n’a pas grand intérêt.
Attention, les plugins que je vais vous donner sont encore en développement et peuvent être instables voire bogués ! À ne surtout pas utiliser en production.
Et bien entendu, il est possible de créer vos propres plugins. Je vous invite à vous rendre sur la documentation. (La documentation anglaise est la plus à jour, je ferai des tutoriels en français sous peu.)
Les fonctionnalités suivantes sont disponibles ou le seront sous peu :
– manipulation de données : blocks, itemStacks, entities, tileEntities ;
– système d’envoi de messages ;
– manipulation des données joueurs ;
– manipulation des inventaires ;
– système de ban ;
– ajout de commande ;
– système de multi-monde ;
– gestion des statistiques joueurs (ajout, modification, suppression…) ;
– scoreboards ;
– et bien d’autres…

Les concurrents

Parce que Sponge a des concurrents, il faut bien en toucher un mot.
Le premier d’entre eux, c’est bien entendu Spigot. L’avantage premier de Sponge par rapport à Spigot c’est qu’il est compatible avec Forge et donc avec les mods. L’API de Sponge est également mieux pensée et plus agréable à utiliser que celle de Spigot (quoiqu’un peu plus complexe). En revanche, Spigot a l’avantage de l’ancienneté, d’une base de plugins extrêmement importante et d’une grande communauté. Objectivement, je ne peux que vous conseiller Spigot pour le moment si vous n’avez pas besoin de mods. Mais dès que Sponge commencera à grandir quelque peu, il pourrait se révéler une alternative très intéressante.
On peut citer également le Rainbow Project, présenté sur Minecraft.fr il y a peu. L’API de Rainbow n’est pas au niveau de celle de Spigot, encore moins de celle de Sponge, la communauté est très petite et il n’est pas compatible avec Forge. Préférez Spigot si vous n’avez pas besoin de mods, Sponge sinon.
On a également des projets comme Project Arrow et HuskBukkit dont on a entendu parler en septembre à la fin de Bukkit et qui se présentaient comme ses successeurs, mais ça n’a rien donné et les deux projets ont été abandonnés.

FAQ

Quelques questions que vous vous posez peut-être…
  • Quand la version stable sera-t-elle disponible ?

Il n’y a pas encore de date.

  • Sponge est-il compatible avec BungeeCord ?

Forge 1.8 est compatible avec BungeeCord, par conséquent Sponge – qui ne modifie pas la manière dont Forge et Bungee communiquent – est compatible également. Sponge est également compatible avec Lilypad, une alternative à Bungee, moins connue.

  • Les plugins Bukkit seront-ils fonctionnels sous Sponge ?

Nativement, non. Il existe cependant un plugin Sponge en développement qui s’appelle Pore et dont le but à terme est de faire fonctionner les plugins Bukkit sous Sponge.