Résolu & [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’environnementPour 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.
-
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.EntityPlayerSPCoté 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…
-
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)
-
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é.
-
“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