Serveur Minecraft avec base de donnée MySQL (inventaire, contenu des coffres)

Trades

Aventurier
9 Décembre 2011
5
0
1
34
Bonjour a tous,

Je cherche a savoir si il existe ou si il est possible de réaliser un serveur Minecraft avec une base de donnée MySQL derrière. Ce que je voudrais dans cette base ce sont au minimum l'inventaire du joueur ainsi que les différents conteneur et leur contenu (j'entend par la four, coffre, etc.). Avec bien entendu la possibilité de modifier cette base et de la répercuter dans le jeu.

Mes recherches m'ont amener a jouer avec les fichiers NBT (Named Binary Tag) de Notch afin de puiser différentes données dans ceux ci. Les players.dat en particulier. Mais bon les puiser c'est bien mais si on peut pas les modifier lorsque le serveur tourne ... c'est pas vraiment ça ... (cf. je ne sais plus ou).

Du coup je me suis tourner vers Bukkit mais j'aimerais me passer de ce genre de solution qui fait dépendre le serveur d'une équipe de développeur ... et il est apparemment impossible de réaliser ça avec Bukkit non ?

Je vais résumer en question ça sera plus simple :)

- Existe t-il un moyen de réaliser un serveur conservant ses données avec une base MySQL (ou autre) a partir du serveur Officiel ?

- Existe t-il un moyen de réaliser un serveur conservant ses données avec une base MySQL (ou autre) a partir d'un serveur non-officiel ?

Ce que je désire: pouvoir manipuler les objets se trouvant dans les inventaires et coffres etc. a l’extérieur du jeu.

Voila en espérant m’être fait comprendre :p
 

Kemsey

Aventurier
31 Mars 2011
79
0
1
27
soul-arcadia.jimdo.com
J'avais une interface MySQL et donc je peut te le dire >> NON !
Tout simplement que MySQL aide pour les fichier statique et vue que minecraft est loin d’être statique !

Pour les item déplacement, il existe surement un plugin mais pas de dossier minecraft
 

Ptibiscuit

Modérateur sucre vanillé
11 Mars 2011
620
25
13
Concernant la totale synchronicité entre les inventaires, les blocs, les contenus de bloc ayant l'interface Inventory, ca n'existe pas et ça n'existera jamais pour des raisons de performances. Si le serveur doit enregistrer des milliers, des milliards de mouvements par secondes sur une Bdd, celle-ci ne s'en sortira pas. Au pire, tu aurais une sauvegarde Bdd toutes les minutes, ce qui se fait actuellement lors d'un /save ou autres.
Si jamais tu veux modifier des trucs, tu dois le faire directement dans les variables du jeu, au moyen d'un Plugin bukkit.
 

Trades

Aventurier
9 Décembre 2011
5
0
1
34
Merci de vos réponses.

C'est bien dommage mais pense avoir tout de même une solution a mon problème.

L’idée est simple. Une application qui se trouvera entre la communication de mon serveur et du client.
Serveur [1234]<> Application [25565] <> Client
En gros de base mon application renverra toute les données du client vers mon serveur et inversement. A partir de la je pourrais manipuler certaine donnée en particulier et donc les traiter en dehors de mon serveur. Et même pourquoi pas créer de nouvelle commande.

Donc reste a trouver les différents protocole de MC et de gérer ceux permettant d'ouvrir un coffre et lister le contenu, de mettre un objet a l’intérieur etc. puis de les "intercepter" et de les gérer a ma sauce via une base SQL.

Enfin j'en suis au début ... si cette idée intéresse quelqu'un et bien qu'il me contacte.
 

Ptibiscuit

Modérateur sucre vanillé
11 Mars 2011
620
25
13
Tu peux utiliser des plugins, qui te permettront de faire les manipulations que tu décris. Et si jamais tu veux checker les échanges de Packet entre serveur et client, tu peux modifier les sources de Bukkit ou de Minecraft.net pour créer un évènement qui transcris tous les packets dans ta BDD.
 

Trades

Aventurier
9 Décembre 2011
5
0
1
34
Merci Ptibiscuit mais je ne veux pas être dépendant d'une team de développeur avec des outils que je ne maîtrise pas.

