EntityExtendedProperty modifiable quand joueur déconnecté
-
Dans ta fonction loadNBTData
Tu as :
NBTTagCompound properties = (NBTTagCompound)compound.getTag(EXT_PROP_NAME);
puis :
adjoint = properties.getBoolean(“adjoint”);
ça correspond bien, donc je ne vois pas pourquoi ça ne fonctionne pas
Après avoir écrit relis le fichier pour vérifier que la modification s’est bien effectué. Il y a peut être un problème avec
CompressedStreamTools.write(tag, playerData); -
Les tests sont fait sur serveur :
Lorsque j’éxécute le code quand je suis connecté, ça ne marche pas (normal, ça modifier la donnée dans le .dat mais à la déconnexion ça corrige le .dat avec les données que j’avais à la déconnexion en cache).
Lorsque j’éxécute le code quand je suis déconnecté (bon pseudo), ça ne marche pas (il y a modification du fichier mais à la déconnexion, ça rétablit les données que j’avais à la déconnexion en cache). Même avec relancement du serveur (cache vidé), les données que j’avais à la déconnexion (en cache) sont rétablies
Et pas de soucis au niveau de réinitilisation possible, avec un autre code similaire quand je suis connecté et que je met Adjoint pas de soucis, je relance le serveur, je le suis toujours.
-
@‘Benjamin Loison’:
Lorsque j’éxécute le code quand je suis déconnecté (bon pseudo), ça ne marche pas (il y a modification du fichier mais à la déconnexion, ça rétablit les données que j’avais à la déconnexion en cache). Même avec relancement du serveur (cache vidé), les données que j’avais à la déconnexion (en cache) sont rétablies

?!?
Comment tu peux te déconnecté si tu n’es pas connecté ? -
Lorsque j’éxécute le code quand je suis déconnecté (bon pseudo), ça ne marche pas (il y a modification du fichier mais à la connexion*, ça rétablit les données que j’avais à la déconnexion en cache). Même avec relancement du serveur (cache vidé), les données que j’avais à la déconnexion (en cache) sont rétablies

Erreur de ma part désolé x)
-
Tu as vérifier avec NBTexplorer les valeurs du .dat ?
-
“(il y a modification du fichier mais à la connexion*, ça rétablit les données que j’avais à la déconnexion en cache). Même avec relancement du serveur (cache vidé), les données que j’avais à la déconnexion (en cache) sont rétablies” comme dit, lorsque j’éxécute le code pendant que je suis déconnecté, la valeur passe bien sur true, mais lorsque je me connecte même après un relancement, la donnée est remise sur false
-
C’est étrange car normalement il ne devrait pas garder la valeur.
Enfin je ne vois pas où il peut la garder. La seule possibilité c’est en ram. Mais comme tu as le même problème même si tu reboot ce n’est pas ça.
Tu es sûr que tu n’as pas autre chose qui réinitialiser la valeur ? -
J’ai remarqué que après il y avait des problèmes de flux quand je laissais NBTExplorer lancé (normal, Minecraft essaie de modifier le fichier et NBTExplorer analyse déjà le fichier) alors j’ai bien fais attention de ne pas faire d’action (arrêter serveur…) lorsque NBTExplorer était ouvert mais rien à faire :X donc bon c’est extrêmement étrange, je ne pense pas qu’il y a besoin de tester en relancer le pc pour bien reset la ram mais bon :') J’ai l’impression que je vais presque bientôt devoir testé x)
-
Tu as fait les tests en local sous Windows ?
Ton serveur de prod tourne sous Linux ? Si oui faudrait tester sur lui, car Linux a un comportement différent avec les fichiers (possibilité de modifier un truc même si quelque chose l’utilise, ce qui n’est pas le cas sous Windows). -
Oui sous Windows… Je vais essayer de faire ça et je te dis

