Récupérer les infos d'un fichier txt dans un panel d'administration



  • Bonsoir,
    j'ai une question à vous poser car je ne sais pas comment réaliser ce que je veux faire!

    Je vous explique donc:

    J'ai créé un plugin qui permet d'enregistrer dans un fichier .txt chaque fois qu'un joueur est ban, kick, mute, etc…comme son casier judiciaire! Le tout grace à des commandes que j'ai fait.
    J'ai fait une commande qui permet de lire le fichier .txt du joueur dont on a entré son nom en paramètre, et ça affiche le contenu dans le chat!

    Cependant, j'aimerai plutôt pouvoir faire en sorte que lorsque je fasse la commande, ca ne s'affiche pas dans le chat, mais dans mon panel!
    Je voulais, pour commencer, savoir si c'était possible de faire cela. Comme si faisait un couper/coller du chat vers mon panel !
    et ensuite, si oui, comment?

    Ayant l'impression de ne pas avoir été très clair, je donnerai toutes les infos qu'il faudra pour que vous puissiez m'aider!

    Cordialement,
    RageAgain



  • C'est quoi le panel ?



  • Ca ressemble à ca :

    Et je voudrai donc, comme expliqué dans l'image, pouvoir afficher le .txt dans une sorte de cadre sur le ce gui du panel et que ca ne s'affiche pas dans le chat!

    Je pensais, je peux pas faire en sorte de récupérer tout le .txt dans une variable sur mon plugin et ensuite, appelez cette variable grace à une commande dans le panel?
    Si j'utilise une JFrame UnDecolorated non redimensionnable et non bougeable que je met comme le cadre et que ce cadre affiche le .txt récupéré, ca pourrait fonctionner?


  • Administrateurs

    Il faut passer par des paquets. Lorsque le joueur appuie sur la touche, il envoie un paquet au serveur. Le serveur vérifie que le joueur a accès à la fonctionnalité, si oui il renvoie un paquet avec le contenu du fichier. Lorsque le client reçoit le paquet réponse, il ouvre le gui avec le contenu du paquet.



  • Mais j'ai un panel menu que j'ouvre avec la touche "9", et depuis là, je clique sur le sous-menu "Casiers des joueurs" !
    Ensuite, j'arrive sur le panel que j'ai montré en photo!
    En sachant que c'est une commande de mon plugin qui affiche le .txt, comment fonctionne le paquet dans ce cas?

    Car le fichier .txt se trouve dans les dossiers de mon serveur "plugins/casierDesJoueurs/world/fichier.txt"!
    Tandis que mon panel se trouve dans le dossier "mod" de mon client!

    Je peux depuis mon panel aller lire les fichiers qui se trouve dans le dossier des plugins cité ci-dessus?

    Et tant qu'on y est, je n'ai jamais trouvé de tutoriels expliquant bien le système des paquets… 😕 Quelqu'un aurait un bon tutoriel?



  • Tutoriel sur les paquets : http://www.minecraftforgefrance.fr/showthread.php?tid=1118

    Il te faut une variable String casier que tu affiches dans la methode drawScreen() si celle ci est différente de null.
    Lorsque tu cliques sur le bouton "Voir le casier de", tu envoie un paquet au serveur avec le nom du joueur concerné.
    Le serveur reçoit le paquet et envoie a son tour un paquet qui contient le contenu du fichier txt que tu souhaite affiché.
    Le client reçoit le paquet, vérifie si le gui est ouvert via Minecraft.getMinecraft().currentScreen instanceof TonGUI
    Si c'est le cas, tu fais ((TonGUI)Minecraft.getMinecraft().currentScreen).setCasier(le contenu de ton paquet).

    Quand tu parles de plugins, tu veux dire un équivalent de Bukkit ?
    Parce que vu que tu as besoin de GUI, autant passer entièrement par forge.



  • Je peux pas avoir une réponse plus précise! ca c'est sur! 😉 merci beaucoup!
    je lis ce tuto quand j'ai le temps et je viendrai dire quoi ici quand j'aurai fini 😉

    encore merci 😉 Je vois un peu maintenant comment tout va fonctionner rien que par l'explication faites! 😉

    EDIT: Oui, c'est un plugin bukkit! J'aimerai justement avoir une sorte de bdd en .txt dans le dossier plugin!
    Parce que si je fais avec les paquets, où vont se trouver mes .txt sur mon serveur?

    Tandis que là, c'est clair ! je vais dans plugin -> casierDesJoueurs -> world et puis j'ai mes fichiers!



  • Tu peux enregistrer ton fichier txt où tu veux 🙂 C'est toujours du Java 😉
    Après utiliser du .txt comme structure de donnée c'est compliqué.
    Pourquoi ne pas passer par du JSON ?



  • Sinon avec java tu peux pas stocker des info dans une base de donné mysql et après tu modifie ton plugin ?
    ce serai pas plus simple ?



  • Avec une base de donnée SQL, tu perds l'avantage de pouvoir éditer tes données à la main.
    Ensuite les API SQL sont très lourde a mettre en place par rapport aux API JSON.
    Vis a vis de la quantité de données a traiter et du type de données a stocker, je ne pense pas que les structures de données relationnelle soit rentable.



  • Je n'ai, pour commencer, jamais appris à passer par du JSON même si, a supposer, ca ne doit pas être bien compliqué!
    Et du MySQL pour ce qui est à afficher ne servirait absolument à rien et ca serait tout simplement 10x plus compliqué alors qu'on peut faire plus simple 😄

    Ceci dit, dans ce cas, le .txt convient bien je trouve! Personne à part moi n'aura un accès direct aux fichiers! et ce n'est quand même que pour écrire et afficher des lignes qui sont tout le temps les mêmes!

    Pour un gros exemple, voila a quoi ressemble mon .txt qui est en faites, un .cj ! 🙂
    Je crois qu'il n'y a pas besoin de passer par du plus compliqué, si?

    En tout cas, le système de packets a du mal à rentrer dans mon crane…je ne comprend pas très bien tous les systemes de IMessage et tout ça... 😕 Faut que je relise et que j'arrive vraiment à voir comment ça fonctionne!



  • Je suis d'acord avec Blackout, pour ce genre d'opérations le JSON est approprié et c'est n'est pas long ou dur a comprendre 😉



  • D'accord mais après, pour l'écriture ou la lecture?
    Comment ca se passe?



  • Minecraft Forge possède l'API GSON, une API développée par google pour faire du JSON.
    Tu peux trouver le user guide officiel ici : https://sites.google.com/site/gson/gson-user-guide
    Et la Javadoc ici : http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html

    Il y a l'air d'avoir un tuto assez simple ici : http://howtodoinjava.com/2014/06/17/google-gson-tutorial-convert-java-object-to-from-json/

    L'écriture et la lecture sont donc assez simple, et au moins, tu n'as plus a te soucis de la performance et de la mise en forme.



  • Blackout!
    J'ai besoin de toi! j'ai jamais autant calé sur un problème!
    Les histoires de packets, j'y comprend rien!

    Parce que je suis désolé, mais le tuto j'ai vraiment du mal à comprendre! 😞
    Tu saurais m'écrire genre un bout de code en relation avec ce que je veux faire que je voie un peu le fonctionnement? stp

    PS: Bien sur, n'importe qui qui s'y connait peut aussi le faire hein' :')



  • Ajoute moi sur Skype, pseudo : EyZox 😉
    J'ai pas pu répondre à ton MP, tu as desactivé ta messagerie.



  • Voila, j'ai envoyé une demande 🙂 Merci beaucoup !

    Je savais pas que j'avais désactivé ma messagerie O.o