Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    SOLVED Bloc Orientable (TileEntity)

    1.8.x
    1.8
    6
    71
    12822
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Eryah
      Eryah last edited by

      Bonjour, je me présente, Eryah, moddeur qui poste 4 topics tous les jours, tellement il est nul
      Donc, mon platecrafter à enfin sa texture, mais par contre, il n’est pas orrientable. J’ai donc voulu le rendre orientable. J’ai regarder le tuto… Et dès la 1er ligne, je vois que le code utilise les TileEntity. Or, les TileEntity ne sont plus utiles en 1.8
      J’aurai donc besoin d’aide pour rendre mon bloc orientable.
      Voici le code du bloc, si vous le voulez

      package eryah.usefulthings.blocks;
      
      import javax.swing.Icon;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.resources.model.ModelResourceLocation;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.util.MathHelper;
      import net.minecraft.world.World;
      import net.minecraftforge.fml.common.registry.GameRegistry;
      import net.minecraftforge.fml.relauncher.Side;
      import net.minecraftforge.fml.relauncher.SideOnly;
      import eryah.usefulthings.Reference;
      import eryah.usefulthings.UsefulthingsMod;
      
      public class PlateCrafter extends Block {
      
      public static Block platecrafter;
      
      public static void init()
      {
      platecrafter = new ResinLog(Material.wood).setUnlocalizedName("platecrafter").setCreativeTab(UsefulthingsMod.UTTab);
      }
      
      protected PlateCrafter(Material materialIn) {
      super(materialIn);
      // TODO Auto-generated constructor stub
      }
      
      public static void register()
      {
      GameRegistry.registerBlock(platecrafter, platecrafter.getUnlocalizedName().substring(5));
      }
      
      public static void registerRenders()
      {
      registerRender(platecrafter);
      }
      
      public static void registerRender(Block block)
      {
      Item item = Item.getItemFromBlock(block);
      Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
      }
      
      }
      
      public static void registerRender(Block block)
      {
      Item item = Item.getItemFromBlock(block);
      Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
      }
      
      }
      
      
      1 Reply Last reply Reply Quote 0
      • SCAREX
        SCAREX last edited by

        Les TileEntity sont encore utilisées en 1.8 il me semble, en revanche il est conseillé d’utiliser les BlockState, regarde les classes de minecraft, quel type de donnée veux-tu enregistrer ?

        1 Reply Last reply Reply Quote 0
        • Eryah
          Eryah last edited by

          je comprends pas a à 100% ta question ( oui, je suis assez pourri pour aps comprendre )
          Mais si c’est cela que tu demande, mon bloc est en blockstates ( .json )

          1 Reply Last reply Reply Quote 0
          • SCAREX
            SCAREX last edited by

            La question est : pourquoi as-tu besoin d’une TileEntity ?

            1 Reply Last reply Reply Quote 0
            • Eryah
              Eryah last edited by

              Je n’en n’est pas besoin, le tuto ( http://www.minecraftforgefrance.fr/showthread.php?tid=1304 ) utilise, en gros , la rotation d’une TileEntity, or, je n’utilise pas une TileEntity, mais un .json

              1 Reply Last reply Reply Quote 0
              • SCAREX
                SCAREX last edited by

                Ah oui, j’avais oublié le titre… Il faut regarder les classes de minecraft avant de demander de l’aide :

                1. Mets ton block extend BlockDirectional
                2. Dans le constructeur, ajoutes ceci :
                  this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
                  
                3. Ré-écris la fonction onBlockPlaced et rajoutes ceci dedans :
                  return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
                  
                4. Ré-écris la fonction getStateFromMeta si tu veux utiliser les metadatas pour orienter ton block
                  return ((EnumFacing)state.getValue(FACING)).getHorizontalIndex();
                  
                5. Ré-écris la fonction createBlockState
                  return new BlockState(this, new IProperty[] {FACING});
                  
                1 Reply Last reply Reply Quote 0
                • Eryah
                  Eryah last edited by

                  Euh… Je ne vois aps du tout de quoi tu veut parler par :
                  [size=x-smallRé-écris la fonction onBlockPlaced et rajoutes ceci dedans 🙂
                  ~~[size=x-smallRé-écris la fonction getStateFromMeta si tu veux utiliser les metadatas pour orienter ton block]
                  ~~[size=x-smallRé-écris la fonction createBlockState]
                  [size=small~~J’ai peut-etre , dans ma puissance naturelle, mal codé mon bloc donc , voici ma classe  ~~   C’EST BON J’AI COMPRIS]

                  package eryah.usefulthings.blocks;
                  
                  import javax.swing.Icon;
                  
                  import net.minecraft.block.Block;
                  import net.minecraft.block.BlockDirectional;
                  import net.minecraft.block.material.Material;
                  import net.minecraft.client.Minecraft;
                  import net.minecraft.client.resources.model.ModelResourceLocation;
                  import net.minecraft.entity.EntityLivingBase;
                  import net.minecraft.item.Item;
                  import net.minecraft.item.ItemStack;
                  import net.minecraft.util.EnumFacing;
                  import net.minecraft.util.MathHelper;
                  import net.minecraft.world.World;
                  import net.minecraftforge.fml.common.registry.GameRegistry;
                  import net.minecraftforge.fml.relauncher.Side;
                  import net.minecraftforge.fml.relauncher.SideOnly;
                  import eryah.usefulthings.Reference;
                  import eryah.usefulthings.UsefulthingsMod;
                  
                  public class PlateCrafter extends BlockDirectional {
                  
                  public static Block platecrafter; {
                  this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
                  
                  }
                  
                  public static void init()
                  {
                  platecrafter = new ResinLog(Material.wood).setUnlocalizedName("platecrafter").setCreativeTab(UsefulthingsMod.UTTab);
                  }
                  
                  protected PlateCrafter(Material materialIn) {
                  super(materialIn);
                  // TODO Auto-generated constructor stub
                  }
                  
                  public static void register()
                  {
                  GameRegistry.registerBlock(platecrafter, platecrafter.getUnlocalizedName().substring(5));
                  }
                  
                  public static void registerRenders()
                  {
                  registerRender(platecrafter);
                  }
                  
                  public static void registerRender(Block block)
                  {
                  Item item = Item.getItemFromBlock(block);
                  Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
                  }
                  
                  }
                  
                  ```~~~~
                  1 Reply Last reply Reply Quote 0
                  • SCAREX
                    SCAREX last edited by

                    Quel est ce morceau de code tout seul au milieu de nulle part ?

                    
                    public static Block platecrafter; {
                    this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
                    
                    }
                    

                    Il faut le mettre dans le constructeur et il te manque toutes les méthodes que j’ai cité précédemment.

                    1 Reply Last reply Reply Quote 0
                    • Eryah
                      Eryah last edited by

                      Une erreur sur

                      @Override
                      public IBlockState getStateFromMeta(int meta) {
                      return ((EnumFacing)blockState.getValue(FACING)).getHorizontalIndex();
                      
                      }
                      

                      ((EnumFacing)blockState.getValue(FACING)).getHorizontalIndex();
                           *Multiple markers at this line
                      *

                        • Type mismatch: cannot convert from int to *
                          IBlockState
                          Il me propose de ajouter ‘int’ et après, y’a un erreur sur int, enfin… plein d’erreurs qui forment un boucle
                      1 Reply Last reply Reply Quote 0
                      • Eryah
                        Eryah last edited by

                        @‘SCAREX’:

                        Quel est ce morceau de code tout seul au milieu de nulle part ?

                        
                        public static Block platecrafter; {
                               this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
                               
                           }
                        

                        Il faut le mettre dans le constructeur et il te manque toutes les méthodes que j’ai cité précédemment.

                        Dès que je l’enlève, il y a des erreurs partout, je dirait 1 toutes les 4 lignes

                        Et je n’avais pas compris comment ajouter les méthodes quand j’ai posté le message

                        1 Reply Last reply Reply Quote 0
                        • SCAREX
                          SCAREX last edited by

                          Regarde la classe de la pumpkin, car là j’en peux plus…

                          this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
                          

                          CECI VA DANS LE CONSTRUCTEUR ! Si tu ne sait pas ce qu’est un constructeur : OpenClassrooms

                          Pour les autres lignes de code, voici le code à rajouter :

                          
                          public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
                          {
                          return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
                          }
                          
                          public IBlockState getStateFromMeta(int meta)
                          {
                          return this.getDefaultState().withProperty(FACING, EnumFacing.getHorizontal(meta));
                          }
                          
                          public int getMetaFromState(IBlockState state)
                          {
                          return ((EnumFacing)state.getValue(FACING)).getHorizontalIndex();
                          }
                          
                          protected BlockState createBlockState()
                          {
                          return new BlockState(this, new IProperty[] {FACING});
                          }
                          
                          
                          1 Reply Last reply Reply Quote 0
                          • Eryah
                            Eryah last edited by

                            Implicit super constructor BlockDirectional() is undefined. Must explicitly invoke another constructor
                            quand je mets le curseur sur

                            public static PlateCrafter() {
                            this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
                            }
                            

                            PlateCrafter()

                            Ce que j’avais avant était un constructeur, mais il avait (je ne sais aps pourquoi, mauvais copier coller de ma part ( oui je fais les blocs comme ça )) ‘Block’ en trop

                            1 Reply Last reply Reply Quote 0
                            • SCAREX
                              SCAREX last edited by

                              le constructeur ne devrait pas être statique. Quel est ton code en ce moment ?

                              1 Reply Last reply Reply Quote 0
                              • Eryah
                                Eryah last edited by

                                package eryah.usefulthings.blocks;
                                
                                import net.minecraft.block.Block;
                                import net.minecraft.block.BlockDirectional;
                                import net.minecraft.block.material.Material;
                                import net.minecraft.block.properties.IProperty;
                                import net.minecraft.block.state.BlockState;
                                import net.minecraft.block.state.IBlockState;
                                import net.minecraft.client.Minecraft;
                                import net.minecraft.client.resources.model.ModelResourceLocation;
                                import net.minecraft.entity.EntityLivingBase;
                                import net.minecraft.item.Item;
                                import net.minecraft.util.BlockPos;
                                import net.minecraft.util.EnumFacing;
                                import net.minecraft.world.World;
                                import net.minecraftforge.fml.common.registry.GameRegistry;
                                import eryah.usefulthings.Reference;
                                import eryah.usefulthings.UsefulthingsMod;
                                
                                public class PlateCrafter extends BlockDirectional {
                                
                                public static Block platecrafter; {
                                   }
                                
                                public PlateCrafter() {
                                this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
                                }
                                
                                   public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
                                   {
                                       return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
                                   }
                                
                                   public IBlockState getStateFromMeta(int meta)
                                   {
                                       return this.getDefaultState().withProperty(FACING, EnumFacing.getHorizontal(meta));
                                   }
                                
                                   public int getMetaFromState(IBlockState state)
                                   {
                                       return ((EnumFacing)state.getValue(FACING)).getHorizontalIndex();
                                   }
                                
                                   protected BlockState createBlockState()
                                   {
                                       return new BlockState(this, new IProperty[] {FACING});
                                   }
                                
                                public static void init()
                                {
                                platecrafter = new ResinLog(Material.wood).setUnlocalizedName("platecrafter").setCreativeTab(UsefulthingsMod.UTTab);
                                }
                                
                                protected PlateCrafter(Material materialIn) {
                                super(materialIn);
                                // TODO Auto-generated constructor stub
                                }
                                
                                public static void register()
                                {
                                GameRegistry.registerBlock(platecrafter, platecrafter.getUnlocalizedName().substring(5));
                                }
                                
                                public static void registerRenders()
                                {
                                registerRender(platecrafter);
                                }
                                
                                public static void registerRender(Block block)
                                {
                                Item item = Item.getItemFromBlock(block);
                                Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
                                }
                                
                                }
                                
                                

                                C’était un mauvais copier coller, dans mon tout premier bloc, le constructeur est présent ( y’a rien dedans, mais il est la )

                                1 Reply Last reply Reply Quote 0
                                • SCAREX
                                  SCAREX last edited by

                                  Ces crochets ne servent à rien :

                                  public static Block platecrafter; {
                                  }
                                  

                                  Ton sujet est résolu ?

                                  1 Reply Last reply Reply Quote 0
                                  • Eryah
                                    Eryah last edited by

                                    Y’a toujours la même erreur
                                    Multiple markers at this line

                                    • Illegal modifier for the constructor in type PlateCrafter; only public, protected & private are 
                                      permitted ( Pourtant c’est bien public PlateCrafter() )
                                    • Implicit super constructor BlockDirectional() is undefined. Must explicitly invoke another 
                                      constructor
                                      Sur Platecrafter()
                                    1 Reply Last reply Reply Quote 0
                                    • SCAREX
                                      SCAREX last edited by

                                      Tu as 2 constructeurs

                                      1 Reply Last reply Reply Quote 0
                                      • Eryah
                                        Eryah last edited by

                                        Si j’en est 2, je ne voit aps le 2e

                                        package eryah.usefulthings.blocks;
                                        
                                        import net.minecraft.block.Block;
                                        import net.minecraft.block.BlockDirectional;
                                        import net.minecraft.block.material.Material;
                                        import net.minecraft.block.properties.IProperty;
                                        import net.minecraft.block.state.BlockState;
                                        import net.minecraft.block.state.IBlockState;
                                        import net.minecraft.client.Minecraft;
                                        import net.minecraft.client.resources.model.ModelResourceLocation;
                                        import net.minecraft.entity.EntityLivingBase;
                                        import net.minecraft.item.Item;
                                        import net.minecraft.util.BlockPos;
                                        import net.minecraft.util.EnumFacing;
                                        import net.minecraft.world.World;
                                        import net.minecraftforge.fml.common.registry.GameRegistry;
                                        import eryah.usefulthings.Reference;
                                        import eryah.usefulthings.UsefulthingsMod;
                                        
                                        public class PlateCrafter extends BlockDirectional {
                                        
                                        public static Block platecrafter;
                                        
                                        public PlateCrafter() {
                                        this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
                                        }
                                        
                                           public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
                                           {
                                               return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
                                           }
                                        
                                           public IBlockState getStateFromMeta(int meta)
                                           {
                                               return this.getDefaultState().withProperty(FACING, EnumFacing.getHorizontal(meta));
                                           }
                                        
                                           public int getMetaFromState(IBlockState state)
                                           {
                                               return ((EnumFacing)state.getValue(FACING)).getHorizontalIndex();
                                           }
                                        
                                           protected BlockState createBlockState()
                                           {
                                               return new BlockState(this, new IProperty[] {FACING});
                                           }
                                        
                                        public static void init()
                                        {
                                        platecrafter = new ResinLog(Material.wood).setUnlocalizedName("platecrafter").setCreativeTab(UsefulthingsMod.UTTab);
                                        }
                                        
                                        public static void register()
                                        {
                                        GameRegistry.registerBlock(platecrafter, platecrafter.getUnlocalizedName().substring(5));
                                        }
                                        
                                        public static void registerRenders()
                                        {
                                        registerRender(platecrafter);
                                        }
                                        
                                        public static void registerRender(Block block)
                                        {
                                        Item item = Item.getItemFromBlock(block);
                                        Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
                                        }
                                        
                                        }
                                        
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • SCAREX
                                          SCAREX last edited by

                                          Tu as supprimé le 2ème dans ce dernier code.

                                          1 Reply Last reply Reply Quote 0
                                          • Eryah
                                            Eryah last edited by

                                            Oui, mais j’ai toujours le problème
                                            ( Mais pas tout à fait le même… Je l’avais au tout debut *Implicit super constructor BlockDirectional() is undefined. Must explicitly invoke another constructor 😉

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 1 / 4
                                            • First post
                                              Last post
                                            Design by Woryk
                                            Contact / Mentions Légales / Faire un don

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB