• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Unsolved Packets entre Forge et Spigot

    Support pour les moddeurs
    1.12.2
    2
    2
    93
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • FeedBack
      FeedBack last edited by

      Hey !
      J’ai besoin de faire une communication entre Forge et Spigot via packets mais je n’y arrive pas vraiment 😕

      J’ai regardé ce topic : https://www.minecraftforgefrance.fr/topic/6372/communication-bidirectionnelle-forge-spigot

      Malheureusement, je n’ai pas trouvé comment faire.
      J’ai compris qu’il fallait faire des packets CustomPayload mais comment ?

      Merci pour votre aide 🙂

      S 1 Reply Last reply Reply Quote 0
      • S
        sportday24 @FeedBack last edited by sportday24

        @feedback Salut

        =============== Cote Forge===============-|
        Enregistrement du chanel

        SimpleNetworkWrapper networML = NetworkRegistry.INSTANCE.newSimpleChannel("Nom Du Chanel");
        networML.registerMessage(GenericMessage.Handle.class, GenericMessage.class, 80, Side.CLIENT);
        

        (si tu as des bugs des crash quant tu recoit un msg change la valeur [80], par une autre)

        GenericMessage.class

        import io.netty.buffer.ByteBuf;
        import io.netty.util.CharsetUtil;
        import net.minecraftforge.fml.common.network.ByteBufUtils;
        import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
        import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
        import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
        
        public class GenericMessage implements IMessage {
        
            public static class Handle implements IMessageHandler<GenericMessage, IMessage> {
        
                @Override
                public IMessage onMessage(GenericMessage message, MessageContext ctx) {
                    OnReceiveMsg.receive(message.getMessage());
                    return null;
                }
            }
        
            String s;
        
            public GenericMessage() {
        
            }
        
            public GenericMessage(String s){
                this.s = s;
            }
        
            @Override
            public void fromBytes(ByteBuf buf) {
                s = buf.toString(CharsetUtil.UTF_8);
            }
        
            public String getMessage() {
                return s;
            }
        
            @Override
            public void toBytes(ByteBuf buf) {
                ByteBufUtils.writeUTF8String(buf,s);
            }
        }
        

        Pour envoyer un message vers spigot

        networML.sendToServer(new GenericMessage("MSG"));
        

        Recuperer un msg envoyer depuis spigot
        OnReceiveMsg.class

        public class OnReceiveMsg {
        
            public static void receive(String msg) {
                String[] data = msg.split(";");
                for(String text: data){
                    System.out.println(text);
                }
            }
        
        

        =============== Cote Spigot ===============

        Enregistrement du chanel

         Bukkit.getMessenger().registerOutgoingPluginChannel(plugin, "Nom Du Chanel");
         Bukkit.getMessenger().registerIncomingPluginChannel(plugin, "Nom Du Chanel", new PacketListener());
        

        Pour envoyer un message vers Forge

        player.sendPluginMessage(plugin, "Nom Du Chanel", text.getBytes());
        

        Recuperer un msg envoyer depuis Forge
        PacketListener.class

        import org.bukkit.entity.Player;
        import org.bukkit.plugin.messaging.PluginMessageListener;
        
        public class PacketListener implements PluginMessageListener {
        
            @Override
            public void onPluginMessageReceived(String channel, Player player, byte[] bytes) {
                try {
                if (channel.equals("Nom Du Chanel")) {
                    String info = new String(bytes);
                    String[] data = info.split(";");
                }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        

        /!\ Le nom du chanel doit être le même dans spigot et forge.

        1 Reply Last reply Reply Quote 0
        • 1 / 1
        • First post
          Last post
        Design by Woryk
        Contact / Mentions Légales

        MINECRAFT FORGE FRANCE © 2018

        Powered by NodeBB