Aide pour faire un four
-
Je ne sais pas si ça résoudra le problème, mais c’est mieux de mettre la fonction de forge pour ouvrir le gui dans ta fonction onBlockActivated() :
remplace “playerIn.displayGUIChest((TileEntityFonderie)tileentityfonderie);” par “playerIn.openGui(id, mod, x, y, z)” (j’ai pas été exact dans les paramètres). -
@‘robin4002’:
Salut,
Il me faudrait le message d’erreur complet.Alors je sais pas si c’est exactement ce que tu demandes mais quand j’ouvre le gui sur le bloc en question, j’ai ça dans la console :
[05:58:03] [Client thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index: 36, Size: 36 at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.7.0_79] at java.util.concurrent.FutureTask.get(FutureTask.java:188) ~[?:1.7.0_79] at net.minecraft.util.Util.runTask(Util.java:23) [Util.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1070) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:380) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:116) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79] at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] at GradleStart.main(GradleStart.java:26) [start/:?] Caused by: java.lang.IndexOutOfBoundsException: Index: 36, Size: 36 at java.util.ArrayList.rangeCheck(ArrayList.java:635) ~[?:1.7.0_79] at java.util.ArrayList.get(ArrayList.java:411) ~[?:1.7.0_79] at net.minecraft.inventory.Container.getSlot(Container.java:125) ~[Container.class:?] at net.minecraft.inventory.Container.putStacksInSlots(Container.java:551) ~[Container.class:?] at net.minecraft.client.network.NetHandlerPlayClient.handleWindowItems(NetHandlerPlayClient.java:1209) ~[NetHandlerPlayClient.class:?] at net.minecraft.network.play.server.S30PacketWindowItems.processPacket(S30PacketWindowItems.java:67) ~[S30PacketWindowItems.class:?] at net.minecraft.network.play.server.S30PacketWindowItems.processPacket(S30PacketWindowItems.java:12) ~[S30PacketWindowItems.class:?] at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[?:1.7.0_79] at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[?:1.7.0_79] at net.minecraft.util.Util.runTask(Util.java:22) ~[Util.class:?] … 15 more [05:58:10] [Client thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index: 36, Size: 36 at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.7.0_79] at java.util.concurrent.FutureTask.get(FutureTask.java:188) ~[?:1.7.0_79] at net.minecraft.util.Util.runTask(Util.java:23) [Util.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1070) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:380) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:116) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79] at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79] at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] at GradleStart.main(GradleStart.java:26) [start/:?] Caused by: java.lang.IndexOutOfBoundsException: Index: 36, Size: 36 at java.util.ArrayList.rangeCheck(ArrayList.java:635) ~[?:1.7.0_79] at java.util.ArrayList.get(ArrayList.java:411) ~[?:1.7.0_79] at net.minecraft.inventory.Container.getSlot(Container.java:125) ~[Container.class:?] at net.minecraft.inventory.Container.putStacksInSlots(Container.java:551) ~[Container.class:?] at net.minecraft.client.network.NetHandlerPlayClient.handleWindowItems(NetHandlerPlayClient.java:1209) ~[NetHandlerPlayClient.class:?] at net.minecraft.network.play.server.S30PacketWindowItems.processPacket(S30PacketWindowItems.java:67) ~[S30PacketWindowItems.class:?] at net.minecraft.network.play.server.S30PacketWindowItems.processPacket(S30PacketWindowItems.java:12) ~[S30PacketWindowItems.class:?] at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[?:1.7.0_79] at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[?:1.7.0_79] at net.minecraft.util.Util.runTask(Util.java:22) ~[Util.class:?] … 15 more [05:58:34] [Client thread/INFO]: Stopping! [05:58:34] [Client thread/INFO]: SoundSystem shutting down…
-
Oui donc AymericRed a raison, le problème vient du fait que tu utilises la méthode de mc, donc il tente d’ouvrir le mauvais container. Faut passer par openGUI + un gui handler.
-
Alors, je pense que ma façon de faire doit pas être la bonne, pourtant je n’arrive pas à trouver de différence entre ce que j’ai sur mes classes et celles de mods existants qui fonctionnent.
J’ai donc bel et bien mis ça à la place :player.openGui(Xtrem.instance, 0, world, (int)player.posX, (int)player.posY, (int)player.posZ);Le gui ne s’ouvre plus du tout, mais je n’ai aucun message d’erreur donc je sais pas quoi faire

