Résolu Mettre à jour une TileEntity sur un serveur
-
Bonjour !
(Yep, ça fait un moment, j’ai du boulot ! En même temps quand je suis pas là je vous casse pas les pieds avec mes problèmes ^^)
J’ai mis à jour mon mod en 1.7.10 et j’ai rencontré un souci, toujours le même : comment régler mes packets pour mettre à jour mon TileEntitySoundBlock et comment créer mon PacketHandler.J’ai lu le tuto sur le NetWork 1.7.x mais je ne vois pas comment transmettre le World dans le packet.
Je vous remercie d’avance,
EclipseOnFire -
A t’on vraiment besoin de lire 500 lignes de code pour t’aider ?
Localise le problème et donne nous des informations pertinantes
Personne n’a envie de se taper un livre pour répondre a ta question.
Ce n’est pas a nous de chercher dans l’ensemble de ton code la partie qui pose problème, c’est a toi de nous la donner avec le plus de précision. Contrairement a toi, nous ne connaissons pas ton code et ta logique. Donc chercher dans le code de quelqu’un d’autre, ce n’est pas le même exercice que chercher dans le siens.Je n’ai pas lu ton code, par contre, d’après l’énoncé que tu donnes du problème, tu cherches comment transmettre un TileEntity via les packets.
Ce que tu peux faire, c’est envoyer l’id de la dimension, et les coord x,y,z de ton objet.
Pour sérialiser :
id dimension : tonTileEntity.getWorldObj().provider.dimensionId
x,y,z : respectivement tonTileEntity.xCoord/yCoord/zCoord (ou un truc du genre)pour désérialiser :
Tu obtiens le monde avec : DimensionManager.getProvider(dimension).worldObj
Une fois que tu as ton monde, tu l’utilises avec tonObjectWorld.getTileEntity(x,y,z);J’espère avoir répondu au moins partiellement à ta question
-
@‘Blackout’:
A t’on vraiment besoin de lire 500 lignes de code pour t’aider ?
Localise le problème et donne nous des informations pertinantes
Personne n’a envie de se taper un livre pour répondre a ta question.
Ce n’est pas a nous de chercher dans l’ensemble de ton code la partie qui pose problème, c’est a toi de nous la donner avec le plus de précision. Contrairement a toi, nous ne connaissons pas ton code et ta logique. Donc chercher dans le code de quelqu’un d’autre, ce n’est pas le même exercice que chercher dans le siens.Je n’ai pas lu ton code, par contre, d’après l’énoncé que tu donnes du problème, tu cherches comment transmettre un TileEntity via les packets.
Ce que tu peux faire, c’est envoyer l’id de la dimension, et les coord x,y,z de ton objet.
Pour sérialiser :
id dimension : tonTileEntity.getWorldObj().provider.dimensionId
x,y,z : respectivement tonTileEntity.xCoord/yCoord/zCoord (ou un truc du genre)pour désérialiser :
Tu obtiens le monde avec : DimensionManager.getProvider(dimension).worldObj
Une fois que tu as ton monde, tu l’utilises avec tonObjectWorld.getTileEntity(x,y,z);J’espère avoir répondu au moins partiellement à ta question
Nan le code c’est juste au cas où. Sinon, je vais essayer, mais tu as répondu à mon problème, oui.
-
-
@‘robin4002’:
Et sinon tu as player.worldObj :
https://github.com/FFMT/nanotech_mod/blob/nanotechmod3/src/fr/mcnanotech/kevin_68/nanotechmod/core/network/packets/PacketSpotLightKey.java#L67Mais c’est un packet de la FFMT non ? Vu que je ne l’utilise pas c’est différent.
-
Tu peux aussi avoir l’instance du joueur si tu as suivis le tutoriel de blackout :
ctx.getServerHandler().playerEntity -
@‘robin4002’:
Tu peux aussi avoir l’instance du joueur si tu as suivis le tutoriel de blackout :
ctx.getServerHandler().playerEntityAh je pensais pas qu’on pouvait utiliser le monde dans lequel se trouve le joueur… C’est vrai que ça marche aussi…
Dernière question : pour mettre à jour le TileEntity d’un bloc, c’est : world.setTileEntity(x, y, z, tile); ou autre chose ? -
Heu ? Non ça c’est pour placer un tile entity dans le monde.
Si tu veux changer une valeur dans le tile entity, passe par un setter, et après pour forcer la synchro côté client, tu fais un world.markBlockForUpdate -
What ??
Je comprends pas cette erreur, si quelqu’un a une idée… Je suis preneur ![16:17:06] [Client thread/ERROR] [FML]: Fatal errors were detected during the transition from PREINITIALIZATION to INITIALIZATION. Loading cannot continue [16:17:06] [Client thread/ERROR] [FML]: mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized FML{7.10.18.1182} [Forge Mod Loader] (bin) Unloaded->Constructed->Pre-initialized Forge{10.13.0.1182} [Minecraft Forge] (bin) Unloaded->Constructed->Pre-initialized WSMod{1.0.0} [Wirestone Mod] (bin) Unloaded->Constructed->Pre-initialized flansmod{4.3.0} [Flan's Mod] (Flans Mod-1.7.2-4.3.0.jar) Unloaded->Constructed->Errored [16:17:06] [Client thread/ERROR] [FML]: The following problems were captured during this phase [16:17:06] [Client thread/ERROR] [FML]: Caught exception from flansmod java.lang.NoSuchFieldError: field_151573_f at com.flansmod.common.BlockFlansWorkbench.<init>(BlockFlansWorkbench.java:24) ~[Flans%20Mod-1.7.2-4.3.0.jar:?] at com.flansmod.common.FlansMod.preInit(FlansMod.java:161) ~[Flans%20Mod-1.7.2-4.3.0.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:513) ~[bin/:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?] at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?] at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:208) ~[bin/:?] at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:187) ~[bin/:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?] at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?] at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:118) [LoadController.class:?] at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:513) [Loader.class:?] at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:239) [FMLClientHandler.class:?] at net.minecraft.client.Minecraft.startGame(Minecraft.java:532) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:941) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at net.minecraft.launchwrapper.Launch.launch(Launch.java:134) [launchwrapper-1.9.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.9.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at GradleStart.bounce(GradleStart.java:95) [start/:?] at GradleStart.startClient(GradleStart.java:88) [start/:?] at GradleStart.main(GradleStart.java:66) [start/:?] ```</init>
-
Tu ne peux pas utiliser un mod compilé normalement dans un environnement de dev.
-
Ah d’accord ! Je fais comment pour avoir l’API sous la main du coup ? J’aimerais bien le rendre compatible avec mon mod…
-
Prends les sources sur github ? https://github.com/FlansMods/FlansMod
-
@‘robin4002’:
Prends les sources sur github ? https://github.com/FlansMods/FlansMod
Heu et je met les package avec le mien (src/main/java) ou j’utilise Eclipse (add external folder) du coup ?
-
Le deux fonctionnent, mais la première solution est plus simple pour compiler après.
-
@‘robin4002’:
Le deux fonctionnent, mais la première solution est plus simple pour compiler après.
Soit. En revanche il faudra veiller à séparer les deux mods dans le zip c’est bien ça ?
-
Oui.
-
C’est bon ! Le système fonctionne parfaitement ! Merci beaucoup à vous deux ! Franchement tu devrais être rémunéré Robin ^^.
-
Si tu le souhaites, tu peux faire un don pour payer robin.
-
@‘Superloup10’:
Si tu le souhaites, tu peux faire un don pour payer robin.
Pourquoi pas x) Après toute l’aide qu’il fournit il le mérite !