Schémas

Les schémas sont des fichiers avec l'extension: .shma. Un schéma représente une description en plusieurs ligne comprenant des variables ou des lignes optionnelles.

La classe Schema

La classe Schema représente un schéma.

public class Schema {
    public Schema(final File file) throws IOException, BadExtensionException, MalformedSchemaException {
        .....
    }
    public String[] evaluate(int line_length, Player player);
}

La classe est simple, elle est composée d'un constructeur et d'une seule méthode. Pour instancier un Schema il suffis de donner un fichier avec l'extension .shma.

La méthode evaluate évalue la valeur des lignes du Schema. Toutes les lignes seront tronquées pour que leur longeur soient inférieur ou égale au paramêtre line_length. Il faut aussi un joueur (paramêtre: player) qui permettra d'évaluer les variables du Schema.

Fichier shma

Le fichier d'un Schema a toujours l'extension 'shma'. Un fichier shma suit les rêgles suivante:

  • Utilisez '#' pour commenter une ligne

  • Les couleurs peuvent être ajoutées en utilisant '§'.

  • Pour ajouter une ligne uniquement dans une certaine condition, commencez cette ligne par {?condition?}. La ligne ne s'affichera que si 'condition' est vraie.

  • Pour insérer une variable dans votre ligne, ajoutez {variable}

  • Si vous souhaitez ajouter le caractère '{' ou '}', spécifiez-les avec '\{' ou '\}'.

Il existe trois fichiers Schema natif:

  • main-scoreboard.shma

  • tab-scoreboard-footer.shma

  • tab-scoreboard-header.shma

main-scoreboard.shma

Ce fichier représente le scoreboard qui se trouve à droite de l'écran.

tab-scoreboard-header.shma

Ce fichier représente le scoreboard qui se trouve au dessus de la liste des joueurs.

tab-scoreboard-footer.shma

Ce fichier représente le scoreboard qui se trouve en dessous de la liste des joueurs.

Fonctionnement du Schema

Ainsi le fichier 'shma' permet l'ajout de variables et de lignes conditionnelles.

Voici un exemple de fichier 'shma' (ici le fichier main-scoreboard.shma):

#===========================================
#           MAIN SCOREBOARD
#===========================================
#FR:
#Utilisez '#' pour commenter une ligne
#Le schéma est limité à 15 lignes de tableau des scores. Si vous en avez plus de 15, elles ne seront pas affichées.
#Les couleurs peuvent être ajoutées en utilisant '§'.
#Pour ajouter une ligne uniquement dans une certaine condition, commencez cette ligne par {?condition?}
#   La ligne ne s'affichera que si 'condition' est vraie.
#Pour insérer une variable dans votre ligne, ajoutez {variable}
#Si vous souhaitez ajouter le caractère '{' ou '}', spécifiez-les avec '\{' ou '\}'.
#EN:
#Use '#' to comment a line
#The schema is limited to 15 lines of scoreboard. If their is more than 15 lines, they won't be shown.
#Colors can be made by using '§'. 
#To add a line only to a certain condition begin that line with {?condition?}
#   The line will only show if 'condition' is true.
#To put a variable in your line add {variable}
§a»§b{servername}§a«
§b§7------------------
§a{gamename}
§a(§b{playercount}§7/§b{slots}§a)

§aHost » §b{host}
§aMode §7» §b{gamemode}
§aKills §7» §b{kills}
{?hasgroups?}§aGroupe §7» §b{groupsize}
§aTemps §7» §b{time}
§aBordure §7» §b±{bordersize}

§a{serverid}
§b§7------------------

Ici toute les lignes commençant par '#' seront ignorées.

Les variables {servername}, {host}, {gamename}... seront remplacées par leur valeurs au moment de l'évaluation.

La ligne commençant par {?hasgroups?} ne s'affichera que si le mode de jeu est un mode de jeu implementant l'interface Groupable (C'est a dire un mode de jeu avec une limite de groupe).

Les variables et les conditions de lignes

Variable:

Une variable doit être mise entre crochet. Ainsi: {test}, fait référence à la variable de nom "test". Les nouvelles variables doit être définie via le SchemaProvider.

Condition de ligne

Une condition de ligne doit être mise entre crochet et point d’interrogation. Ainsi {?test?}, fait référence à la condition de ligne de nom "test". La condition de ligne doit être au tout début de la ligne.

Une condition peut être inversée. La condition {?test?} peut être inversée de cette manière: {?!test?}. Ainsi la ligne sera active quand "test" sera fausse.

Conditions et variables natives

Il existe quelque condition et variables disponibles avec l'API. Rien ne vous empêche d'en ajouter d'autre.

Variable:

Variable
Usage

tps

Renvoie le TPS (Tick per second) du serveur. Avec une précision de deux chiffres après la virgule.

gamemode

Renvoie le nom du mode de jeu choisi.

gamename

Renvoie le nom de la partie.

ping

Renvoie le ping du joueur en ms.

host

Renvoie le nom de l’hôte de la partie. Si il n'y en a pas: renvoie 'Unknown'.

serverid

Renvoie l'ip du serveur comme indiqué dans le fichier de configuration: serverapi.serverconfig.Serverid

discordlink

Renvoie le code du lien discord comme indiqué dans le fichier de configuration: serverapi.serverconfig.DiscordLink.

playercount

Renvoie le nombre de joueur vivant dans la partie (ne compte pas les spectateurs et les joueurs qui ont rejoins après le début de la partie).

slots

Renvoie le nombre de slots de la partie.

kills

Renvoie le nombre de kills du joueur.

groupsize

Renvoie la taille des groupes pour la partie. Si le mode de jeu n’implémente pas l'interface Groupable alors renvoie 0.

time

Renvoie le temps de la partie. Au format: mm:ss.

bordersize

Renvoie le rayon de la bordure.

servername

Renvoie le nom du serveur. Comme indiqué dans le fichier de configuration: serverapi.serverconfig.servername

Conditions de ligne:

Condition
Usage

hasgroups

Vraie si le mode de jeu permet les groupes. Et fausse sinon

Last updated