Problème avec les packets du Network



  • Salut à tous, j'ai un problème.
    Lorsque je joue en solo, mon packet fonctionne très bien, mais lorsque je lance une instance serveur cette instance ne semble pas recevoir le paquet.

    Classe principale:

    public static SimpleNetworkWrapper network;
    
    @EventHandler
    public void init(FMLInitializationEvent event) {
    if (event.getSide().isClient()) {
    FMLCommonHandler.instance().bus().register(new RenderGameOverlayHandler());
    MinecraftForge.EVENT_BUS.register(new RenderGameOverlayHandler());
    
    network = NetworkRegistry.INSTANCE.newSimpleChannel("MyChannel");
       network.registerMessage(MyMessage.Handler.class, MyMessage.class, 0, Side.SERVER);
    }
    }
    

    MyClass.java:

    public class MyMessage implements IMessage {
    private String text;
    
    public MyMessage() {}
    
    public MyMessage(String text) {
    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 <mymessage, imessage="">{
    @Override
    public IMessage onMessage(MyMessage message, MessageContext ctx) {
    System.out.println(String.format("Received %s from %s", message.text,
    ctx.getServerHandler().playerEntity.getDisplayName()));
    return null;
    }
    }
    }
    

    Mon event (qui fonctionne, il modifie l'overlay, j'ai mis le packet la juste pour tester vite fait):

    @SubscribeEvent
    public void renderOverlayText(RenderGameOverlayEvent event) {
    Minecraft mc = Minecraft.getMinecraft();
    
    PrisonRP.network.sendToServer(new MyMessage("test"));
    }
    

    Preuve que ça fonctionne en solo:
    http://prntscr.com/ekybkz

    Et sur l'instance serveur:
    http://prntscr.com/ekybsq

    Merci à vous :)</mymessage,>


  • Administrateurs

    Salut,
    Tout ce qui concerne les paquets ne devrait pas être dans la condition if (event.getSide().isClient()) {



  • @'robin4002':

    Salut,
    Tout ce qui concerne les paquets ne devrait pas être dans la condition  if (event.getSide().isClient()) {

    Merci pour ta réponse, cependant j'avais essayé avec un évent EntiryJoinWorldEvent et encore une fois ça fonctionnait sur le client mais pas sur l'instance du serveur malgré qu'il n'y avait aucun SideOnly ni de vérification pour vérifier si c'est le côté client 😕


  • Administrateurs

    Tu peux envoyer ton code ?



  • @'robin4002':

    Tu peux envoyer ton code ?

    En fait mon network était seulement enregistré sur le client du coup ça fonctionnait pas…
    Merci grandement 😃


  • Administrateurs

    C'est ce que je t'ai dis dans mon premier message x)



  • @'robin4002':

    C'est ce que je t'ai dis dans mon premier message x)

    J'avais simplement oublié que j'enregistrais mon network sur le client side 😛