Skyblocker

Java

Skyblocker est un mod1 pour Minecraft, spécifiquement conçu pour le mode de jeu Hypixel Skyblock2. Il offre une variété d’outils et de fonctionnalités pour aider les joueurs à améliorer leur expérience de jeu dans ce mode.

Le mod comme le jeu original est codé en Java et stocke les données de configuration dans des fichiers JSON. Il est open-source et disponible sur GitHub, permettant à la communauté de contribuer à son développement.

Mes contributions en quelques points :

  • Membre de l’équipe de développement depuis deux ans, avec un rôle officiel de mainteneur.
  • Revue de code pour assurer la qualité et la cohérence du projet.
  • Développement de nouvelles fonctionnalités, principalement dans le domaine de l’interface utilisateur.

Je contribue à ce projet depuis trois ans, en développant des fonctionnalités et en améliorant l’expérience utilisateur. Après presque un an de contribution, l’équipe de développement m’a proposé de devenir un membre officiel du projet, ce que j’ai accepté avec enthousiasme. Avec ce nouveau role de mainteneur, je fais aussi de la revue de code.

Parmi le grand nombre de fonctionnalités présentes dans le mod, j’ai principalement travaillé sur l’amélioration de l’interface utilisateur, pour rendre certaines informations plus accessibles et pour configurer plus facilement certaines fonctionnalités.


Mes contributions

Voici quelques exemples de mes contributions au projet Skyblocker. Je vais faire de mon mieux pour expliquer le contexte de chaque fonctionnalité et les défis que j’ai rencontrés lors de leur développement.

Apercu du ‘Personal Compactor’

Le « Personal Compactor » est un objet qui compacte automatiquement certains objets de l’inventaire afin de réduire l’espace qu’ils occupent.

J’ai développé une fonctionnalité permettant d’afficher directement dans l’infobulle du Personal Compactor les objets qu’il peut compacter, sans avoir à l’utiliser.

Première version

Pour l’implémenter, je me suis d’abord basé sur une fonctionnalité existante permettant d’afficher le contenu d’un autre objet, le « Backpack ». Cette première approche remplaçait cependant entièrement l’infobulle originale.

J’ai donc étudié l’implémentation des infobulles dans le code du jeu afin de trouver un moyen d’ajouter mes informations à l’infobulle existante plutôt que de la remplacer. Les infobulles sont générées par une liste de « composants » qui sont ensuite affichés à l’écran. J’ai donc pu implémenter un nouveau composant et l’ajouter à la liste des composants de l’infobulle du Personal Compactor. J’ai ainsi pu conserver son contenu original tout en y ajoutant les informations du Personal Compactor.

Version actuelle


Interface pour le ‘Party Finder’

Le « Party Finder » permet aux joueurs de former rapidement un groupe pour participer aux Dungeons. Le jeu étant exécuté sur le serveur d’Hypixel, celui-ci ne peut pas modifier directement l’interface du client Minecraft et doit utiliser des interfaces existantes, comme celle d’un coffre.

Cette contrainte rend la recherche de groupes peu pratique : chaque groupe est représenté par un objet et ses informations ne sont visibles qu’en passant la souris dessus.

Chaque objet représente un groupe, le joueur doit passer la souris pour avoir l’information sur le groupe.

J’ai développé une interface personnalisée pour le Party Finder permettant de visualiser les groupes disponibles et leurs informations essentielles en un coup d’œil, puis de rejoindre directement le groupe souhaité.

L’interface de Minecraft est composée de widgets positionnés manuellement et ne dispose pas d’un système de mise en page comparable à celui du HTML/CSS. Heureusement, le jeu fournit un widget permettant d’afficher une liste défilante d’éléments, que j’ai utilisé pour afficher les groupes du Party Finder. Pour les options de filtrage, Minecraft ne fournissait pas de widget de menu déroulant adapté. J’ai donc créé le mien en réutilisant ce système de liste et en l’affichant uniquement lorsque le menu est ouvert. J’ai également dû gérer dynamiquement sa position afin qu’il s’affiche correctement par rapport au bouton qui l’ouvre.

L’interface personnalisée ne pouvait cependant pas communiquer directement avec le serveur pour rejoindre un groupe. Les actions du Party Finder original passent par l’interface d’inventaire vanilla : cliquer sur un groupe revient à cliquer sur l’objet correspondant, ce qui déclenche ensuite la communication avec le serveur.

J’ai donc fait en sorte que les interactions de ma nouvelle interface reproduisent l’action correspondante dans l’interface vanilla.


Liste des événements à venir

Hypixel Skyblock propose de nombreux événements qui se déroulent à des intervalles réguliers. L’interface du jeu original n’affiche cependant que les 15 prochains événements, ce qui limite la visibilité sur les événements à venir à plus long terme.

J’ai développé une interface personnalisée qui affiche tous les événements à venir, avec leurs dates et heures de début. [image de l’interface que j’ai développée ici]

Les informations sur les événements sont récupérées depuis un JSON stocké sur un dépot GitHub, qui est mis à jour régulièrement par l’équipe de développement du mod. Certains événements étant conditionnels, notamment ceux liés à l’élection d’un maire particulier, l’interface vérifie également l’état actuel du jeu via l’API d’Hypixel afin de déterminer s’ils doivent être affichés.


Footnotes

  1. Un mod est un logiciel qui modifie le jeu original, ajoutant de nouvelles fonctionnalités ou changeant certains aspects du gameplay. ↩

  2. Hypixel Skyblock est un mode de jeu multijoueur populaire sur le serveur Hypixel, où les joueurs commencent sur une petite île flottante et doivent progresser en collectant des ressources, en combattant des monstres et en interagissant avec d’autres joueurs. Le jeu possède son propre système économique et chaque joueur se donne son propre objectif pour progresser dans le jeu. ↩