[Inventaire personnalisé] Par ou commencer
-
Trop de choses que je comprend pas dans le tutoriel que j’ai suivi, de plus il est en 1.6.4, je reprend tout et je ferais une liste de ce qui me bloque ou ce que je comprend pas…
Et c’était tagCount qui n’était pas utilisé
Ok du coup je reprend tout à partir des classes de bases et en m’aidant d’un mod existant mais quelqu’un sait ou je peux trouver des exemples sans les func_16424_d (exemple), car je ne sait pas trop quoi mettre dans ma fonction “markDirty()”
-
hein ? Tu as copié des mods avec des noms obfusqués ?
-
Bah j’ai demandé a un mec le mod qu’il utilisait sur son ancien serveur pour voir à quoi il ressemblait et il me l’a filé mais sous forme de mod, du coup il m’a conseillé d’utiliser jd-gui pour le lire.
EDIT : Je cherche donc toujours une fonction de base markDirty() que je pourrais modifier pour qu’elle corresponde à ce que je cherche et je n’ai toujours pas trouvé de solution pour le “tagAt” :
public void readFromNBT(NBTTagCompound compound) { NBTTagList items = compound.func_150295_c("CustomInvTag", compound.tagAt()); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.tagAt(i); byte slot = item.getByte("Slot"); if ((slot >= 0) && (slot < getSizeInventory ())) { this.inventory[slot] = ItemStack.loadItemStackFromNBT(item); } } }L’erreur : The method tagAt() is undefined for the type NBTTagCompound
-
Pour retrouver les bons noms, tu peux utiliser BON2 (disponible sur github).
Regarde plutôt les tutoriels disponibles sur le forum pour ce genre de choses car ils sont mieux faits ici
-
@‘SCAREX’:
Pour retrouver les bons noms, tu peux utiliser BON2 (disponible sur github).
Regarde plutôt les tutoriels disponibles sur le forum pour ce genre de choses car ils sont mieux faits ici
Je vais voir ça, je n’ai pas trouvé de tutoriel pour ça mais je vais re-chercher
-
-
@‘SCAREX’:
https://www.minecraftforgefrance.fr/showthread.php?tid=2082
https://www.minecraftforgefrance.fr/showthread.php?tid=2017Ah oui je les avaient vus mais ils correspondent pas vraiment à ce que je veux.
Sinon entre temps j’ai repris tout le code qu’on m’avait donné grâce à BON2 en le modifiant à ma sauve mais j’ai des erreurs au lancement que je comprend pas trop, si quelqu’un veut bien se dévouer pour me les “traduire”, ce serait super gentil.
http://pastebin.com/5r9iVABN (sous pastebin car c’est long)
J’ai vu que ca avait l’air de planter avec les ChannelPipeline (un doublon ? je n’en ai pas vu) voici donc le code de PacketPipeline : http://pastebin.com/4FySm6x7
Je ne sait pas si cela peut aider mais j’ai aussi AbstractPacket pour les Packets donc voici son code (d’ailleurs, dans Eclipse dans mon Package Explorer, à gauche j’ai un petit A en haut à droite de la feuille de code)
http://pastebin.com/E8cZ6WegMerci d’avance !
-
Quelle est la version de minecraft d’où vient ce code ?
-
@‘SCAREX’:
Quelle est la version de minecraft d’où vient ce code ?
1.7.10
-
Essaie avec cette méthode pour les paquets : https://www.minecraftforgefrance.fr/showthread.php?tid=1118
-
@‘SCAREX’:
Essaie avec cette méthode pour les paquets : https://www.minecraftforgefrance.fr/showthread.php?tid=1118
Mais du coup pourquoi tout refaire ? Peut etre que c’est juste un petit truc qui bloque quoi
Edit : j’ai trouvé les deux lignes qui posent problème :
Dans ma classe qui principale de l’inventaire :
@Mod.EventHandler public void init(FMLInitializationEvent event) { proxy.registerRender(); PacketPipeline.initialise(); MinecraftForge.EVENT_BUS.register(new DCEDOEventHandler()); FMLCommonHandler.instance().bus().register(new DCEDOEventHandler()); NetworkRegistry.INSTANCE.registerGuiHandler(this, new DCEDOCommonProxy()); } la ligne : PacketPipeline.initialise();Dans ma classe PacketPipeline :
public void initialise() { this.channels = NetworkRegistry.INSTANCE.newChannel("DCEDOInventory", new ChannelHandler[] { this }); registerPackets(); } la ligne : this.channels = NetworkRegistry.INSTANCE.newChannel("DCEDOInventory", new ChannelHandler[] { this });Je sais que c’est elle qui posent problème car dans la console lors du crash est affiché :
at fr.shyfe.dcedo.common.PacketPipeline.initialise(PacketPipeline.java:94) ~[bin/:?]
at fr.shyfe.dcedo.common.DCEDOInventory.init(DCEDOInventory.java:38) ~[bin/:?]
Et ce sont les seuls qui viennent de moi.
-
Pourquoi tout refaire ?
Car ce système de paquet cause une fuite de mémoire.
Il est mal conçu. -
@‘robin4002’:
Pourquoi tout refaire ?
Car ce système de paquet cause une fuite de mémoire.
Il est mal conçu.Oui je vois, je vais essayer alors
-
J’ai plusieurs problèmes avec mon inventaire personnalisé:
-Quand on clique sur un items pour le déplacer, il est directement remis à sa place donc impossible de déplacer les items et si on fais clique molette et qu’on met un objet dans un autre slot et puis qu’on clique dessus, il disparait
-Quand j’arrive à mettre un item dans un de mes slots perso, quand je ferme l’inventaire il est droppéMerci d’avance
