Aller au contenu
Nashoba

Tuto Addon #6 - Créer un type

Messages recommandés

Sommaire:

  1. Base de l'addon
  2. Créer un effet
  3. Créer une condition
  4. Créer une expression
  5. Créer un évent
  6. Créer un type

---------------------------

 

Bonjour !

 

Je vais enfin vous apprendre à créer un type pour Skript :)

 

Après avoir fait les autres tutos, vous verrez que ce n’est point compliqué.

Il suffit tout simplement de mettre le code suivant à l’endroit où vous enregistrez vos syntaxes puis de compléter par ce que vous voulez :

 

Classes.registerClass(new ClassInfo<CLASS>(CLASS.class, "NOM DE CODE").user("REGEX DU TYPE POUR LES UTILISATEURS").name("NOM DU TYPE").description("DESCRIPTION (FACULTATIVE)").usage("USAGE (FACULTATIF)").examples("EXEMPLES (FACULTATIF)").parser(new Parser<CLASS>() {

			@Override
			public String getVariableNamePattern() {
				return ".+";
			}

			@Override
			@Nullable
			public CLASS parse(String arg0, ParseContext arg1) {
				return null;
			}

			@Override
			public String toString(CLASS arg0, int arg1) {
				return null;
			}

			@Override
			public String toVariableNameString(CLASS arg0) {
				return null;
			}
		   
		}));

 

Voici comment remplir les informations :

- CLASS correspond à la classe Java de votre type (par exemple si je veux enregistrer un joueur j’utilise Player).

- NOM DE CODE est le nom de code de votre type, il doit être en minuscule et composé de lettres et chiffres uniquement.

- REGEX DU TYPE POUR LES UTILISATEURS correspond au regex du type, pour que Skript reconnaisse dans un skript quand votre type est utilisé (par exemple comme dans "parsed as X").

- NOM DU TYPE correspond au nom du type, qui sera utilisé dans certains messages d’erreurs par exemple.

- Tout ce qui est facultatif ne sert que pour la documentation, donc vous choisissez ou non de les mettre. Si vous voulez les enlever vous obtenez ceci :

 

Classes.registerClass(new ClassInfo<CLASS>(CLASS.class, "NOM DE CODE").user("REGEX DU TYPE POUR LES UTILISATEURS").name("NOM DU TYPE").parser(new Parser<CLASS>() {

			@Override
			public String getVariableNamePattern() {
				return ".+";
			}

			@Override
			@Nullable
			public CLASS parse(String arg0, ParseContext arg1) {
				return null;
			}

			@Override
			public String toString(CLASS arg0, int arg1) {
				return null;
			}

			@Override
			public String toVariableNameString(CLASS arg0) {
				return null;
			}
		   
		}));

 

Bien maintenant il faut compléter le « Parser ».

- Je vous conseille de ne pas toucher à la fonction getVariableNamePattern().

- La fonction parse(String, ParseContext) est appelé quand un utilisateur utilise "parsed as%votre type %". Le premier argument est le texte « parsé » (ça ne s’utilise pas mais blc), et ParseContext le contexte (voir https://github.com/SkriptLang/Skript/blob/master/src/main/java/ch/njol/skript/lang/ParseContext.java). Vous pouvez laisser null si vous ne voulez pas que votre type puisse être « parsé ».

- toString(CLASS, int) doit retourner un String qui correspond à votre objet. Par exemple pour un joueur le plus logique est de retourner son nom, comme ça quand l’utilisateur fera "broadcast "%player %"", le texte sera le nom du joueur. Pour ce qui est de l’argument 1, je ne sais pas exactement à quoi il correspond.

- Enfin toVariableNameString(CLASS) retourne un String qui sera retourné quand un utilisateur utilisera votre type dans un nom de variable.

 

Pour un joueur (exemple) j’obtiens finalement :

Classes.registerClass(new ClassInfo<Player>(Player.class, "player").user("player").name("player").parser(new Parser<Player>() {

			@Override
			public String getVariableNamePattern() {
				return ".+";
			}

			@Override
			@Nullable
			public Player parse(String arg0, ParseContext arg1) {
				return Bukkit.getPlayer(arg0);
			}

			@Override
			public String toString(Player arg0, int arg1) {
				return arg0.getName();
			}

			@Override
			public String toVariableNameString(Player arg0) {
				return arg0.getName();
			}
		   
		}));

 

Modifié par Nashoba
  • J'aime 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.