- Auteur : Gunivers
- Version : 1.12 – 1.18
La réputation de la communauté de mapmaking Gunivers n’est plus à faire, elle qui s’est illustrée à travers des maps comme Witchery, Slide et Hierarchy. Ses membres ont décidé de partager quelques-unes de leurs techniques dans une librairie tout simplement magestueuse, qui permet de simplifier grandement la vie aux mapmakers. L’idée est d’utiliser des fonctions pour faciliter la création de mécaniques de jeu, notamment dans le cas de maps PVP. Cette librairie, sobrement intitulée « Glib » (pour « Gunivers-Libs »), s’inscrit dans un contexte plus global de publication par Gunivers d’outils destinés à la communauté mapmaking, puisqu’elle suit LGdir et Command Syntax Helper.
Fonctionnement
La lib est un datapack comme tous les autres, mais qui présente la particularité … de ne rien faire de spécial ! En effet, ce datapack contient un grand nombre de fonctions permettant d’effectuer des actions/opérations particulières, mais ces fonctions sont totalement passives, c’est à vous autres, datapackers et mapmakers, d’appeler ces fonctions via vos datapacks (ou même via un command-block !).
Par exemple, vous pourrez appeler la fonction glib.move:pathfind_ata qui vous permettra de générer un chemin partant de l’entité qui exécute la fonction et arrivant à la position ou cette même fonction est exécuté, le tout en évitant les obstacles qui se présenteront sur la route. Pour les matheux, vous retrouverez également tout un ensemble de fonctions mathématiques pré-construites comme glib.math:trig/cos qui permet de calculer le cosinus d’un angle. En bref, vous trouverez tout un tas de fonctions pouvant servir dans la conception de vos systèmes et vous permettre ainsi de gagner un temps considérable en évitant de refaire des systèmes qui ont déjà été fait !
Voici une petite liste non exhaustive de choses que vous pouvez facilement faire avec ce datapack :
- Détecter les propriétés du biome (ID, température, peut pleuvoir/neiger ? etc. )
- Obtenir ou définir les blocs en utilisant les IDs dans les tableaux de bord (permettre de détecter/comparer les blocs + les états des blocs)
- Même chose pour les objets + possibilité de convertir l’ID du bloc <-> ID de l’objet
- Gérer la santé et les IDs des entités
- Gérer l’emplacement, l’orientation, la vue et les mouvements des entités
- Créer des liens entre les entités (synchroniser/mirrorer les mouvements par exemple)
- Obtenir le temps du système dans les tableaux de bord qui n’est pas impacté par les décalages du serveur
- Gérer les vecteurs pour créer des systèmes physiques complexes !
- Utiliser tout un tas de fonctions mathématiques (car les maths c’est cool, pas vrai ?)
- Et plein d’autres choses encore !
Représentation, sur un même graphique, des différentes fonctions mathématiques présentes dans la lib
Structures et utilisation
Au fil des versions du projet, certaines fonctions s’ajoutent, d’autres disparaissent (principalement du à l’arrivée de nouvelles commandes de Minecraft qui retirent l’intérêt de vieux systèmes). Ainsi, si vous souhaitez voir l’intégralité des fonction présentes dans la version que vous souhaitez utiliser, les membres de chez Gunivers ont mis à disposition une documentation.
Avec la mise à jour 1.18 de la lib, la structure de cette dernière à été intégralement revue dans l’objectif d’être plus simple et d’être « modulaire ». La lib ayant accumulé un grand nombre de fonction diverses durant ses années de développement, l’idée de cette mise à jour est de permettre aux datapackers de pouvoir sélectionner les groupes de fonctions qu’ils désirent utiliser ! De plus, une interface web accompagne désormais la lib, permettant de télécharger cette dernière avec uniquement les modules que vous souhaitez !
Interface web permettant la sélection des modules et le téléchargement du datapack
Contribution
Ceux qui connaissent Gunivers y sont habitué, mais pour les autres, il peut être bon de souligner que le projet est totalement open-source, c’est à dire que le code est accessible publiquement et n’importe qui peut contribuer à l’amélioration de la lib, en y ajoutant de nouvelles fonctions ou en améliorant les fonctions existantes !
De plus, la lib ne souhaite pas se limiter à l’aspect développement, mais souhaite également aider dans la réalisation des décors d’une map, notamment via des banques de structures pré-construites. Ainsi, si vous n’y connaissez rien en développement, vous pouvez toujours apporter votre pierre à l’édifice en construisant une superbe structure qui pourrait être intégrée à différentes maps !
Trailer
Voici un vieux trailer, mais toujours d’actualité, car des images valent mieux qu’un long discours
Téléchargement
Installation (IMPORTANT)
Téléchargez le fichier. Puis trouvez votre dossier .minecraft :
Windows : Allez dans le menu Démarrer, puis rendez-vous dans Exécuter. Sinon, faites Touche Windows + R. Ensuite, tapez %appdata% dans la barre de recherche, puis allez dans le dossier .minecraft.
Linux : Appuyez en même temps sur ALT + F2. Vous devriez normalement avoir votre .minecraft.
Si vous ne le voyez pas, activez les dossiers cachés avec la combinaison CTRL + H.
Mac : Votre dossier minecraft se trouve dans Utilisateur > Bibliothèque > Application Support.
Si vous ne trouvez pas Application Support, faites Finder > Barre des menus : Aller + Maintenir ALT > Bibliothèque.
Installation 1.12: Ensuite, trouvez le dossier « saves » qui s’y trouve, puis cliquez sur le sous-dossier correspondant à la map sur laquelle vous souhaitez déployer Gunivers-Lib. Allez ensuite dans « data » et déposez le fichier dans « functions ». Allez dans le dossier « Gunivers-Lib » fraîchement déposé, puis trouvez-y Advancements/Biome et glissez tout le contenu de ce sous-dossier dans « Advancements » du sous-dossier « Advancements » de « data ».
Pour éviter de vous soucier des prérequis des fonctions de Gunivers-Lib, vous pouvez d’ores et déjà exécuter l’intégralité des fonctions contenues dans le dossier Utils/Import, qui créera automatiquement tous les scoreboards nécessaires.
Installation 1.13 et 1.14: Ensuite, trouvez le dossier « saves » qui s’y trouve, puis cliquez sur le sous-dossier « datapacks » et placez-y le dossier (contenu dans l’archive que vous avez téléchargé). Si vous avez téléchargé une version de développement, assurez-vous que le dossier s’appelle bien « gunivers-lib ». Autrement, certaines fonctions ne fonctionneront pas.
Image de Une réalisée par ClairElite.
Super, bravo aux devs !
Merci Yodi :)
NeX, pour le dire autrement:
Chaque fonction utilise des éléments du jeu, la plupart du temps, il s’agit d’objectifs de scoreboards (mais des fois il peut s’agir d’autres choses, comme des advancements).
Ensuite, certaines fonctions necessitent des valeurs d’entrées. Pour reprendre l’article, une fonction cosinus aura besoin d’une valeur comprise entre 0 et 360 (un angle) pour fonctionner correctement. Il faut donc que l’objectif soit créé et que la valeur d’entrée (donc l’angle), soit bien initialisé.
La fonction va également utiliser une objectif pour pouvoir stocker le résultat (dans le cas de la fonction Cosinus, elle utilisera le score nommé « Res ». Il faut donc que ce score soit lui aussi créé.
N’hésite pas à aller sur le lien original (notre site), il se peut que les informations complètent cet article (et réciproquement) ;)
NeX_BloodSword77 Salut, je suis un des développeurs de la lib.
Ce qu’il veut dire par la, c’est que les fonctions ont (pour la plupart) besoin de scoreboards déjà créés pour fonctionner, ainsi que de valeurs d’entrée pour faire leurs calculs. Une fonction qui calcule le Cosinus d’un angle aura donc besoin de certains objectifs pour stocker des valeurs temporaires utiles au calcul, ainsi que de Res, l’objectif sur lequel tu récupère ton résultat, et d’une valeur d’entrée (l’angle en question, que tu rentres sur Tmp1 et qui doit se trouver dans [0;360]).
Donc pour calculer ton cosinus tu fait
/scoreboard players set @p Tmp1 45 (ou une autre valeur)
/function Gunivers-Lib:Math/Cos
Et ton résultat sera automatiquement placé sur Res :)
PS: pour ajouter tous les objectifs rapidement, exécute toutes les fonctions présentes dans Utils/Import
En tout cas c’est pas vraiment clair
« Chacune nécessite des prérequis, qui sont des systèmes ou scoreboards à mettre en place, une ou plusieurs valeurs entrées (inputs) qui doivent parfois elles-mêmes répondre à des critères précis. » (partie Fonctionnements)
On m’explique ?
Waow, sacré travail ! Bravo aux développeurs, cet outil à l’air très pratique :)