J’ai mis toutes les classes de mon bloc dans une archive.Mon guiHandler est fait de cette façon
package com.xtrem.util; import com.xtrem.outilleur.forge.ContainerFonderie; import com.xtrem.outilleur.forge.GuiFonderie; import com.xtrem.outilleur.forge.TileEntityFonderie; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; public class GuiHandler implements IGuiHandler{ @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity tile_entity = world.getTileEntity(new BlockPos(x, y, z)); if (tile_entity instanceof TileEntityFonderie) { System.out.println("Get ClientGuiElem"); return new ContainerFonderie(player.inventory, (TileEntityFonderie) tile_entity); } return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity tile_entity = world.getTileEntity(new BlockPos(x, y, z)); if (tile_entity instanceof TileEntityFonderie) { System.out.println("Get ClientGuiElem"); return new GuiFonderie(player.inventory, (TileEntityFonderie) tile_entity); } return null; } }et je register ça dans mon mod class comme ça
@EventHandler public void init(FMLInitializationEvent event) { /** Render Registering */ proxy.registerRenders(); /** GUI Handler Registering */ NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler()); /** TileEntity Registering */ XtremTileEntities.register(); }J’ai essayé pas mal de choses, alors après c’était la nuit donc j’imagine que j’étais pas au top, mais la j’avoue que je suis aux limites de ma compréhension du java (j’imagine que c’est un truc tout con en plus)
-
La convention. tile_entity -> tileEntity.
Est-ce que le message est affiché dans la console ? -
@‘Snowy_1803’:
La convention. tile_entity -> tileEntity.
Est-ce que le message est affiché dans la console ?Je ne suis pas sur de comprendre ce que tu me demandes

Haa, si c’est bon j’ai compris. Non, le message ne s’affiche pas. Il n’y a que celui que j’ai rajouté dans la classe du block sur onActivatedBlock
-
Tu n’as pas le message “Get ClientGuiElem” qui s’affiche ?
Pourtant ton GuiHandler est bien enregistré, le prob vient sûrement de ta condition, essaie de print les 2 méthodes getClientGuiElement et getServerGuiElement. -
Le seul message que j’ai dans la console c’est “Le Gui est la” que je print depuis le onActivatedBlock. Rien d’autre en fait

-
Normalement les méthodes sont appelées c’est byzarre, mais même si elles sont appelées, ça marchera pas, faut pos.getX() au lieu de player.posX
-
tu parles de ça?
player.openGui(Xtrem.instance, 0, world, pos.getX(), pos.getY(), pos.getZ());
-
Oui je parlait de ça

-
Je viens de tester mais ça ne change rien du tout en fait xD J’imagine que j’ai tout cassé la lol
Je me suis aussi rendu compte que j’avais pas filé les bons fichiers au cas ou
-
Dans ton container :
@Override public boolean canInteractWith(EntityPlayer player) { // TODO Auto-generated method stub return false; }Doit retourner true pour que ça marche.
PS: l’éditeur est complètement buggé, les flèches directionneles fonctionnent de manière anarchique tout comme la touche entrée, et impossible d’effacer un retour à la ligne (je précise que ce n’est pas toujours, des fois ça le fait des fois pas)

-
J’avais lu quelque part que ça devait être mis sur false. Quoiqu’il en soit, aucune différence apparemment

-
Si false, ça ne pourra jamais être ouvert par un joueur.
Et essaye de changer ta ligne de registry de l’Handler par ça : NetworkRegistry.INSTANCE.registerGuiHandler(this.instance, new GuiHandler());
(J’ai rajouté le .instance) -
Okay… j’ai été con je crois. J’aurai passé le mod class, vous auriez trouvé de suite je pense… Je viens de renommer mon instance avec le même nom que le modid et la ça marche
Merci quand même ^^’ J’aurai quand même appris qqchose

-
Et ben c’est bien

De rien. -
N’oulies pas la balise résolu si c’est résolu.