Pour les intéressés, j'avance bien dans le développement de mon outils.
Je parviens a l'aide d'une commande lancé a partir du "chat" (pour le moment /magic) a ouvrir une fenêtre de transaction du même genre que celle des "Chest" dans le client puis a y récupérer les items déposés.
Reste a enregistrer le tout dans une base SQL qui sera MySQL. Et a charger les items déjà présent dans la base de donnée dans la fenêtre de transaction. (il y a du boulot ...)

Mon système sera évolué par la suite vers un système de coffre "extérieur" au jeu. Ou un coffre sera accessible par /commande nom_du_coffre (ex: /magic coffre01).

Si je développe cet outils c'est dans l’idée de créer mon serveur de jeu car ceux déjà présent ne convienne pas a "mon esprit du jeu". Totale liberté sans extravagance (stop au boutique qui encombre le paysage, aux items inutiles, etc.). Je veux en quelque sorte déplacer l’économie en dehors de Minecraft, garder une certaine "sécurité" sur le serveur et respecter l’intégrité du serveur officiel.

Avis aux créatifs, aux développeurs (C/CPP/PHP-Frameworker/Ajax/SQL) et aux personnes désireuses d'offrir une autre expérience du multijoueur sur Minecraft, qu'on me contacte par MP afin de transmettre mon mail.
 

Liberateur

Graphicraft !
23 Juillet 2011
196
13
13
www.graphicraft.fr
Bonjour,

Mon serveur fonctionne avec MySQL et n'as aucun soucis pour le moment (moyenne de 10 à 20 joueurs co). Je n'utilise que certains plugins dans la liste ci-dessous, mais certains sont ce que tu recherche :

- InventorySQL : Inventaire des joueurs en SQL
- Logbloc : Log de tous les bloc, coffres, pouvoir faire des rollbacks... SQL
- PermissionEX : Gérer les permissions des joueurs en SQL
- Autre plugins : Recherche bukkit "SQL"

Tout ceci me permet d'avoir un Backoffice accessible par tous mes admins et modos =).
 

Ptibiscuit

Modérateur sucre vanillé
11 Mars 2011
620
25
13
Le problème est que pour la plupart des plugins qui utilisent des Bdd, ils ne font que scanner la Bdd au lancement du serveur, puis enregistres les données au fur et à mesure. Si tu changes quelque chose dans la Bdd, rien ne se passera car il faudra relancer le plugin.
 

Trades

Aventurier
9 Décembre 2011
5
0
1
34
Le problème est que pour la plupart des plugins qui utilisent des Bdd, ils ne font que scanner la Bdd au lancement du serveur, puis enregistres les données au fur et à mesure. Si tu changes quelque chose dans la Bdd, rien ne se passera car il faudra relancer le plugin.
Liberateur tu peux me confirmer ça sur ton serveur ?

Car oui je désire répercuter la BDD sur le serveur en "live".

Edit: Super site, très bon travail ! Et merci pour la découverte de WarpFramework ;)
Re Edit: Comme je l'imagine certain de ces plugins ne sont plus ou rarement mis a jours ...
 

Liberateur

Graphicraft !
23 Juillet 2011
196
13
13
www.graphicraft.fr
Et non mon ptibiscuit x), si je modifie la monnaie d'un de mes joueurs par mon backoffice (sans passer par une console ou autre juste une requête) le changement s'effectue immédiatement, néanmoins pour mes Jobs, Grades, et Inventaire, le joueur doit se déco/reco c'est tout :).

Les plugins font une requête à chaque fois, sa peut paraitre lourd et saturer la db mais sur mon serveur toute la monnaie ainsi que chaque bloque à un log et je n'ai pas de soucis particulier. Pour la mise à jour des plugins, sa dépend la plupart sont à jour et présente le choix de stockage fichier ou MySQL.

Merci pour mon site, je viens de le changer :p.

EDIT : Si besoin, n'hésitez pas à me questionner. Je reviens plus tard, après les requêtes sql, je m'attaque aux prototypes de Buche de Noël pour mes invités x).
EDIT : Plus d'oeufs... On verra plus tard, je suis dispo ^^