-
Tu peux écrire tout ce que tu veux, le seul truc c’est qu’il faut écrire dans l’ordre et lire dans le même ordre, tu peux très bien écrire une liste de bits, dans le tutoriel robin montre comment écrire une liste
-
@‘SCAREX’:
Tu peux écrire tout ce que tu veux, le seul truc c’est qu’il faut écrire dans l’ordre et lire dans le même ordre, tu peux très bien écrire une liste de bites, dans le tutoriel robin montre comment écrire une liste
Je vais les revoir à nouveaux, prendre des notes et mettre tous ça aux clairs se serra peut être plus simple.
Merci. -
Un petit e en trop transforme complètement le sens d’un mot.
Que viennent faire des pénis dans cette discussion ? C’est bits, pas bites x)
Je modifies toutes ces fautes x)
On est sur minecraft forge france ici, pas sur p***hub.com -
@‘Plaigon’:
Je pense que tu voulais dire des bits ?
@‘robin4002’:
Un petit e en trop transforme complètement le sens d’un mot.
Que viennent faire des pénis dans cette discussion ? C’est bits, pas bites x)
Je modifies toutes ces fautes x)
On est sur minecraft forge france ici, pas sur p***hub.comJe devrais avoir honte, l’important était de savoir de quoi on parler sans sous entendu ^^
En revoyant la vidéo, j’avais pas remarquer le passage sur le channel de paquet… Je fais bien de noter
-
Après quelques nouveaux essais pour tenter de faire communiquer une suite d’entier via les paquets, je retombe sans cesse sur cette erreur que j’ai du mal à comprendre :
[13:33:24] [Client thread/ERROR] [FML]: FMLIndexedMessageCodec exception caught io.netty.handler.codec.DecoderException: java.lang.NullPointerException at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?] at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?] at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?] at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?] at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?] at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?] at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:317) [PlayerControllerMP.class:?] at net.minecraft.client.Minecraft.runTick(Minecraft.java:1693) [Minecraft.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_91] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_91] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_91] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] Caused by: java.lang.NullPointerException at fr.jackcartersmith.ob.OBNetworkClient.fromBytes(OBNetworkClient.java:28) ~[OBNetworkClient.class:?] at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:17) ~[SimpleIndexedCodec.class:?] at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:7) ~[SimpleIndexedCodec.class:?] at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:77) ~[FMLIndexedMessageToMessageCodec.class:?] at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?] at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?] … 20 more [13:33:24] [Client thread/ERROR] [FML]: SimpleChannelHandlerWrapper exception io.netty.handler.codec.DecoderException: java.lang.NullPointerException at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[MessageToMessageDecoder.class:?] at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?] at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?] at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?] at cpw.mods.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?] at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?] at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:317) [PlayerControllerMP.class:?] at net.minecraft.client.Minecraft.runTick(Minecraft.java:1693) [Minecraft.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1039) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_91] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_91] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_91] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] Caused by: java.lang.NullPointerException at fr.jackcartersmith.ob.OBNetworkClient.fromBytes(OBNetworkClient.java:28) ~[OBNetworkClient.class:?] at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:17) ~[SimpleIndexedCodec.class:?] at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:7) ~[SimpleIndexedCodec.class:?] at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:77) ~[FMLIndexedMessageToMessageCodec.class:?] at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?] at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?] … 20 moreVoici le bout de code concerné :
private List <integer>dataArray; public OBNetworkClient() {} public OBNetworkClient(List <integer>dataArray) { this.dataArray = dataArray; } @Override public void fromBytes(ByteBuf buf){ for (int i = 0; i < 5; i++){ this.dataArray.add(buf.readInt()); } } @Override public void toBytes(ByteBuf buf){ for (int i = 0; i < 5; i++){ buf.writeInt(this.dataArray.get(i)); } }Quelqu’un aurait-il une idée sur le problème ?
(Je suppose que le programme essaie de lire une valeur Int dans le flux, mais comme elle est absente pour je ne sais qu’elle raison, il lit du null)</integer></integer>
-
Dans ta fonction fromBytes, tu essayes d’ajouter ce que tu lis à la liste dataArray, sauf que cette liste est égale à null.
-
@‘AymericRed’:
Dans ta fonction fromBytes, tu essayes d’ajouter ce que tu lis à la liste dataArray, sauf que cette liste est égale à null.
Je viens de changer
private List <integer>dataArray;par
private List <integer>dataArray = new ArrayList<integer>();Je n’ai plus l’erreur, merci.
EDIT: Je vais chercher encore un peu avant de demander de l’aide ^^</integer></integer></integer>
-
Tu peux envoyer la classe complète du paquet ?
-
@‘robin4002’:
Tu peux envoyer la classe complète du paquet ?
package fr.jackcartersmith.ob; import java.util.ArrayList; import java.util.List; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import fr.jackcartersmith.ob.blocks.ExtenderTileEntity; import fr.jackcartersmith.ob.blocks.OverriderBlockTileEntity; import fr.jackcartersmith.ob.interfaces.PhotonRecieving; import fr.jackcartersmith.ob.interfaces.PhotonSending; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; public class OBNetworkClient implements IMessage { private List <integer>dataArray = new ArrayList<integer>(); public OBNetworkClient() {} public OBNetworkClient(List <integer>dataArray) { this.dataArray = dataArray; } @Override public void fromBytes(ByteBuf buf){ for (int i = 0; i < 5; i++){ this.dataArray.add(buf.readInt()); } } @Override public void toBytes(ByteBuf buf){ for (int i = 0; i < 5; i++){ buf.writeInt(this.dataArray.get(i)); } } public static class Handler implements IMessageHandler<obnetworkclient, imessage="">{ int function; int x; int y; int z; int data_value; @Override public IMessage onMessage(OBNetworkClient message, MessageContext ctx){ try{ this.function = message.dataArray.get(0); this.x = message.dataArray.get(1); this.y = message.dataArray.get(2); this.z = message.dataArray.get(3); this.data_value = message.dataArray.get(4); }catch(Exception var8){ var8.printStackTrace(); return null; } System.out.println(this.function); System.out.println(this.x); System.out.println(this.y); System.out.println(this.z); System.out.println(this.data_value); try{ if (this.function == 1){ EntityPlayerMP player = ctx.getServerHandler().playerEntity; OverriderBlockTileEntity overrider = (OverriderBlockTileEntity)player.worldObj.getTileEntity(this.x, this.y, this.z); if (overrider != null && overrider instanceof OverriderBlockTileEntity){ overrider.currentCharge = this.data_value; } } if (this.function == 3){ EntityPlayerMP player = ctx.getServerHandler().playerEntity; ExtenderTileEntity extender = (ExtenderTileEntity)player.worldObj.getTileEntity(this.x, this.y, this.z); if (extender instanceof ExtenderTileEntity){ extender.currentCharge = this.data_value; } } if (this.function == 5){ EntityPlayerMP player = ctx.getServerHandler().playerEntity; OverriderBlockTileEntity overrider = (OverriderBlockTileEntity)player.worldObj.getTileEntity(this.x, this.y, this.z); if (overrider instanceof OverriderBlockTileEntity){ overrider.shotsLeft = this.data_value; } } if (this.function == 7) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; PhotonSending ext2 = (PhotonSending)player.worldObj.getTileEntity(this.x, this.y, this.z); if (ext2 instanceof PhotonSending) { ext2.setOutputRate(this.data_value); } } if (this.function == 9) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; PhotonSending ext2 = (PhotonSending)player.worldObj.getTileEntity(this.x, this.y, this.z); if (ext2 instanceof PhotonSending) { ext2.setScaledOutput(this.data_value); } } if (this.function == 11) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; PhotonSending ext2 = (PhotonSending)player.worldObj.getTileEntity(this.x, this.y, this.z); if (ext2 instanceof PhotonSending) { ext2.setListSize(this.data_value); } } if (this.function == 13) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; PhotonRecieving ext3 = (PhotonRecieving)player.worldObj.getTileEntity(this.x, this.y, this.z); if (ext3 instanceof PhotonRecieving) { ext3.setScaledOutput(this.data_value); } } if (this.function == 15) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; PhotonRecieving ext3 = (PhotonRecieving)player.worldObj.getTileEntity(this.x, this.y, this.z); if (ext3 instanceof PhotonRecieving) { ext3.setPowerIncoming(this.data_value); } } if (this.function == 17) { EntityPlayerMP player = ctx.getServerHandler().playerEntity; PhotonRecieving ext3 = (PhotonRecieving)player.worldObj.getTileEntity(this.x, this.y, this.z); System.out.println("DefenderPacket17Received!"); if (ext3 instanceof PhotonRecieving) { ext3.setCurrentCharge(this.data_value); } } if (this.function == 19) { System.out.println("DefenderPacket19Received!"); EntityPlayerMP player = ctx.getServerHandler().playerEntity; player.worldObj.playSoundEffect((double)this.x, (double)this.y, (double)this.z, "ob:defenderLock", 1.0F, 1.0F); } return null; }catch (Exception var7){ var7.printStackTrace(); return null; } } } }@robin4002: Dans ta vidéo tu parles que selon si on est du coté client ou serveur du paquet, la déclaration ci-dessous est différente ? Si oui en quel(s) point(s) ?
EntityPlayerMP player = ctx.getServerHandler().playerEntity; ```</obnetworkclient,></integer></integer></integer> -
ctx.getServerHandler() n’est pas possible côté client.
Côté client il faut utiliser Minecraft.getMinecraft().thePlayer pour avoir le joueur.
-
@‘robin4002’:
ctx.getServerHandler() n’est pas possible côté client.
Côté client il faut utiliser Minecraft.getMinecraft().thePlayer pour avoir le joueur.
C’est corrigé, ça marche enfin ^^
-
Bonjour, j’aiemrais récupré la liste des GameProfile du server pour l’afficher sur un GUI, sauf que avec le fromBytes, on ne peut mettre que int String bytes ect… mais pas GameProfile[] quellequ’un aurais une idée de comment faire?
-
Tu envoie un tableau de String contenant l’username, un tableau de string contenant les UUID (GameProfile.getId().toString()) puis quand tu récupère les tableaux tu peux utiliser :
GameProfile profile = new GameProfile(UUID.fromString(uuidString), username); -
Il va falloir sérialiser et désérialiser l’objet, en gros envoyer chaque propriété de l’objet, un petit exemple pour les BlockPos : https://github.com/Leviathan-Studio/LS-Lib/blob/master/src/main/java/com/leviathanstudio/lib/common/network/ByteBufUtil.java#L46-L68
Mais la question à te poser est : Est-ce que j’ai besoin des toutes les informations du GameProfile, si c’est juste pour afficher les pseudo, envoie juste les pseudos
-
sa sert à quoi le network du mod? j’ai pas compris
-
a faire communiquer le server et le client entre eux
-
je n’ai pas compric ou engristrer les packets
-
N’importe où, ça peut être dans la classe principale tout comme ça peut être dans une classe à part.
Du moment que la fonction dans laquelle ils sont enregistrer est appelé les l’init, c’est bon. -
A AymericRed a fait référence à ce sujet sur
-
R robin4002 a fait référence à ce sujet sur
-
R robin4002 a fait référence à ce sujet sur
-
R robin4002 a fait référence à ce sujet sur