-
Bonjour,
Je n’ai pas coupé le code, je n’ai juste pas tout pris le code (les imports et autres) mais la ligne 43 est au faite la ligne 28 pour le Gui
Cordialement, Xemnys
-
@Xemnys a dit dans Problème avec le Gui & Container [1.7.10] :
Je n’ai pas coupé le code, je n’ai juste pas tout pris le code (les imports et autres)
Imprimes ta classe sur une feuille de papier et coupe-là juste après les importations. Tu aura exactement le résultat qu’ici, c’est pour ça que j’ai dit “Dommage d’avoir coupé les importations”.
Cela correspond à ça :
if (this.tileForge.isBurning())
tileForge est donc null, tu peux envoyer le code de ton guihandler ? -
D’accord, voici le code du GuiHandler :
import cpw.mods.fml.common.network.IGuiHandler; import fr.irisium.irisiummod.container.ContainerForge; import fr.irisium.irisiummod.gui.GuiForge; import fr.irisium.irisiummod.tileentity.TileEntityForge; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; public class GuiHandler implements IGuiHandler { public GuiHandler (){ } @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if(ID == 0){ TileEntityForge tileEntityForge = (TileEntityForge) world.getTileEntity(x, y, z); return new ContainerForge(player.inventory, tileEntityForge); } return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if(ID == 0){ TileEntityForge tileEntityForgeContainer = (TileEntityForge) world.getTileEntity(x, y, z); return new GuiForge(player.inventory, tileEntityForgeContainer); } return null; } }Merci d’avoir pris du temps pour répondre à mon problème,
Cordialement, Xemnys -
Aucun problème ici, le seul moyen d’avoir un NPE est que
world.getTileEntity(x, y, z)renvoie null.Et en remontant à la classe de ton bloc, en effet à aucun moment tu n’indiques que ton bloc a un tile entity (il faut implémenter les méthodes
hasTileEntityetcreateTileEntity -
Bonsoir,
J’ai fait comme vous me l’avez dit, d’ajouter les méthodes hasTileEntity et createTileEntity dans la classe du block mais c’est toujours les mêmes crash-report.
Mais en regardant le crash-report, j’ai remarquer qu’il y a un soucis dans la ligne du “onBlockActivated” dans la classe BlockForgeMod.Merci d’avoir pris le temps de m’aider,
Cordialement, Xemnys -
Tu as mis quoi dans ces deux fonctions ?
Ton tile entity est bien enregistré ? https://www.minecraftforgefrance.fr/topic/995/ajouter-une-entité-à-votre-bloc-tile-entity -
Voici ce que j’ai mis dans les deux fonctions :
@Override public boolean hasTileEntity(int metadata) { return true; } @Override public TileEntity createTileEntity(World world, int metadata) { if(metadata == 0) { return new TileEntityForge(); } else if(metadata == 1) { return new TileEntityForge(); } else if(metadata == 2) { return new TileEntityForge(); } return null; }Et oui j’ai bien enregistrer le TileEntity.
-
J’ai fait des modifications dans la ligne “onBlockActivated” voici le code :
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) { if (world.isRemote) { return true; } else { TileEntityForge tileentityforge = (TileEntityForge)world.getTileEntity(x, y, z); if (tileentityforge != null) { player.openGui(IrisiumMod.instance, 0, world, x, y, z); } return true; } }Mais cette fois, quand on fait un clique droit sur le block, rien ne se passe. Pas de crash juste le gui qui ne veut pas s’ouvrir.
Cordialement, Xemnys.
-
Bonsoir,
Petite mise à jour au niveau du block, sur un court temps j’ai réussi à accéder au block mais après avoir cassé le block et l’avoir reposé. Je n’arrive plus à y accéder.
Cordialement, Xemnys.
-
Tu peux mettre directement comme ceci, sans check de metadata :
@Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityForge(); }Il y a une erreur dans les logs où quelque chose ?
-
C’est bon tout marche bien, merci beaucoup de ton aide
Cordialement, Xemnys