& [1.9] Synchronisation client/Server des id d'entité pour un joueurs



  • :::

    Yop tous le monde !

    Bon… Vous allez finir par avoir l'habitude, mais quand j'ai un problème, c'est toujours quelque chose à la con et d'ultra compliqué...
    Donc pour ne pas déroger à la règle, cette fois ci encore mon problème est con et ultra compliqué ::D
    C'est le suivant :

    Contexte (chaque lien renvois sur le fichier .java correspondant sur GitHub) :

    Je suis actuellement en train de développer un mod ajoutant un principe d'élément. 
    On retrouves 2 parties principales : Gestion des données, et Interaction avec l'environnement

    Pour la gestion des données, j'utilise un objet dénommer l'ElementalMatrix. Je ne rentrerai pas dans le détail technique de son fonctionnement puisque ce n'est pas l'objectif.
    Cette objet inclue l'interface IElementalWritable qui me donne accès a deux fonctionnalité : write() & createByString(String value). La premier me permet de convertir mon objet en string, et la 2nd de convertir mon string en objet. C'est de cette façon que je transmet les données (l'utilisation de l'interface me permet alors de faire des algorithmes généraux pour chaque futur objet que je créerai)
    Ces deux fonction sont utilisé en corrélation avec ElementalDataSerializers qui est une extensions de la classe DataSerializers de minecraft. celle ci permet d'enregistrer un serializer de donnée.
    Grace à cela, je peu utiliser les fonctions de DataHelper qui me permettent de rajouter aux entités mes matrices comme étant des données propres à chaque entité.

    L'ajout de ces données se fait dans la class DataEvent, grâce a l’événement onSpawn.
    On retrouve alors 3 cas possible :

    • L'entité inclus l'interface de gestion des données IMonsterMatrix -> on utilise les fonctions de l'interface pour obtenir les données.
    • L'entité n'inclus pas d'interface et n'est pas un joueur -> on génère de façon procédurale les données.
    • L'entité est un joueurs.

    Le 3eme cas est celui problématique.

    Les données du joueurs sont écrit dans un fichier. Ce dit fichier est enregistrer au nom de "UUID.extention" dans le dossier dataPlayer du monde.
    Les données ne sont donc accessible que coté serveur. Néanmoins, le client doit obtenir ces information. J'utilise pour cela l’objet PlayerStats qui dispose de toute les données, ainsi que des fonctionnalités pour s'initialisé coté serveur.
    J'envois alors cette objet via PlayerStatsPacket, une banal class qui implémente IMessage, ainsi que sa classe Handler.

    Le problème est donc découpé en 2 :
    ***- Premier problème, comment accéder à l'instance de la variable coté client correspondant à l'entité. ***
    Je possède (à l'heure actuel) l'UUID (bien que je puisse changer pour envoyer n'importe qu'elle autres données)?
    Il serai apparemment (et celons les commentaires déjà apparut) possible d'utilisé l'id de l'entité (et non pas l'UUID). Je me renseignerai demain.

    EDIT : le premier problème est légèrement différent. Auparavant, j’accédais à l'instance via l'UUID, donc je trouvais systématiquement la variable, pour peux qu'elle existe… Ce qui n'étais souvent pas le cas...
    Maintenant j'y accède via l'ID. Sauf qu’apparemment, l'entité player est dé-synchronisé...

    - Deuxième problème : optimisation ?
    comme je l'expliquai dans le long pavé précédent, j'utilise ma propre interface avec deux méthode pour convertir en string (ce qui n'est pas forcément des plus optimisé). Existe-t-il une alternative, peu être déjà présente, pour transmettre les données d'une entité vers le client (Ce qui éviterai de passer par une class custom d'envois de packet) ?

    :::

    Pour une raison défiant toute logique, l'ID des entités joueurs entre le client et le serveur sont désynchronisé.

    Pour obtenir l'information (enregistré coté serveur) d'un joueurs précis, j'ai donc agis comme suit :

    public class AskPlayerStatsPacket  implements IMessage
    {
    UUID uudiEntity;
    
    public AskPlayerStatsPacket(){}
    
    public AskPlayerStatsPacket(UUID id)
    {
    this.uudiEntity = id;
    }
    
    @Override
    public void fromBytes(ByteBuf buf)
    {
    this.uudiEntity = UUID.fromString(ByteBufUtils.readUTF8String(buf));
    }
    
    @Override
    public void toBytes(ByteBuf buf)
    {
    ByteBufUtils.writeUTF8String(buf, uudiEntity.toString());
    }
    
    public static class Handler implements IMessageHandler <askplayerstatspacket, playerstatspacket="">{
    @Override
    public PlayerStatsPacket onMessage(AskPlayerStatsPacket message, MessageContext ctx)
    {
    UUID uuid = message.uudiEntity;
    EntityPlayer player = ctx.getServerHandler().playerEntity.worldObj.getPlayerEntityByUUID(uuid);
    // renvois d'un packet custom
    return new PlayerStatsPacket(player);
    }
    }
    }
    

    Une chose est importante ici :

    ctx.getServerHandler().playerEntity.worldObj.getPlayerEntityByUUID(uuid)
    

    il est en effet possible de récupérée l'instance d'un objet joueurs grâce à son UUID.

    pour une entité normal, il vaux beaucoup mieux utilisé (avec 'id' un integer)

    ctx.getServerHandler().playerEntity.worldObj.getEntityByID(id);
    

    mais comme je l'avais expliqué dans le fil du sujet, cela ne fonctionne pas pour les joueurs qui sont asynchrone…

    seul problème de cette méthode, elle peut retourner null, il faut donc gérer la probabilité.</askplayerstatspacket,>



  • J'ai pas tout compris mais normalement tu n'as pas à accéder au UUID d'une entité côté client



  • J'ai pas compris les détails, mais pour accéder à une entité, tu peux get son entity id (un int, pas un UUID) dans le monde sur le serveur, tu l'envoie via ton packet, et avec une fonction du World, tu peux obtenir l'entité correspondant à l'id.


  • Administrateurs

    Le client ne connaît que les entités qui se trouve sur la partie chargé de la map côté client. Donc ~10 chunk de rayon autour de joueur.
    Toutes les autres entités n'existent pas pour le client.
    Après comme AymericRed l'a dit, chaque entité a un id unique, (pas l'uuid, entity.getEntityId()) puis tu peux utiliser world.getEntityByID(id) pour obtenir à nouveau son instance.



  • J'ai édité le message d'origine pour le rendre plus clair.

    Sinon concernant le premier problème, je verrai demain cette histoire d'ID (qui est apparemment différent de UUID). Si cela s'avère fonctionné, alors cela me simplifierai beaucoup la tache, bien que je ne sois pas vraiment sur d'avoir la bonne variable "World" à l'heure actuel ^^'
    J'utilise :

    Minecraft.getMinecraft().theWorld
    

    or dans vos exemple, vous semblez tous faire référence à une variable world liée au joueurs (et non pas à l'instance minecraft)

    concernant la deuxième partie du problème, il faut que je revoie un partie du code pour le faire correctement fonctionné (pour le moment, dans le cadre du test de l'intéraction avec l'environnement, j'ai branché à la rache les éléments, donc le jeu crash systématiquement dès que je m'éloigne d'une entité). Néanmoins, avant de branché correctement, j'aurai voulus savoir si il n'y avais pas déjà existant



  • Le world est normalement accessible via les paramètres dans la plupart des cas, si ce n'est pas le cas tu peux utiliser ta méthode mais uniquement côté client, côté serveur ce code va crasher.

    C'est à dire ?



  • Concernant l'accès à world, coté client je n'ai pas réussis a y accéder avec l'objet MessageContext. Néanmoins, la variable world est initialise très top (en comparaison de sa variable liste joueurs). Du coup, l'utilisation de "world.getEntityByID(id)" fonctionne très bien.

    Pour la 2nd partie, je n'avais pas encore créer de système pour demandé l'information. En gros, lorsque le joueurs joignais, tous le monde recevais l'information. Du coup si un 2nd joueurs joignais, il plantais puisqu'il lui manquais les info du premier.
    Maintenant le client envoie un packet au server demandant les informations de l'entité X (suivant le principe d'ID cité précédemment), puis le serveur répond.

    Néamoins, un problème persist avec cette méthode :
    @'log':

    [11:51:19] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:51]: ### Entity : Jodge:16, instance of class net.minecraft.entity.player.EntityPlayerMP
    [11:51:19] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:51]: [INFO] Succefuly load data for player.
    [11:51:19] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:51]: [INFO] New key have ben create for entity class net.minecraft.entity.player.EntityPlayerMP. Id use is : 14.
    [11:51:19] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:51]: [INFO] New key have ben create for entity class net.minecraft.entity.player.EntityPlayerMP. Id use is : 15.
    [11:51:19] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:51]: ### Entity : Jodge:17, instance of class net.minecraft.client.entity.EntityPlayerSP

    Coté server, l'entité d'id 16 est correctement initialisé et son instance est EntityPlayerMP. 
    Coté client, l'id de l'entité est 17, et son instance EntityPlayerSP.
    Mon paquet demandant alors les data de l'entité 16 :
    @'log':

    [11:56:36] [Netty Server IO #1/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:51]: [WARNING] Id 16 was give to null

    j'affiche ci dessus le résultat de "ctx.getServerHandler().playerEntity.worldObj.getEntityByID(id);", ou ctx est le MessageContext, et ou je suis actuellement coté server.
    null. Il ne trouve pas l'entité, donc il ne peu pas obtenir les informations nécessaire pour continuer…



  • Regarde comment fait les paquets parce que c'est pas logique que l'id soit pas la même. Pour ce qui est du type c'est tout à fait normal, ils n'ont pas le même type côté client et serveur.



  • L'id devrait être même regarde bien ce que tu as fais car Minecraft procède également via ces id pour update les entités et ça ne devrait pas bug.

    Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk



  • Bon… Alors c'est très étrange...

    Après avoir galérer à cause d'un stupide bug (la limite max pour le nom d'un "SimpleNetworkWrapper" est de 20 caractères. En mode serveur à part, cela déconnecte le joueurs systématiquement si la valeur dépasse), j'ai pus tester en mode serveur à part et 2 clients.
    J'ai pus grâce à cela remarqué quelque point... Étrange...

    Coté serveur, tous fonctionne, pas de problème.
    coté client, tan que je me fait frapper, et/ou que je frappe un joueurs, cela ne crash pas (bien qu'aucun system.out.print ne se fasse de ce coté, donc je n'ai pas de donnée...)

    Le crash à systématiquement lieu dès que j'attaque une entité qui n'est pas une instance de player (allez savoir pourquoi...). La raison est simple : l'entité player SP n'est pas initialisé, et donc null pointer exception (le problème d'id)

    [font=Ubuntu, sans-serifSCAREX] : J'ai pas vraiment compris ce que tu me dis en faite
    [font=Ubuntu, sans-serifAymericRed ] : j'ai fait un petit test, affichez toute les entités du monde de 0 à X +10 (x étant l'id de l'entité player) coté serveur, puis coté client…

    Et bien c'est problématique : seul l'instance EntityPlayerSP existe coté client (id 235). Son équivalent coté serveur est null. Coté serveur, il semblerai qu'il n'existe aucune entité player... Alors qu'elle devrai existé...
    pour l'affichage j'ai utilisé :

    for(int i = 0; i < target.getEntityId() + 10; i++)
    {
    JLog.write("CLIENT - Entity " + i + " : " + target.worldObj.getEntityByID(i));
    }
    

    (JLog.write = system.out.println custom sur fenêtre à part de debug. Changer CLIENT par SERVER sur le side.server)

    :::

    […] + 200 (aucun *Player*)
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 200 : EntityPig['Pig'/200, l='New World', x=408,43, y=64,00, z=417,77]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 201 : EntityChicken['Chicken'/201, l='New World', x=428,55, y=72,00, z=243,19]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 202 : EntitySheep['Sheep'/202, l='New World', x=421,25, y=70,00, z=346,37]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 203 : EntitySheep['Sheep'/203, l='New World', x=418,73, y=70,00, z=347,69]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 204 : EntityItem['item.tile.torch'/204, l='New World', x=420,39, y=35,00, z=378,73]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 205 : EntityMinecartChest['Minecart with Chest'/205, l='New World', x=423,50, y=35,06, z=411,50]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 206 : EntityMinecartChest['Minecart with Chest'/206, l='New World', x=427,50, y=35,06, z=415,50]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 207 : EntityItem['item.tile.torch'/207, l='New World', x=426,96, y=35,00, z=417,13]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 208 : EntityPig['Pig'/208, l='New World', x=417,64, y=63,00, z=420,36]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 209 : EntityChicken['Chicken'/209, l='New World', x=442,15, y=71,00, z=270,68]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 210 : EntityChicken['Chicken'/210, l='New World', x=437,50, y=70,00, z=270,80]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 211 : EntityItem['item.item.string'/211, l='New World', x=445,87, y=27,00, z=379,69]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 212 : EntityItem['item.item.string'/212, l='New World', x=447,25, y=27,00, z=380,88]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 213 : EntityItem['item.tile.torch'/213, l='New World', x=446,18, y=37,00, z=397,69]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 214 : EntityItem['item.tile.torch'/214, l='New World', x=446,02, y=33,00, z=399,45]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 215 : EntityItem['item.tile.torch'/215, l='New World', x=435,13, y=35,00, z=412,08]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 216 : EntityChicken['Chicken'/216, l='New World', x=452,50, y=72,00, z=246,50]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 217 : EntityChicken['Chicken'/217, l='New World', x=451,50, y=73,00, z=242,50]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 218 : EntityChicken['Chicken'/218, l='New World', x=450,50, y=71,00, z=246,50]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 219 : EntityChicken['Chicken'/219, l='New World', x=453,20, y=72,00, z=266,51]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 220 : EntityChicken['Chicken'/220, l='New World', x=459,07, y=74,00, z=256,14]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 221 : EntityMinecartChest['Minecart with Chest'/221, l='New World', x=454,50, y=37,06, z=351,50]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 222 : EntityItem['item.tile.torch'/222, l='New World', x=451,29, y=27,00, z=352,36]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 223 : EntityItem['item.tile.rail'/223, l='New World', x=450,05, y=27,00, z=372,94]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 224 : EntityItem['item.tile.rail'/224, l='New World', x=449,13, y=27,00, z=374,78]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 225 : EntityItem['item.tile.rail'/225, l='New World', x=449,75, y=27,00, z=380,64]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 226 : EntityItem['item.tile.torch'/226, l='New World', x=453,73, y=38,00, z=381,70]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 227 : EntityItem['item.tile.rail'/227, l='New World', x=449,13, y=27,00, z=384,24]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 228 : EntityMinecartChest['Minecart with Chest'/228, l='New World', x=453,50, y=37,06, z=401,50]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 229 : EntityItem['item.tile.torch'/229, l='New World', x=462,60, y=33,00, z=417,88]
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 230 : null
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 231 : null
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 232 : null
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 233 : null
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 234 : null
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 235 : null
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 236 : null
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 237 : null
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 238 : null
    [22:12:54] [Server thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: SERVER - Entity 239 : null
    
    […] + 200 (null)
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 200 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 201 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 202 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 203 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 204 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 205 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 206 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 207 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 208 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 209 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 210 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 211 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 212 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 213 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 214 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 215 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 216 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 217 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 218 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 219 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 220 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 221 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 222 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 223 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 224 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 225 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 226 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 227 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 228 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 229 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 230 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 231 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 232 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 233 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 234 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 235 : EntityPlayerSP['Jodge'/235, l='MpServer', x=8,50, y=65,00, z=8,50]
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 236 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 237 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 238 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 239 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 240 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 241 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 242 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 243 : null
    [22:12:54] [Client thread/INFO] [STDOUT]: [fr.Jodge.elementalLibrary.common.function.JLog:write:53]: CLIENT - Entity 244 : null
    
    

    :::

    Y a un truc qui m'échappe totalement dans cette logique client/server…

    EDIT : concernant le problème d'id, cela viens peu être de :

    Entity player = ctx.getServerHandler().playerEntity.worldObj.getEntityByID(id);
    

    sur AskPlayerStatsPacket. L'id reçu me retourne null systématiquement…


  • Rédacteurs

    
    for(int i = 0; i < target.getEntityWorld().getLoadedEntityList().size(); i++)
    {
    JLog.write((target.getEntityWorld().isRemote ? "CLIENT" : "SERVER" ) + " - Entity number " + i + " : " + target.getEntityWorld().getLoadedEntityList().get(i).getUniqueID());
    }
    
    

    Oui je sais on peut l'optimiser, blablabla, c'est du debug on s'en fout



  • Si tu comptais localisé l'entité, c'est râpe…

    SERVER - Entity number 0 : 6fc5d0e1-0f18-47e2-a3ee-8491912028fb
    SERVER - Entity number 1 : 1764933d-5944-4de5-b490-f110f52191ae
    SERVER - Entity number 2 : 96c13214-512d-486a-8626-962213c08ba4
    SERVER - Entity number 3 : 7c58fbcf-646a-4d68-a6ff-9024f5b44f55
    SERVER - Entity number 4 : 75fa2899-550a-4a19-b7c1-22d9f50b4506
    SERVER - Entity number 5 : 594ee251-86a5-437a-a657-92be8b127239
    SERVER - Entity number 6 : b7addd37-7d5f-46c4-b2f7-cd2e3a78b97e
    SERVER - Entity number 7 : aae4ddc6-1eff-4374-bfae-fc3ec55150b3
    SERVER - Entity number 8 : 9fcbb0d1-194d-426a-af3e-ff22d35812cd
    SERVER - Entity number 9 : d323f931-e9bc-4296-9c65-748357d2fbc4
    SERVER - Entity number 10 : ea46b989-ea21-4fa3-963d-3ac300a4f99b
    SERVER - Entity number 11 : d115cae6-69da-46a4-9046-38a7d84a0489
    SERVER - Entity number 12 : fe0a6fab-af37-45a3-a3da-27036c545049
    SERVER - Entity number 13 : c8e3c4b9-796a-41de-baa9-08061b100273
    SERVER - Entity number 14 : b7bf5633-f01e-4411-b654-a16ba4ecb99d
    SERVER - Entity number 15 : 5fcb5d6e-13f4-443f-bc70-63d20887d2c0
    SERVER - Entity number 16 : 3c040038-2aff-441d-bad5-260497b2281d
    SERVER - Entity number 17 : 923d39d6-4a80-4ea6-a59d-e72afc0259d1
    SERVER - Entity number 18 : 3cf4810e-d8d0-4e6e-83d6-e1ebb9a5a5cb
    SERVER - Entity number 19 : 6b9ac193-840a-4e61-8f48-4566f09e99bd
    SERVER - Entity number 20 : 262c18ea-982b-49ac-89fa-bccb38f841e9
    SERVER - Entity number 21 : 039b4b93-51d2-4350-b12a-148c75f64df4
    SERVER - Entity number 22 : e7029e5b-5166-4fc3-bdd2-a04d6ffcbdfd
    SERVER - Entity number 23 : c2e9cf8d-9907-4d81-867c-e879e9f4fcea
    SERVER - Entity number 24 : 2f998a87-34c7-41a0-8ceb-7eece990025a
    SERVER - Entity number 25 : acdb4b4a-b4e9-466f-9ceb-de713598bbdc
    SERVER - Entity number 26 : 05af388a-b141-4ce7-902e-2ae08fc44812
    SERVER - Entity number 27 : 451db472-b10f-432a-bed5-3f466217de30
    SERVER - Entity number 28 : d454d983-1389-4cee-8c78-9969f145ca99
    SERVER - Entity number 29 : 09664172-6928-4004-b4df-47531b203236
    SERVER - Entity number 30 : 53423b43-c47e-4fe5-a8e8-7fa81bcfba82
    SERVER - Entity number 31 : 94522912-b929-4f69-a92b-c4e5a24f6e6b
    SERVER - Entity number 32 : 0070e6b7-7585-4fae-95b9-ffdb6205702a
    SERVER - Entity number 33 : e77f550d-f739-451f-9223-5ae2b995afb0
    SERVER - Entity number 34 : a0a41d0d-346f-4780-8af0-cc189296518f
    SERVER - Entity number 35 : a65b0edd-df3c-4dd1-824c-6d2c77655be3
    SERVER - Entity number 36 : 078e3ed0-0d64-44d8-96fc-b7216ce3f5ad
    SERVER - Entity number 37 : f0ad1b38-ff43-4878-9795-0875b852076b
    SERVER - Entity number 38 : 55194e51-2977-471e-b49c-28ce3ab233a3
    SERVER - Entity number 39 : 524285a8-de0f-42cc-b7f3-6e0de56e8329
    SERVER - Entity number 40 : ec97021c-40d5-4bbd-85fa-e79aed59cdae
    SERVER - Entity number 41 : 0e1f497e-2ee1-4dc8-85ab-76d628214bd0
    SERVER - Entity number 42 : 9ceea860-e0f4-4084-9a6f-8b55cbfa99b5
    SERVER - Entity number 43 : 1cd99531-0dfd-44d4-a33c-1122708f45d2
    SERVER - Entity number 44 : 738bad7a-cc3a-468f-81cb-591762db6e70
    SERVER - Entity number 45 : f8258888-41e0-4fda-8302-706fa4a68d21
    SERVER - Entity number 46 : c2518c62-72ca-4e64-afdf-89e60a37128f
    SERVER - Entity number 47 : b818d538-8903-467b-bc3a-a96e50be7b65
    SERVER - Entity number 48 : c63acf4c-16a3-4b35-b081-f4237f96250e
    SERVER - Entity number 49 : 463165cb-d344-419d-9cbf-2a538e045fd3
    SERVER - Entity number 50 : 6a97060f-04e9-4e7f-b817-b861cc84dc92
    SERVER - Entity number 51 : 061a35c9-0163-4b4e-9ed6-544f6442cead
    SERVER - Entity number 52 : 5882b12a-1c6d-4cce-8893-8c558da6dcf1
    SERVER - Entity number 53 : 5235c341-40b2-405b-bede-701b31782e63
    SERVER - Entity number 54 : 2909104e-95e8-4db6-9607-42ae6048b562
    SERVER - Entity number 55 : 87f628a6-d1c2-4d76-a887-5d7bf1a58c6f
    SERVER - Entity number 56 : 84ecbd45-d643-4068-a079-ec70329cbd9e
    SERVER - Entity number 57 : d597da4d-af91-4cf3-afc1-4667c6ef6220
    SERVER - Entity number 58 : 1afa0248-2cba-4ed0-9bc9-aa0bc4ace2f5
    SERVER - Entity number 59 : 09858c9d-e482-4ff8-8017-2a58e3c93098
    SERVER - Entity number 60 : caa7e03d-0322-4c68-9c06-500a1f94e3ac
    SERVER - Entity number 61 : 2472179e-62b9-498d-82f1-58f20bdc18d5
    SERVER - Entity number 62 : 472c8243-6f1d-4e0d-8172-1cf0d523ac27
    SERVER - Entity number 63 : 492a70de-638d-4476-8ba1-237cf47fe449
    SERVER - Entity number 64 : edfb4410-3a31-43c1-b3a0-3c608122d354
    SERVER - Entity number 65 : 11508610-8903-4360-baac-a90ca138e42b
    SERVER - Entity number 66 : 5651ef85-b77f-4bc8-a9ff-170185d60523
    SERVER - Entity number 67 : bd032f28-3ecf-405c-a5e5-6359f50241ff
    SERVER - Entity number 68 : e75476cc-ec97-450c-8bf3-b9509d51aa48
    SERVER - Entity number 69 : 8fed845f-291e-4c98-bea2-2b510eff607f
    SERVER - Entity number 70 : 495e79bb-f623-4dd7-9d8e-ff8b9e7af708
    SERVER - Entity number 71 : 2d2c294e-a3e8-4e65-a85d-c6e67c2e5a2d
    SERVER - Entity number 72 : 9af04ab7-48e5-4780-aa2e-25ac0da9d50f
    SERVER - Entity number 73 : 908b6087-c1dd-40c4-83db-a85e7c12f7b3
    SERVER - Entity number 74 : 8dc259e6-17af-4c9a-80c1-124310cc34c4
    SERVER - Entity number 75 : 099947a7-d5a8-4052-a3f1-78f8e0600314
    SERVER - Entity number 76 : 20015476-ee6c-4e2c-b95d-db6443cf07a0
    SERVER - Entity number 77 : 171280f7-aa32-42e2-aea5-0e9a7aeb8f06
    SERVER - Entity number 78 : 2ce2e47e-f6e6-4608-8fdd-159d09c63c08
    SERVER - Entity number 79 : 0c0495a4-8165-425b-956a-81c1333b20ca
    SERVER - Entity number 80 : a2d33f8b-0a6b-4322-ba61-df5a76221adb
    SERVER - Entity number 81 : 358e47f7-34f2-4c8b-abbf-5d6a41a2de46
    SERVER - Entity number 82 : 3f9b9ac3-baad-43b4-bfde-e3dedf551360
    SERVER - Entity number 83 : a8022ed0-e261-435b-b193-e7bdc10c2fdc
    SERVER - Entity number 84 : 355b42b6-f907-4fd3-a284-d136fcbd5dd2
    SERVER - Entity number 85 : f92a74df-6a9b-404d-9226-9e3f5fdf2966
    SERVER - Entity number 86 : 485ff555-83ef-4f7f-bc6c-1282a8b4b779
    SERVER - Entity number 87 : 4752d33d-3b0f-4426-b4b4-3955c3c8ff11
    SERVER - Entity number 88 : 91c687d6-912a-442d-a7f8-dd63c08627e2
    SERVER - Entity number 89 : b455f0d9-7156-4c50-b55f-41bf6ead22eb
    SERVER - Entity number 90 : 741bb8e9-c355-4032-a0c9-f96d0bc5ad15
    SERVER - Entity number 91 : 0c0f970f-a40c-431f-88d2-95bfef47a4e8
    SERVER - Entity number 92 : ab571904-39c1-41c9-96f0-3fc2029f6508
    SERVER - Entity number 93 : daeee534-6323-43a1-af71-74823f861bc6
    SERVER - Entity number 94 : f3e75335-92c7-4e0b-8658-919f9460120d
    SERVER - Entity number 95 : 297b4828-89d7-401a-bc60-35dbb61b6040
    SERVER - Entity number 96 : a2ef49c3-2e6f-4c00-a67f-457ae3ead8be
    SERVER - Entity number 97 : 9bed1c9f-7e9e-47fe-b162-daf07ab2e90f
    SERVER - Entity number 98 : 79acc796-9ae8-4457-89d8-a19813794836
    SERVER - Entity number 99 : fb4e1766-a8a7-48db-8a66-f16fe23e3b12
    SERVER - Entity number 100 : 97721702-8ab6-49cf-9855-3935fd93a82e
    SERVER - Entity number 101 : f9711169-d5cc-4be0-b062-1f8612ef95f7
    SERVER - Entity number 102 : 9fb6c8cf-1ad3-4424-b7f5-8204a9c68040
    SERVER - Entity number 103 : 54ed038a-9477-4dde-b925-efa20819fb7b
    SERVER - Entity number 104 : e27cafc8-aee6-48b5-9fcb-f8b50da664d0
    SERVER - Entity number 105 : 768b4da7-c2c7-46c0-bf88-89bf287c6005
    SERVER - Entity number 106 : fc56a1b4-e151-4546-ad01-e67393f30d2a
    SERVER - Entity number 107 : 11d2d57d-5064-4861-a2fd-b0844fe1db56
    SERVER - Entity number 108 : 10336963-a530-4685-9bef-db59604cd3a1
    SERVER - Entity number 109 : 04b2d18b-b929-4cba-b1c5-edcccc29eb6d
    SERVER - Entity number 110 : 1d94d850-31ae-480c-b5ec-2c02998594c7
    SERVER - Entity number 111 : e39ecb74-8544-45ed-8d16-44fafa06a8ee
    SERVER - Entity number 112 : fe9ceba3-e70c-4e79-ae2e-6103907f96a4
    SERVER - Entity number 113 : 0e7ca5aa-aea2-420b-99b3-5d3732d3ad72
    SERVER - Entity number 114 : 411bbaff-ddf2-423b-aa79-62717db22b78
    SERVER - Entity number 115 : 1ce1a5dd-5bd0-4d22-bcf6-00c4da83193b
    SERVER - Entity number 116 : 22539983-0375-47d9-9b9d-c6ed47cdba60
    SERVER - Entity number 117 : e56f9759-9da2-40ae-b155-cf825acd9146
    SERVER - Entity number 118 : 4e6a2a32-87e5-421f-b53a-c6f4fad68be3
    SERVER - Entity number 119 : 47732a73-6951-4fb9-b871-d623e7416cd6
    SERVER - Entity number 120 : 04480663-65b4-4110-87bc-b8c7131184a0
    SERVER - Entity number 121 : 02cf6e91-def8-4a96-bf8e-a3ddba4d7a0a
    SERVER - Entity number 122 : f8d7b161-7b04-4b90-992a-72aae4b639dd
    SERVER - Entity number 123 : dda5dbee-3efe-4d2d-a7be-b48fc8b47c93
    SERVER - Entity number 124 : d210f21b-3fd7-4e93-baca-1082682a9fea
    SERVER - Entity number 125 : a468a2a8-ada0-44ce-ab94-a6053c4bd60f
    SERVER - Entity number 126 : ea83ca03-91b9-4def-a131-f2ac82896d9d
    SERVER - Entity number 127 : 7911c00d-c948-4205-9444-0b23fbc023ae
    SERVER - Entity number 128 : 10136a6b-cf51-4b3d-8ce4-0e10d6081446
    SERVER - Entity number 129 : 65348acb-ef2a-42e3-8ae1-fd71e228b0db
    SERVER - Entity number 130 : cf3e10df-86ae-48c1-99a5-eb10a106183f
    SERVER - Entity number 131 : 38275708-c29b-43c5-8f4f-b55e2e67e6bb
    SERVER - Entity number 132 : 8f4142f0-3c91-43e2-8deb-2a02be23f773
    SERVER - Entity number 133 : 8b1c9b3c-84f6-4480-ba04-dc65670d7829
    SERVER - Entity number 134 : 3e945e9f-f08c-445b-be2b-164a03c31bee
    SERVER - Entity number 135 : 3f3afea0-b64c-4000-bc7c-e592a23ec5f8
    SERVER - Entity number 136 : 9293dcaf-20ef-4760-99f4-0d841e0e9408
    SERVER - Entity number 137 : d4e46384-bc0a-4b16-863d-e6a9d971ab18
    SERVER - Entity number 138 : 4672cc23-76a1-4f72-9430-866e8806a3b8
    SERVER - Entity number 139 : 28217084-2dff-430a-9ef7-b481a353e56c
    SERVER - Entity number 140 : dbd61f24-7b11-43d6-b5df-129d600c3e4b
    SERVER - Entity number 141 : 6c7a4ea9-8b99-4f80-9393-eed88b9f8431
    SERVER - Entity number 142 : dd13da1d-129b-4cb9-bc71-58a99ad129c0
    SERVER - Entity number 143 : 82e7e72d-dc81-46b8-9f20-7a64770ec185
    SERVER - Entity number 144 : 086ca9b1-2c78-4cbd-81cd-4be0d6ec894d
    SERVER - Entity number 145 : d1086c71-b02c-4541-a202-5de2a4aac69a
    SERVER - Entity number 146 : af906826-d7ec-4198-b31a-f7fbc018a264
    SERVER - Entity number 147 : 7e041dfb-0b5a-464f-9092-e1e1f0da3b8c
    SERVER - Entity number 148 : 1618f777-c93d-41dd-bffb-b764e900e5cc
    SERVER - Entity number 149 : e2c54be5-0609-4c17-9469-671d752adef7
    SERVER - Entity number 150 : 5a350af6-883e-402f-a99d-5a46ee9ffa2c
    SERVER - Entity number 151 : 01230b83-3f26-4977-ad1c-168b0708290f
    SERVER - Entity number 152 : 7aeb3de5-b8e1-4b40-adf3-605b2a16ec24
    SERVER - Entity number 153 : 29fdd5b4-616b-4f4d-8ee5-250a78437ad9
    SERVER - Entity number 154 : c6f12ccb-8ab3-4f8c-ac70-fa4176cdb8cc
    SERVER - Entity number 155 : ba1d0bde-fb78-4ae0-9cb5-8b7427ba374a
    SERVER - Entity number 156 : f940a64a-9ffd-4d85-b1e2-58582311cf98
    SERVER - Entity number 157 : d52bfb91-e091-478c-bbed-54cd248c61c6
    SERVER - Entity number 158 : 53e40f29-667d-4616-a9ae-80d181607476
    SERVER - Entity number 159 : e8030c74-76dc-4962-9e5c-c5fb8cad2e2c
    SERVER - Entity number 160 : cb982fb0-c16d-44c7-ae08-d848321231f5
    SERVER - Entity number 161 : 2ea25bad-14f3-4fd1-9132-dae306a557e1
    SERVER - Entity number 162 : ff15ae0e-29be-4893-bb4f-ab5035518f86
    SERVER - Entity number 163 : adc801dd-76b0-4f3a-baf3-2973755526f1
    SERVER - Entity number 164 : ed562e3b-7a9c-4459-affa-cbe800403f73
    SERVER - Entity number 165 : 9d81bed1-ffe9-4a54-a9a1-fa17b225a77b
    SERVER - Entity number 166 : 3e9c1455-29fe-4f27-abf9-b3466e6088d3
    SERVER - Entity number 167 : 76e09217-c856-4236-950b-fd28b736f2d6
    SERVER - Entity number 168 : a948d0bd-0185-4f2f-a668-9bbb6e8ce318
    SERVER - Entity number 169 : 9ccc52d5-8bfa-4edd-9f94-d333bf90da3f
    SERVER - Entity number 170 : b31eff58-2ea0-4682-8bd8-0a87ff393113
    SERVER - Entity number 171 : 0689ff42-8570-4bc9-9837-243de5135276
    SERVER - Entity number 172 : f9319fb1-4422-423b-88ec-136a47114865
    SERVER - Entity number 173 : 6bc8533e-1e59-454f-b248-3a5e403e2b88
    SERVER - Entity number 174 : 678be949-1220-462b-a9cf-8fb5ef53be9a
    SERVER - Entity number 175 : ebe812a1-2fa1-43ec-bb99-7db38328cc23
    SERVER - Entity number 176 : 21e9d345-50f5-49f1-9b93-43277770e647
    SERVER - Entity number 177 : d9767cd5-25c4-4578-8c7a-1ac9c14f42f7
    SERVER - Entity number 179 : 7b24f9a0-dbd7-477c-8c3a-660e0cddf3e0
    SERVER - Entity number 180 : fd0c2bc7-0e0a-417b-a4bd-493d80b26da4
    SERVER - Entity number 181 : 995ad7b0-bad6-446b-8051-5d893e8b08d4
    SERVER - Entity number 182 : 610359c3-9781-42fe-b9c3-d7ea555d87af
    SERVER - Entity number 183 : 649473b3-afc4-4cbe-b65c-767e4288b2a7
    SERVER - Entity number 184 : b96258f8-0da6-427d-bf18-3f77d4c96b03
    SERVER - Entity number 185 : 10bf1963-ca17-4726-8330-03023c5a3463
    SERVER - Entity number 186 : 8c0e2f06-1aec-485b-96d7-672b336dc387
    SERVER - Entity number 187 : a81d8d4a-4c38-4f15-a0f3-6f6532b9f221
    SERVER - Entity number 188 : c642a8c5-6cc4-43bb-838e-7935afc38eff
    SERVER - Entity number 189 : e098f011-4c0a-43a6-94a8-5902af266d63
    SERVER - Entity number 190 : 8fbb0a07-baa7-4fda-b8cd-0b5f41802f59
    SERVER - Entity number 191 : a51b4c16-e035-4b87-9bab-e037220a0c64
    SERVER - Entity number 192 : 1c4a178a-c530-42c1-922f-dfefbc81926f
    SERVER - Entity number 193 : 3801f20f-330b-4214-abb1-85d7939b60ef
    SERVER - Entity number 194 : 678842cc-8309-410c-a924-dc711babe129
    SERVER - Entity number 195 : 87e28dd3-bd48-478e-8667-87ac55cf06b4
    SERVER - Entity number 196 : f12de114-9969-4ca7-aad8-4e93dea0f836
    SERVER - Entity number 197 : 78cc2ceb-4c50-42a9-9187-714fdd8b29cb
    SERVER - Entity number 198 : 32c6a107-576a-4a87-9ed7-f62bd5fb7b08
    SERVER - Entity number 199 : 6aea7013-23d5-4c99-bbc9-0867c8c71758
    SERVER - Entity number 200 : ef820cd1-d15e-4bc7-9be2-fe86bfed3bd5
    SERVER - Entity number 201 : ab243a2c-009c-462b-9a4d-235cc550ff57
    SERVER - Entity number 202 : f871008e-8727-4104-ad37-a4090e10fc75
    SERVER - Entity number 203 : 2453547a-825f-4a4d-aa9e-ffdcbbb3657f
    SERVER - Entity number 204 : 9933aa95-0860-4ef2-97fa-f196b5d20462
    SERVER - Entity number 205 : a23e498e-8dd7-4afd-b6c9-bbdb0ba0f8f0
    SERVER - Entity number 206 : 5f670fcd-4def-4dbb-b26a-17b3aad45dff
    SERVER - Entity number 207 : a421e422-1aae-4e50-ab2f-cefb2f54f9cc
    SERVER - Entity number 208 : 7210d7e4-9f34-4ac3-af6b-52abb840099a
    MESSAGE RECEIVE : 210:null
    [INFO] Succefuly save data for player a2831e23-8b0f-3ec4-8539-58e8d4db780a
    

    Tu as la liste complète des entités, suivit d'un débug que j'ai rajouté sur la demande d'envoie (j'envoie l'ID de l'entité coté client, donc ici 210, et j'affiche l'entité trouvé coté serveur… null), et de la ligne indiquant le fichier du joueurs (et donc son UUID).
    Étrangement, je ne vois aucun affichage coté client alors qu'il devrai y avoir au moins l'entité 210...

    J'ai trouvé, comme ligne pouvant aidé :

    [09:42:28] [Server thread/INFO]: Player61[local:E:7663f223] logged in with entity id 209 at (367.15746874187994, 77.84756070766807, 255.4728582784921)
    

  • Rédacteurs

    Oh ! My bad ! C'était pas ça que tu voulais



  • Dans la série "fuck la logique", je bats des records T-T

    J'ai afficher toute les entités vivantes qui apparaissent, puis bidouillé un affichage sur notepad++. J'ai alors pus constaté les chose suivante :

    • Toute les entités vivante, hors joueur sont synchronisé.
    • L'entité joueurs server apparaît comme toute les entités (####### SERVER - Player Player769 join world whit id : 205)
    • L'entité joueurs client apparaît en premier, mais avec le dernier ID disponible sur le serveur (####### CLIENT - Player Player769 join world whit id : 227)
    • L'entité coté client, correspondant a l'id de l'entité coté serveur, n’apparaît jamais (même avec un affichage complet des entités incluant les entités non vivante)

    il semble y avoir une dé-synchronisation des entité Player (peu être dus au faite que ce ne sont pas la même instance de classe ?) sur une version vanilla de forge… J'en ai jamais entendu parler, mais j'ai eu ce "problème" sur 2 versions forge différentes (une en 1.9 et une en 1.10)



  • Dans la série "fuck la logique", je bats des records T-T

    J'ai afficher toute les entités vivantes qui apparaissent, puis bidouillé un affichage sur notepad++. J'ai alors pus constaté les chose suivante :

    • Toute les entités vivante, hors joueur sont synchronisé.
    • L'entité joueurs server apparaît comme toute les entités (####### SERVER - Player Player769 join world whit id : 205)
    • L'entité joueurs client apparaît en premier, mais avec le dernier ID disponible sur le serveur (####### CLIENT - Player Player769 join world whit id : 227)
    • L'entité coté client, correspondant a l'id de l'entité coté serveur, n’apparaît jamais (même avec un affichage complet des entités incluant les entités non vivante)

    il semble y avoir une dé-synchronisation des entité Player (peu être dus au faite que ce ne sont pas la même instance de classe ?) sur une version vanilla de forge… J'en ai jamais entendu parler, mais j'ai eu ce "problème" sur 2 versions forge différentes (une en 1.9 et une en 1.10)

    EDIT : J'ai eu une illumination ! Concernant le problème de synchronisation de l'id des player, je n'ai pas de réponse au pourquoi du comment... Par contre, il existe une fonction sur la variable world : getPlayerEntityByUUID. Cette fonction de sert que pour les entité joueurs, mais étant donné que c'est ce que je cherche a manipulé, cela fonctionne. Seul hic, je serai obliger de créer une autre version du packet si je souhaite faire fonctionner avec n'importe qu'elle entité.


  • Rédacteurs

    "Seul hic", un paquet ~2min à mettre en place surtout pour faire circuler un UUID, et passer par les UUID c'est le mieux à faire, avec l'UUID d'un joueur tu peut récupérer son instance si il est connecté, tu peux récupéré son nom si il s'est déjà connecté sur le serveur, etc … Et en cas de rename, le joueur conserve son UUID donc pas de problème en cas de rename



  • Je suis pas sur d'avoir compris le "hic"…
    Un UUID est certe plus long qu'un simple integer, mais je ne vois aucune autre solution... Et les entité sont initialisé durant l’événement EntityJoinWorldEvent avec une priorité haute (et non pas la plus haute). Il y a donc un risque à utilisé le nom (qui est certainement plus court que l'UUID), justement à cause du temps de latence.

    Par contre ton

    un paquet ~2min à mettre en place

    tu le sort d'ou ? Parce que 2 minutes pour un transfert de 36 caractères, même les modem 54k faisais mieux…



  • C'est toi qui a parlé du "hic" dans ton edit, et les 2 minutes c'est le temps d'adapter le packet aux UUID.

    Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk



  • Haaaa ! nan mais ce que je voulais dire par seul hic, c'est que j'aurai 2 méthodes presques identiques pour gérer les entités (par id) et les joueurs (par UUID), alors que les messages précédents préconisé de ne pas utilisé les UUID, et qu'il vaut toujours mieux minimisé la duplication de code.



  • Sinon tu peux aussi utiliser les UUID pour les entités autres que les joueurs, mais c'est plus compliqué pour récupérer l'entité à partir de l'UUID

    Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk


Log in to reply