Résolu 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/ekybkzEt sur l’instance serveur:
http://prntscr.com/ekybsqMerci à vous :)</mymessage,>
-
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
-
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 -
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