Coeur du serveur.
Ce plugin s'occupe de toute la synchronisation entre les données des joueurs et la base de données SQL. Il s'assure du bon fonctionnement des serveurs entre eux.
Important
Tous les plugins de Hashtek doivent impérativement utiliser Tekore.
Vous devez impérativement mettre le .jar dans le dossier plugins
de votre serveur.
Pour utiliser Tekore, vous devez stocker une instance de ce dernier à la racine de votre plugin.
Exemple :
public class Test extends JavaPlugin {
private Tekore core;
@Override
public void onEnable()
{
try { // Important !
this.core = Tekore.getInstance();
} catch (NullPointerException exception) {
System.err.println("Tekore failed to load. Stopping.");
this.getServer().shutdown();
return;
}
}
public Tekore getCore()
{
return this.core;
}
}
Important
Initialisez toujours Tekore avec un bloc try/catch
as cas-où Tekore ne se charge pas correctement
(à cause d'une mauvaise configuration par exemple).
Tekore#getRanks()
: Renvoie tous les ranks existants
Afin de centraliser les logs (et peut-être dans le futur faire un historique des logs), vous devez utiliser l'instance de HashLogger présente dans le Tekore.
Il s'obtient avec la fonction Tekore#getHashLogger()
.
Voir l'exemple ci-dessous.
La classe PlayerData
est une classe stockant l'intégralité des données des
joueurs. Cette classe est la raison principale de pourquoi nous avons fait
ce plugin.
Vous vous servirez de Tekore pour récupérer les données des joueurs, les modifier et les enregistrer dans la base de données.
Dans un fichier d'event par exemple, voici comment récupérer les données des joueurs, les modifier et les enregistrer dans la base de données :
public class JoinEvent implements Listener, HashLoggable {
private Tekore core;
private HashLogger logger; // Logger du Tekore
public JoinEvent(Tekore core)
{
this.core = core;
this.logger = this.core.getHashLogger(); // Récupération du logger du Tekore
}
@EventHandler
public void onJoin(PlayerJoinEvent event)
{
Player player = event.getPlayer();
PlayerData playerData = this.core.getPlayerData(player); // Récupération des données
/* Modifiez ce que vous voulez */
// Mise à jour des données dans la base de données.
try {
this.core.getAccountManager().updatePlayerAccount(playerData);
} catch (SQLException exception) {
this.logger.critical(this, "Failed to update PlayerData.", exception);
}
}
}
Tip
Il est fortement recommandé de faire passer l'instance de Tekore dans le constructeur de la classe, et non pas de rendre l'instance statique à la racine du plugin.
Note
Lorsqu'un joueur se déconnecte, ses données sont automatiquement mises à jour dans la base de données.
setRank()
: Met à jour le rank du joueur
Caution
Toutes les fonctions qui ne sont pas écrites ci-dessus ne sont pas censées être utilisées par autre chose que le Tekore !
Pour que le plugin puisse fonctionner, il a besoin d'une base de données avec une structure précise.
Vous aurez besoin de :
- MySQL
- PhpMyAdmin
- Apache
Une fois ces logiciels installés, importez la base de données
hashtekdb.sql
avec PhpMyAdmin.
loggerLevel
: Niveau de log (voir HashLogger)
DB_DATABASE
: Nom de la base de données (hashtekdb
)
DB_HOST
: IP de la base de données (127.0.0.1
pour du local)
DB_PORT
: Port à utiliser (par défaut 3306
)
DB_USER
: Nom d'utilisateur (root
par défaut)
DB_PASSWORD
: Mot de passe (rien par défaut)
Important
Vous devez créer le .env
à la racine du serveur.