MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Problème avec le Gui & Container [1.7.10]

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    13 Messages 2 Publieurs 726 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par robin4002

      Bonjou,
      Dommage d’avoir coupé les importations, ça rend faux les numéros de ligne du code.
      À quoi correspond la ligne 43 de la classe GuiForge.java ? Le NullPointerException est déclenché par cette dernière.

      1 réponse Dernière réponse Répondre Citer 0
      • XemnysX Hors-ligne
        Xemnys
        dernière édition par

        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

        robin4002R 1 réponse Dernière réponse Répondre Citer 0
        • robin4002R Hors-ligne
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs @Xemnys
          dernière édition par robin4002

          @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 ?

          1 réponse Dernière réponse Répondre Citer 0
          • XemnysX Hors-ligne
            Xemnys
            dernière édition par

            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

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

              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 hasTileEntity et createTileEntity

              1 réponse Dernière réponse Répondre Citer 0
              • XemnysX Hors-ligne
                Xemnys
                dernière édition par

                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

                1 réponse Dernière réponse Répondre Citer 0
                • robin4002R Hors-ligne
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                  dernière édition par

                  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

                  1 réponse Dernière réponse Répondre Citer 0
                  • XemnysX Hors-ligne
                    Xemnys
                    dernière édition par

                    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.

                    1 réponse Dernière réponse Répondre Citer 0
                    • XemnysX Hors-ligne
                      Xemnys
                      dernière édition par Xemnys

                      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.

                      1 réponse Dernière réponse Répondre Citer 0
                      • XemnysX Hors-ligne
                        Xemnys
                        dernière édition par

                        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.

                        1 réponse Dernière réponse Répondre Citer 0
                        • robin4002R Hors-ligne
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                          dernière édition par robin4002

                          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 ?

                          1 réponse Dernière réponse Répondre Citer 0
                          • XemnysX Hors-ligne
                            Xemnys
                            dernière édition par Xemnys

                            C’est bon tout marche bien, merci beaucoup de ton aide

                            Cordialement, Xemnys

                            1 réponse Dernière réponse Répondre Citer 0
                            • 1 / 1
                            • Premier message
                              Dernier message
                            Design by Woryk
                            ContactMentions Légales

                            MINECRAFT FORGE FRANCE © 2024

                            Powered by NodeBB