-
Fais voir les classes de tes paquets ?
-
Voila ma classe PacketMoney
public class PacketMoney implements IMessage { public long maxMoney; public long money; public PacketMoney() { } public PacketMoney(long cooldown, long kamas) { this.maxMoney = cooldown; this.money = kamas; } @Override public void fromBytes(ByteBuf buf) { maxMoney = buf.readLong(); money = buf.readLong(); } @Override public void toBytes(ByteBuf buf) { buf.writeLong(maxMoney); buf.writeLong(money); } public static class Handler implements IMessageHandler <PacketMoney, IMessage>{ @Override public IMessage onMessage(PacketMoney message, MessageContext ctx) { if(ctx.netHandler instanceof NetHandlerPlayServer) { jobHandler prop = jobHandler.get(((NetHandlerPlayServer)ctx.netHandler).playerEntity); prop.update(message.money, message.maxMoney); } if(ctx.netHandler instanceof NetHandlerPlayClient) { jobHandler prop = jobHandler.get(getClientPlayer()); prop.update(message.money, message.maxMoney); } return null; } } @SideOnly(Side.CLIENT) public static EntityPlayer getClientPlayer() { return Minecraft.getMinecraft().thePlayer; } } -
La fonction onMessage de l’handler est bien appelé ?
-
Il n’y as que ce coté qui est appelé lors que je addXp (donc j’utilise les packet)
if(ctx.netHandler instanceof NetHandlerPlayClient) { jobHandler prop = jobHandler.get(getClientPlayer()); prop.update(message.money, message.maxMoney); } return null; } } -
Ce qui est le résultat attendu quand on envoie un paquet du serveur vers le client.
En fait le souci c’est que ta fonction
prop.updatene fait rien … -
il faut que je rajoute
public void update(long money, long maxMoney){ this.money = money; this.maxMoney = maxMoney; } -
J’ai réussi j’ai mis ;
public void update(long money, long money2){ this.money = money; this.money = money2; }le Gui est fonctionnel et les deux valeurs sonts bien syncro !
Merci de ton aide @robin4002 , je passe en résolu ! -
Je pense que tu devrais relire le code de ton dernier message, car il est impossible que les 2 valeurs soient synchronisées avec un tel code.
-
C’est bizarre car pourtant j’obtient bien les 2 mêmes valeurs et le gui et fonctionnel
(le Gui est moche pour l’instant car je l’ai pas terminé)

-
Le souci de ton code actuel c’est que tu ne mets à jour correctement le maxMoney.
-
Un autre problème que tu as dans ton code, c’est que ce n’est pas sécurisé. Le client pourrais très bien envoyer un packet au serveur et mentir sur la quantité d’argent qu’il a réellement. Dans ton code actuelle, le serveur accepterais sans se poser de question.
-
Il faut donc que j’inverse les packets ?
Par exemple il faut que ce soit le Serveur qui envoie le packet et non le client ? -
Le serveur commande et le client execute !
Le serveur doit gere les quantité et le client doit seulement pouvoir les recupérer mais pas les modifier -
j’ai fait quelques modifications ;
J’ai lancé le jeu en serveur et je l’ai rejoint avec un client avec un packet supplémentaire (pour simulé un give d’XP et afin de voir la sécurité) ,au moment de l’envoie du packet le serveur me kick avec un beau “A fatal error as occured” je me suis reconnecté au serveur est mon XP n’a pas été modifier .
-
hein …? pas comrpris
-
non par rapport au problème dans le code ou l’on pouvait envoyer des faux packet , je pense que j’ai réussi à le réglé car maintenant si j’essaye d’envoyer un faux packet au serveur (qui n’est pas présent dans le mod coté serveur ) ,bah je me fait kick avec un beau message “A fatal error as occured” ,et l’XP n’est pas modifier aprés la reconnexion , donc c’est plutôt bon .
-
Bonjour je cherchais depuis un bon moment un forum permettant de coder des metiers customs afin de m’aider a finaliser mon serveur mais le probleme j’ai suivi a la lettre le codage mais j’ai plein d’erreur au niveau de

Je suis un gros nnob en code pouvez vous m’aider -
Simple,au debut à tu crée la classe PacketMoney,
ModTuto est le nom de ta classe principale et je crois que sur CommonProxy il y a pas de storeEntityData ni de getEntityData
mais tu ne donne pas assez d’informations donc ce que je dis est peut-etre faux -
ou a PacketMoney tu as oublié le fameux import
Si ceci est ta classe principale au niveau de ModTuto tu peux mettrethisca te servira
Et d’ou tu mets apres MegaMod? -
@Gael62 il faut juste pas que ton client puisse envoyer un packet au serveur, le client ne gère absolument rien, il doit juste recevoir un packet lui disant combien il a d’argent … c’est tout
