-
Notifications
You must be signed in to change notification settings - Fork 1
French
Pour utiliser la lib, vous devez l'ajouter à votre projet.
Pour ce faire rien de plus simple, vous pouvez passer par gradle.
Editez votre build.gradle
pour y ajouter:
repositories{
maven{
name = "CurseForge"
url = "https://minecraft.curseforge.com/api/maven/"
}
}
dependencies {
compile 'simpledatabasemanager:simpledatabasemanager:VERSION'
//For example: compile 'simpledatabasemanager:simpledatabasemanager:2.0'
}
Veillez à bien remplacer les "-" dans le numéro de version par des ":". Et c'est tout ! Désormais, passons au code:
Premièrement, vous allez devoir get la base de donnée via son nom (la création se fait automatiquement si vous gettez une db inexistante), pour ce faire:
Database db = Databases.getDatabase("votre_database");
Nous avons donc créer une instance de notre base de donnée nommée "db".
C'est bien beau d'avoir une base de donnée, mais elle ne contient pour le moment rien du tout ! Pour lui assigner des valeurs vous pouvez vous y prendre ainsi:
Database db = Databases.getDatabase("votre_database");
db.setString("stringtest", "mon string de test");
db.setInteger("integertest", 3);
db.setDouble("doubletest", 2.0);
db.setFloat("floattest", 47.9f);
Simple ? Non ? En fait, c'est un peu comme les HashMap, ça fonctionne avec un système de valeur, assignée à une clé. Toutes les méthodes de set contienne en premier argument la clé, et en deuxième argument la valeur !
Bon, maintenant qu'on sait stocker des valeurs, il faut bien savoir les récupérer... Sinon le système serait inutile. Et bien c'est tout simple:
Database db = Databases.getDatabase("votre_database");
String str = db.get("stringtest").asString(); // str sera égal à "mon string de test"
int entier = db.get("integertest").asInteger(); // entier sera égal à 3
double d = db.get("doubletest").asDouble(); // d sera égal à 2.0
float f = db.get("floattest").asFloat(); // f sera égal à 47.9f
Bien entendu, le nom des variables dans lesquelles vous lisez les valeurs n'a aucune importance (je préfère le préciser, car avec certains :rolling_eyes:
Comme je vous l'ai dit, chaque joueur possède une database qui lui est dédiée, vous pouvez donc get cette fameuse database comme ceci:
EntityPlayer player = /* Votre instance d'EntityPlayer */;
Database playerdata = Databases.getPlayerData(player);
Après comme c'est une database comme les autres, vous vous en servez, bah, comme les autres. x)
Comme dit dans le paragraphe de présentation, SimpleDatabaseManager gère aussi la synchronisation entre le client et le serveur ! Voici comment l'utiliser;
La synchronisation des playerdata est gérée automatiquement le client à accès en lecture au playerdata du joueur lui étant assigné. Pour accéder DEPUIS LE CLIENT à votre playerdata, c'est comme ça:
DatabaseReadOnly playerData = ClientDatabases.getPersonalPlayerData();
Contrairement aux player-datas les base de données ne sont pas synchronisées automatiquement, bah oui ! Le client n'a pas besoin de tout savoir ! (Encore moins si vous y mettez des infos sensibles !) Cela ne veut pas pour autant dire que ce n'est pas possible, c'est simplement vous qui devez choisir quelles base de données synchroniser.
Vous pouvez partager une base de donnée à tous les joueurs de la sorte:
SyncedDatabases.add("ma_db"); // Ajouter une db à la synchro automatique.
SyncedDatabases.remove("ma_db"); // Retirer une db de la synchro automatique.
Les base de données présentes seront donc accessible en lecture par tous les joueurs du serveur. Vous pouvez bien entendu comme montré ci-haut retirer une base de donnée de ce programme. Attention toutefois, quand vous retirez une base de donnée, elle est toujours présente sur le client à l'état où elle était avant que vous ne la désynchronisiez.
Pour des raisons de sécurité de vos données, vous voulez rendre accessible une base de donnée par seulement certains joueurs en particulier ? Pas de souci. Vous pouvez envoyer une base de donnée à un joueur comme ceci:
EntityPlayerMP player = /* Votre instance d'EntityPlayerMP */;
Database db = Databases.getDatabase("ma_db");
SyncedDatabases.sendDatabaseToPlayer(db, player);
Depuis le client, vous ne pouvez pas et ne devez surtout pas tenter d'accéder à une base de donnée via Databases.getDatabase(nom). Il faut passer par ClientDatabases.getDatabase(nom). A titre d'exemple:
DatabaseReadOnly db = ClientDatabases.getDatabase("ma_db");