-
Alors quand j’éxécute le code quand je suis déconnecté,
En locale ça modifie bien la booléenne et passe sur true
Sur Serveur Linux ça ne modifie pas la booléennePs: lorsque j’éxécute deux fois le code quand déconnecté, ça ne me marque pas si la valeur est sur true ou false avec les system.out.print
-
Print un peu de tout pour déboguer le code (le chemin du fichier, s’il existe, ce que le tab nbt contient, etc …).
-
J’ai préféré abandonné ce projet, préférant utilisé NBT Explorer à partir des UUID, sinon j’essaye côté plugin de get une booléenne gendarme dans un coumpound EEPRestrained:
J’éxécute ça côté plugin:
EntityPlayer entity = ((CraftPlayer)p).getHandle(); NBTTagCompound nbt = new NBTTagCompound(); entity.b(nbt); p.sendMessage(nbt + "!"); p.sendMessage(nbt.getCompound("EEPRestrained") + "!"); p.sendMessage(nbt.get("EEPRestrained") + "!"); p.sendMessage(nbt.getCompound("ForgeData") + "!"); p.sendMessage(nbt.get("ForgeData") + "!");Et j’obtiens ça:
[19:52:13] [Client thread/INFO]: [CHAT] {Spawns:[],bukkit:{newLevel:0,newExp:0,newTotalExp:0,firstPlayed:1464975640464L,lastKnownName:“Benjamin_Loison”,keepLevel:0b,expToDrop:0,lastPlayed:1466445126921L,},SleepTimer:0s,Health:20s,foodSaturationLevel:5.0f,Attributes:[0:{Base:20.0d,Name:“generic.maxHealth”,},1:{Base:0.0d,Name:“generic.knockbackResistance”,},2:{Base:0.10000000149011612d,Name:“generic.movementSpeed”,},3:{Base:1.0d,Name:“generic.attackDamage”,},],AbsorptionAmount:0.0f,XpLevel:0,abilities:{invulnerable:1b,mayfly:1b,instabuild:1b,walkSpeed:0.1f,mayBuild:1b,flying:1b,flySpeed:0.05f,},Score:0,Sleeping:0b,DeathTime:0s,XpP:0.0f,EnderItems:[],HealF:20.0f,XpTotal:0,foodLevel:20,foodExhaustionLevel:2.7223997f,HurtTime:0s,SelectedItemSlot:1,playerGameType:1,AttackTime:0s,Inventory:[0:{Slot:0b,id:323s,Count:1b,Damage:0s,},1:{Slot:1b,id:334s,Count:1b,Damage:0s,},2:{Slot:2b,id:89s,Count:1b,Damage:0s,},3:{Slot:3b,id:13s,Count:1b,Damage:0s,},4:{Slot:4b,id:271s,Count:1b,Damage:0s,},5:{Slot:5b,id:271s,Count:1b,Damage:0s,},6:{Slot:6b,id:217s,Count:1b,Damage:0s,},7:{Slot:7b,id:1s,Count:1b,Damage:0s,},8:{Slot:8b,id:225s,Count:1b,Damage:0s,},],foodTickTimer:0,}!
[19:52:13] [Client thread/INFO]: [CHAT] {}!
[19:52:13] [Client thread/INFO]: [CHAT] null!
[19:52:13] [Client thread/INFO]: [CHAT] {}!
[19:52:13] [Client thread/INFO]: [CHAT] null!Voici le rendu sur NBT Explorer de mes Tags (pièce jointe).
Une idée de pourquoi bukkit arrive à être lu contrairement à mon coumpound ?

Merci d’avance,
(Considérant que c’est autant du modding que du pluging, je poste sur ce forum qui peut m’apporter de l’aide)
-
Peut-être que l’api de bukkit limite volontairement aux données de bukkit ?
Je ne suis pas sûr, je n’ai jamais fait de plugin. -
Ca reste dérangeant, c’est toi qui m’avais dis qu’il fallait faire comme ça pour get côté serveur plugin les ExtendedEntityProperties
D’autres idées de comment get ces informations ? -
Je n’ai pas compris, tu souhaites récupérer le tag lié à la soif dans ton plugin pour gérer différentes autres choses, c’est bien ça ?? Sinon ce que tu peux faire, c’est t’intéresser de + près à comment bukkit gère les NBT de MC et voir si il serait possible de rajouter ton propre système pour justement autoriser ceux de forge à être lui, puisque comment ton message le montre, ce n’est pas le cas.
Sinon essaie de recoder le plugin dans ton mod forge, pour ne plus avoir ce problème. -
Nope

-
Vous ne connaissez pas sinon une libraries qui permet “d’ouvrir” les .dat pour en extraire les nbt … ça doit bien exister…
-
Si tu cherches à récupérer des informations relatives à un joueur : le contenu se trouve dans les tags nbt du joueur, auquel tu devrais avoir accès normalement
-
Les .dat sont lus via la classe CompressedSreamTools (regarde comme le OldSaveLoader l’utilise pour lire le WorldInfo).
Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk