MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Communication forge spigot

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    3 Messages 2 Publieurs 786 Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • I Hors-ligne
      INeoxz13700
      dernière édition par robin4002

      Bonjour j’essaye de créer une communication entre forge et spigot pour transmettre des données depuis mon plugin à mon mod pour ça j’utilise les packets la communication marche très bien cependant mon mod ne reçoit aucun donnée du packet envoyé par le plugin

      mes classes:

      côté forge :

      public class SpigotDataPacket implements IMessage {
      	
          private String text;
          
          public SpigotDataPacket() {
          	System.out.println("IT'S A TEST OK");
          }
      
          
          public SpigotDataPacket(String text) {
          	System.out.println("IT'S A TEST OK");
          	this.text = text;
          }
      
          @Override
          public void fromBytes(ByteBuf buf) {
              text = ByteBufUtils.readUTF8String(buf);
          }
      
          @Override
          public void toBytes(ByteBuf buf) {
              ByteBufUtils.writeUTF8String(buf, text);
          }
      
          public static class Handler implements IMessageHandler<SpigotDataPacket, IMessage> {
      
              @Override
              public IMessage onMessage(SpigotDataPacket message, MessageContext ctx) {
              	
                  System.out.println(String.format("Received %s", message.text));
                 
                  return null; // no response in this case
              }
          }
      }
      
      

      côté spigot

      public static void startDataTransmission() {
      		if(startedDataTransmission == true) return;
      		
      		startedDataTransmission = true;
      		
      		BukkitScheduler scheduler = Bukkit.getPluginManager().getPlugin("Craftyourliferp-Core").getServer().getScheduler();
              scheduler.scheduleSyncRepeatingTask(Bukkit.getPluginManager().getPlugin("Craftyourliferp-Core"), new Runnable() {
                  @Override
                  public void run() {
                  	System.out.println("Sending data to client");
                  	
                      Player[] players = Bukkit.getOnlinePlayers();
                      
                      if(players.length > 0) {
                      	
                      	for(int p = 0; p < players.length; p++)
                      	{
                      		BigDecimal s = main.es.getUser(players[p]).getMoney();
                      		String msg = "PMONEY|" + s;
                      		ByteArrayDataOutput r = ByteStreams.newDataOutput();
                      		r.writeByte(5);
                      		r.writeChars(msg);
                      		System.out.println("§4" + r.toByteArray());
                      		players[p].sendPluginMessage(Bukkit.getPluginManager().getPlugin("Craftyourliferp-Core"), "CYLRP", r.toByteArray());
                      	}
                      }
                  }
              }, 0L, 20L * 60);
      

      Logs côté client

      [17:58:15] [Client thread/INFO] [STDOUT]: [fr.craftyourliferp.network.SpigotDataPacket$Handler:onMessage:37]: Received 
      [17:59:14] [Client thread/INFO] [STDOUT]: [fr.craftyourliferp.network.SpigotDataPacket$Handler:onMessage:37]: Received 
      [18:00:14] [Client thread/INFO] [STDOUT]: [fr.craftyourliferp.network.SpigotDataPacket$Handler:onMessage:37]: Received
      

      Comme vous pouvez le voir la communication marche parfaitement le côté client reçoit bien le packet envoyé depuis spigot mais je n’arrive pas récupérer les données du packet.

      merci d’avance à ceux qui peuvent m’aider.

      1 réponse Dernière réponse Répondre Citer 0
      • AymericRedA Hors-ligne
        AymericRed
        dernière édition par

        Salut,

        Pour pouvoir récupérer les données d’un packet envoyé par spigot (qui est un packet CustomPayload), il faut utiliser une FMLEventDrivenChannel (à register avec NetworkRegistry), et register une classe d’event sur cet FMLEventDrivenChannel (l’event à utiliser étant ClientCustomPacketEvent de mémoire).

        Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

        AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

        Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
        Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

        1 réponse Dernière réponse Répondre Citer 1
        • I Hors-ligne
          INeoxz13700
          dernière édition par

          @aymericred a dit dans Communication forge spigot [1.7.10] :

          es d’un packet envoyé par spigot (qui est un packet CustomPayload), il faut utiliser une FMLEventDrivenChan

          Merci beaucoup tu me sauves la vie!

          1 réponse Dernière réponse Répondre Citer 0
          • 1 / 1
          • Premier message
            Dernier message
          Design by Woryk
          ContactMentions Légales

          MINECRAFT FORGE FRANCE © 2024

          Powered by NodeBB