MFF

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

    Bloc rendu TESR crash

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    17 Messages 3 Publieurs 2.5k Vues 1 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

      Les rendus des mobs que tu enregistres dans ClientProxy fonctionnent-t-ils ?

      Niveau code, tu peux commencer par le formater et respecter la convention java (pas de majuscule dans les noms de package, une majuscule à chaque début de classe, etc …).

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

        @‘robin4002’:

        Les rendus des mobs que tu enregistres dans ClientProxy fonctionnent-t-ils ?

        Niveau code, tu peux commencer par le formater et respecter la convention java (pas de majuscule dans les noms de package, une majuscule à chaque début de classe, etc …).

        Mes mobs fonctionnent parfaitement, j’ai beau re-vérifier, je ne trouve pas ce qui ne va pas

        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

          Envoies-moi un zip de ton src par mp, je regarderai ce soir.

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

            @‘robin4002’:

            Envoies-moi un zip de ton dossier sections par mois, je regarderai ce soir.

            Je dois faire quoi exactement ? Je ne sais pas à quoi correspond sections et Google ne m’a pas aidé

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

              Je pense qu’il voulait dire “dossier src”, mais que son correcteur automatique a fait quelque chose de foireux.

              Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

              AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

              Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
              Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                @‘AymericRed’:

                Je pense qu’il voulait dire “dossier src”, mais que son correcteur automatique a fait quelque chose de foireux.

                D’accord, merci

                Je l’ai envoyé par mp

                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

                  “src” c’est visiblement transformé en “section” et “mp” en “mois”.

                  GG à AymericRed qui a un très bon déchiffreur 😄

                  J’aurai du pensé à me relire x)

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

                    J’ai pas déchiffré, j’ai supposé que t’avais voulu dire ça 😛

                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                    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

                      Dans le src que tu m’as envoyé il y avait deux classes FlagSpawn.
                      Une dans le package BlockPers et l’autre dans le package fr.shyfe.dcedo.common.
                      J’ai viré celle dans fr.shyfe.dcedo.common qui ne semble pas utilisé.

                      Et elle avait tout le deux le code suivant :

                      package BlockPers;
                      
                      import net.minecraft.block.Block;
                      import net.minecraft.block.material.Material;
                      import net.minecraft.tileentity.TileEntity;
                      import net.minecraft.world.World;
                      
                      public class FlagSpawn extends Block
                      {
                      
                      public FlagSpawn(Material material)
                      {
                      super(material);
                      }
                      
                      @Override
                      public TileEntity createTileEntity(World world, int metadata)
                      {
                      return new TileEntityFlagSpawn();
                      }
                      
                      @Override
                      public boolean hasTileEntity(int metadata)
                      {
                      return true;
                      }
                      
                      public boolean isOpaqueCube()
                      {
                      return false;
                      }
                      
                      public boolean renderAsNormalBlock()
                      {
                      return false;
                      }
                      
                      public int getRenderType()
                      {
                      return -1;
                      }
                      }
                      

                      Qui n’est pas vraiment celui tu as envoyé.
                      Avec ce code, c’est normal que le rendu et la direction ne fonctionne pas.

                      Après avoir modifié la classe comme ceci :

                      package BlockPers;
                      
                      import fr.shyfe.dcedo.proxy.ClientProxy;
                      import net.minecraft.block.Block;
                      import net.minecraft.block.material.Material;
                      import net.minecraft.entity.EntityLivingBase;
                      import net.minecraft.item.ItemStack;
                      import net.minecraft.tileentity.TileEntity;
                      import net.minecraft.util.MathHelper;
                      import net.minecraft.world.IBlockAccess;
                      import net.minecraft.world.World;
                      import net.minecraftforge.common.util.ForgeDirection;
                      
                      public class FlagSpawn extends Block
                      {
                      public FlagSpawn(Material material)
                      {
                      super(material);
                      }
                      
                      public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z)
                      {
                      this.setBlockBounds(0.06F, 0.0F, 0.06F, 0.94F, 0.88F, 0.94F);
                      }
                      
                      @Override
                      public TileEntity createTileEntity(World world, int metadata)
                      {
                      return new TileEntityFlagSpawn();
                      }
                      
                      @Override
                      public boolean hasTileEntity(int metadata)
                      {
                      return true;
                      }
                      
                      public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
                      {
                      if(stack.getItemDamage() == 0)
                      {
                      TileEntity tile = world.getTileEntity(x, y, z);
                      if(tile instanceof TileEntityFlagSpawn)
                      {
                      int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
                      ((TileEntityFlagSpawn)tile).setDirection((byte)direction);
                      }
                      }
                      }
                      
                      @Override
                      public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
                      {
                      if((axis == ForgeDirection.UP || axis == ForgeDirection.DOWN) && !world.isRemote && world.getBlockMetadata(x, y, z) == 0)
                      {
                      TileEntity tile = world.getTileEntity(x, y, z);
                      if(tile instanceof TileEntityFlagSpawn)
                      {
                      TileEntityFlagSpawn tileDirectional = (TileEntityFlagSpawn)tile;
                      byte direction = tileDirectional.getDirection();
                      direction++;
                      if(direction > 3)
                      {
                      direction = 0;
                      }
                      tileDirectional.setDirection(direction);
                      return true;
                      }
                      }
                      return false;
                      }
                      
                      public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
                      {
                      return world.getBlockMetadata(x, y, z) == 0 ? new ForgeDirection[] {ForgeDirection.UP, ForgeDirection.DOWN} : ForgeDirection.VALID_DIRECTIONS; // si le metadata est 0, les deux directions sur
                      // lesquels on peut faire tourner le bloc, sinon
                      // toutes les directions ce qui est la valeur par
                      // défaut pour les blocs non directionnels.
                      }
                      
                      public boolean isOpaqueCube()
                      {
                      return false;
                      }
                      
                      public boolean renderAsNormalBlock()
                      {
                      return false;
                      }
                      
                      public int getRenderType()
                      {
                      return ClientProxy.tesrRenderId;
                      }
                      }
                      

                      C’est ok :
                      http://puu.sh/tlfCt/330fb303b5.jpg

                      Et j’ai vérifie avec un point d’arrêt en debug la fonction writeToNBT de la classe tile entity (celle-ci) :

                      public void writeToNBT(NBTTagCompound p_145841_1_)
                      {
                      String s = (String)classToNameMap.get(this.getClass());
                      
                      if (s == null)
                      {
                      throw new RuntimeException(this.getClass() + " is missing a mapping! This is a bug!");
                      }
                      else
                      {
                      p_145841_1_.setString("id", s);
                      p_145841_1_.setInteger("x", this.xCoord);
                      p_145841_1_.setInteger("y", this.yCoord);
                      p_145841_1_.setInteger("z", this.zCoord);
                      }
                      }
                      

                      Et chez moi s avait bien la valeur attendu, donc le jeu ne crash pas.

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

                        @‘robin4002’:

                        Dans le src que tu m’as envoyé il y avait deux classes FlagSpawn.
                        Une dans le package BlockPers et l’autre dans le package fr.shyfe.dcedo.common.
                        J’ai viré celle dans fr.shyfe.dcedo.common qui ne semble pas utilisé.

                        Et elle avait tout le deux le code suivant :

                        package BlockPers;
                        
                        import net.minecraft.block.Block;
                        import net.minecraft.block.material.Material;
                        import net.minecraft.tileentity.TileEntity;
                        import net.minecraft.world.World;
                        
                        public class FlagSpawn extends Block
                        {
                        
                           public FlagSpawn(Material material)
                           {
                               super(material);
                           }
                        
                           @Override
                           public TileEntity createTileEntity(World world, int metadata)
                           {
                               return new TileEntityFlagSpawn();
                           }
                        
                           @Override
                           public boolean hasTileEntity(int metadata)
                           {
                               return true;
                           }
                        
                           public boolean isOpaqueCube()
                           {
                               return false;
                           }
                        
                           public boolean renderAsNormalBlock()
                           {
                               return false;
                           }
                        
                           public int getRenderType()
                           {
                               return -1;
                           }
                        }
                        

                        Qui n’est pas vraiment celui tu as envoyé.
                        Avec ce code, c’est normal que le rendu et la direction ne fonctionne pas.

                        Après avoir modifié la classe comme ceci :

                        package BlockPers;
                        
                        import fr.shyfe.dcedo.proxy.ClientProxy;
                        import net.minecraft.block.Block;
                        import net.minecraft.block.material.Material;
                        import net.minecraft.entity.EntityLivingBase;
                        import net.minecraft.item.ItemStack;
                        import net.minecraft.tileentity.TileEntity;
                        import net.minecraft.util.MathHelper;
                        import net.minecraft.world.IBlockAccess;
                        import net.minecraft.world.World;
                        import net.minecraftforge.common.util.ForgeDirection;
                        
                        public class FlagSpawn extends Block
                        {
                           public FlagSpawn(Material material)
                           {
                               super(material);
                           }
                        
                           public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z)
                           {
                               this.setBlockBounds(0.06F, 0.0F, 0.06F, 0.94F, 0.88F, 0.94F);
                           }
                        
                           @Override
                           public TileEntity createTileEntity(World world, int metadata)
                           {
                               return new TileEntityFlagSpawn();
                           }
                        
                           @Override
                           public boolean hasTileEntity(int metadata)
                           {
                               return true;
                           }
                        
                           public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
                           {
                               if(stack.getItemDamage() == 0)
                               {
                                   TileEntity tile = world.getTileEntity(x, y, z);
                                   if(tile instanceof TileEntityFlagSpawn)
                                   {
                                       int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
                                       ((TileEntityFlagSpawn)tile).setDirection((byte)direction);
                                   }
                               }
                           }
                        
                           @Override
                           public boolean rotateBlock(World world, int x, int y, int z, ForgeDirection axis)
                           {
                               if((axis == ForgeDirection.UP || axis == ForgeDirection.DOWN) && !world.isRemote && world.getBlockMetadata(x, y, z) == 0)
                               {
                                   TileEntity tile = world.getTileEntity(x, y, z);
                                   if(tile instanceof TileEntityFlagSpawn)
                                   {
                                       TileEntityFlagSpawn tileDirectional = (TileEntityFlagSpawn)tile;
                                       byte direction = tileDirectional.getDirection();
                                       direction++;
                                       if(direction > 3)
                                       {
                                           direction = 0;
                                       }
                                       tileDirectional.setDirection(direction);
                                       return true;
                                   }
                               }
                               return false;
                           }
                        
                           public ForgeDirection[] getValidRotations(World world, int x, int y, int z)
                           {
                               return world.getBlockMetadata(x, y, z) == 0 ? new ForgeDirection[] {ForgeDirection.UP, ForgeDirection.DOWN} : ForgeDirection.VALID_DIRECTIONS; // si le metadata est 0, les deux directions sur
                                                                                                                                                                              // lesquels on peut faire tourner le bloc, sinon
                                                                                                                                                                              // toutes les directions ce qui est la valeur par
                                                                                                                                                                              // défaut pour les blocs non directionnels.
                           }
                        
                           public boolean isOpaqueCube()
                           {
                               return false;
                           }
                        
                           public boolean renderAsNormalBlock()
                           {
                               return false;
                           }
                        
                           public int getRenderType()
                           {
                               return ClientProxy.tesrRenderId;
                           }
                        }
                        

                        C’est ok :
                        http://puu.sh/tlfCt/330fb303b5.jpg

                        Et j’ai vérifie avec un point d’arrêt en debug la fonction writeToNBT de la classe tile entity (celle-ci) :

                           public void writeToNBT(NBTTagCompound p_145841_1_)
                           {
                               String s = (String)classToNameMap.get(this.getClass());
                        
                               if (s == null)
                               {
                                   throw new RuntimeException(this.getClass() + " is missing a mapping! This is a bug!");
                               }
                               else
                               {
                                   p_145841_1_.setString("id", s);
                                   p_145841_1_.setInteger("x", this.xCoord);
                                   p_145841_1_.setInteger("y", this.yCoord);
                                   p_145841_1_.setInteger("z", this.zCoord);
                               }
                           }
                        

                        Et chez moi s avait bien la valeur attendu, donc le jeu ne crash pas.

                        Effectivement, ca fonctionne ! Merci beaucoup 🙂

                        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