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.
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:
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:
hasgroups
Vraie si le mode de jeu permet les groupes. Et fausse sinon
Last updated