GUI d'une enclume + questions sur dimensions
-
ça changement quoi concrètement?
même soucis
merci pour la couleur
-
xavpok, c’est la même chose.
-
après quelques recherche, j’ai restreint mon champ de recherche:
public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { if (par1World.isRemote) { return true; } else { par5EntityPlayer.openGui(Import.instance, 2, par1World, par2, par3, par4); return true; } }Avec ce code, le GUI ne s’ouvre pas du tout
par contre si j’utilise celui ci:public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { FMLNetworkHandler.openGui(par5EntityPlayer, Import.instance, 2, par1World, par2, par3, par4); return true; }Il s’ouvre puis se referme juste après
si par contre avec eclispe je mets un breakpoint sur le return, eclispe coupe 2 fois, puis ouvre le GUI sans le refermer.
quelqu’un aurait il une idéeµ? le reste du code est toujours le même. -
Personnellement, je fais comme ceci ```java
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
{
TileEntityCompressor compressor = (TileEntityCompressor) world.getTileEntity(x, y, z);if(compressor != null)
{
player.openGui(Wolf_Addons.instance, 0, world, x, y, z);
}
return true;
}
}Et cela fonctionne parfaitement. -
En modifiant mon code selon ton modèle, j’obtiens cela:
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 { int block = world.getBlockId(x, y, z); if(block == Import.Rubanvil.blockID) { FMLNetworkHandler.openGui(player, Import.instance, 2, world, x, y, z); } return true; } }je pense que le soucis vient de: if(world.isRemote) mais je ne comprends pas en quoi.
-
non pas sur l’enclume, c’est ce que je trouve byzarre aussi
-
Oups, désolé, j’ai supprimé mon post. Mais l’enclume vanilla a bien une tileEntity?
-
non justement, j’ai simplement copié celle vanilla et c’est ce qui m’a paru byzarre
-
world.isRemote = world client
!world.isRemote = world server.
Cette méthode est fait en client et serveur, normalement le open gui doit être fait côté serveur, donc ça m’a l’air bon.
Je pense que le problème vient plutôt du gui handler. Il est bien enregistré ?
Limite, remplace :if(block == Import.Rubanvil.blockID) { FMLNetworkHandler.openGui(player, Import.instance, 2, world, x, y, z); System.out.println("ouverture du gui"); }Et dans ton gui handler, dans la condition pour ton gui, met aussi un println, puis regarde lequel ne s’affiche pas.
-
EN fait j’ai testé en remplaçant simplement world.isremote par !world.isRemote
et la le GUI s’ouvre sans se refermer, il est cependant complétement bugué.Je récapitule: Si je ne mets pas de condition et que je lui dis clairement d’ouvrir le GUI, il me l’ouvre puis le referme sauf si je mets un breakpoint sur le return.
Si je mets if (!world.isRemote) le GUI s’ouvre mais côté client donc inutilisable
mon code est éxactement le même que celui de l’enclume normale
qu’ai je biens pus oublier?Autre remarque: j’ai mis deux println, un dans l’ouverture du GUI, l’autre dans le Handler
or à chaque fois que je fais un clic sur mon enclume, chaque message apparait en double
quand je mets une condition isremote aussi, peu importe le sens que je mette world ou !world, il me l’affiche 4 fois.
