Annotated 2
-
Introduction
Annotated (anciennement appelé Packeta) c’est un outil de développement pour les mods Forge (plus exactement un annotation processor) qui va créer du code à votre place. Son but est de simplifier le plus possible la création de packets tout en minimisant les données transférées. Annotated fonctionne directement dans votre IDE et génère le code nécessaire à chaque sauvegarde.
Fonctionnement
Le principe est simple :
Tout d’abord, il faut créer un réseau de packets.
Pour cela, il suffit de créer une classe et d’y ajouter une annotation de canal :- L’annotation
@GenerateChannel
crée un nouveau canal avec le nom et la version choisie. - L’annotation
@DelegateChannel
va réutiliser le canal définit dans la classe de network choisie.
Pour créer un packet, il faut créer la fonction que vous voulez appeler à la réception du packet (équivalent au handler des packets classiques).
Il faut ensuite l’annoter avec@ClientPacket
si la fonction doit être exécutée côté client ou@ServerPacket
si elle doit être exécutée côté serveur.Une classe pour la packet est alors automatiquement générée est enregistré dans le réseau. La classe contient la méthode
send
qui prend en paramètre une cible et des arguments. Cette fonction permet d’envoyer le packet à la cible. Quand le packet est reçu, la fonction annotée va être appelée avec les arguments passés àsend
.
Il y a également les fonctionssendTo
pour envoyer un packet à un seul joueur etsendToServer
pour envoyer le packet au serveur.Certains types en paramètre de la fonction annotée ont une signification particulière, ils ne seront pas nécessaires dans la fonction
send
et une valeur est automatiquement assignée au paramètre :ServerPlayerEntity
: le joueur qui a envoyé le packetNetworkEvent.Context
: le contexte du packet
Voici un exemple d’utilisation de Annotated :
Code de la classe du réseau :
@GenerateChannel(protocolVersion = "1", channelName = MyMod.MOD_ID + ":example") public class Example { @ServerPacket public static void loveItem(ItemStack stack, String comment, ServerPlayerEntity sender) { // Exécuté coté serveur sender.sendMessage(new StringTextComponent("You love the item " + stack.getDisplayName().getString() + " : " + comment)); //TODO Save loved items in a database } }
Utilisation du packet généré :
// Exécuté coté client Example_loveItem.sendToServer(new ItemStack(Items.GOLD_INGOT), "It looks like butter");
Installation
La version 2.0 de Annotated est uniquement disponible pour minecraft 1.15.x.
Configuration de gradle
- Ajoutez le dépôt JitPack dans le fichier build.gradle :
repositories { maven { name = 'JitPack' url = 'https://jitpack.io' } }
- Ajoutez Annotated à vos dépendances :
compileOnly 'com.github.LeBossMax2:Annotated:MC1.15.2-v2.0' annotationProcessor 'com.github.LeBossMax2:Annotated:MC1.15.2-v2.0'
- Ajouter les bibliothèques de Minecraft au chemin d’accès de l’annotation processor :
configurations { annotationProcessor.extendsFrom minecraft }
Configuration spécifique pour Eclipse
- Pour Eclipse, en plus de la configuration précédente, il est recommandé d’utiliser le plugin
net.ltgt.apt-eclipse
pour configurer correctement Eclipse :
plugins { id 'net.ltgt.apt-eclipse' version '0.21' }
- Il faut configurer le chemin de sortie de l’annotation processor de la manière suivante :
eclipse { jdt.apt.genSrcDir = file('src/generated/java') // Définit le chemin où le code sera généré (optionnel) classpath.file.whenMerged { entries.findAll { it.kind == 'output' } *.path = 'bin/main' // Définit le chemin de compilation du code généré pour être accessible dans Forge } }
- Enfin, lancez la commande
./gradlew eclipse
pour configurer Eclipse de manière à utiliser l’annotation processor.
Liens
- L’annotation