-
@‘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