MFF

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

    Rendu de bloc TESR

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    43 Messages 3 Publieurs 9.6k 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.
    • FlowF Hors-ligne
      Flow
      dernière édition par

      Parceque dans ce code j’ai ce TileEntityBarriere2 qui est souligné en rouge si je ne le créer pas 😕

      
      package mod.common;
      
      import javax.swing.Icon;
      
      import cpw.mods.fml.relauncher.Side;
      import cpw.mods.fml.relauncher.SideOnly;
      import mod.proxy.ClientProxy;
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.client.renderer.texture.IIconRegister;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.init.Blocks;
      import net.minecraft.item.ItemStack;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.util.IIcon;
      import net.minecraft.util.MathHelper;
      import net.minecraft.world.IBlockAccess;
      import net.minecraft.world.World;
      
      public class BlockBarriere extends Block
      {
      
      public BlockBarriere(int id)
      {
      super(Material.rock);
      }
      
      public boolean renderAsNormalBlock()
      {
      return false;
      }
      
      public boolean isOpaqueCube()
      {
      return false;
      }
      
      @SideOnly(Side.CLIENT)
      public int getRenderType()
      {
      return ClientProxy.renderInventoryBarriere;
      }
      
      protected BlockBarriere(Material material)
      {
      super(material);
      }
      
      public IIcon getIcon(int side, int metadata)
      {
      return ((Blocks.iron_block).getIcon(0, 0));
      }
      
      @Override
      public TileEntity createTileEntity(World world, int metadata)
      {
      if(metadata == 0)
      return new TileEntityBarriere();
      else if(metadata == 2)
      return new TileEntityBarriere2();
      else
      return null;
      }
      public boolean hasTileEntity(int metadata)
      {
      if(metadata == 0 || metadata == 2)
      return true;
      else
      return false;
      }
      public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
      {
      int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
      TileEntity te = world.getTileEntity(x, y, z);
      if(te != null && stack.getItemDamage() == 2 && te instanceof TileEntityBarriere2)
      {
      ((TileEntityBarriere2)te).setDirection((byte)direction);
      world.markBlockForUpdate(x, y, z);
      }
      }
      
      }
      

      Oui ce gif est drôle.

      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

        WHAT ? Attends, explique moi ce que tu veux faire. Tu veux faire un ou deux blocs ? Car la ce que tu as fait actuellement c’est 2 blocs en metadata avec 2 tile entity.

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

          Non donc j’ai mon block barriere qui est un modèle techne donc j’ai suivi le tutoriel pour le faire , après j’ai voulu faire en sorte que sa tourne selon la direction j’ai posté ce message car je n’y arrivais pas et tu ma dis qu’il fallait aussi suivre le tuto sur la direction des blocs pour que mon model techne se tourne selon ou je me trouve j’ai donc suivi le tuto et dans le tuto il y a deux classes apparement ce que je voudrais c’est que mon model se tourne quand je le place de la facon dont moi je suis 🙂 Désolé si je semble mal m’exprimé 😕

          Oui ce gif est drôle.

          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

            Les tutoriels, ils faut les lires, pas les copier/coller …
            J’ai expliqué dans le tutoriel sur les directions que j’appliquais la direction à un bloc en metadata de metadata2, dans ton cas tu n’as pas de bloc avec metadata, il te faut donc un seul tile entity --’
            Donc ça :

            @Override
            public TileEntity createTileEntity(World world, int metadata)
            {
            if(metadata == 0)
            return new TileEntityBarriere();
            else if(metadata == 2)
            return new TileEntityBarriere2();
            else
            return null;
            }
            public boolean hasTileEntity(int metadata)
            {
            if(metadata == 0 || metadata == 2)
            return true;
            else
            return false;
            }
            public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
            {
            int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
            TileEntity te = world.getTileEntity(x, y, z);
            if(te != null && stack.getItemDamage() == 2 && te instanceof TileEntityBarriere2)
            {
            ((TileEntityBarriere2)te).setDirection((byte)direction);
            world.markBlockForUpdate(x, y, z);
            }
            }
            

            Devient :

            @Override
            public TileEntity createTileEntity(World world, int metadata)
            {
            return new TileEntityBarriere();
            }
            public boolean hasTileEntity(int metadata)
            {
            return true;
            }
            public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
            {
            int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
            TileEntity te = world.getTileEntity(x, y, z);
            if(te instanceof TileEntityBarriere)
            {
            ((TileEntityBarriere)te).setDirection((byte)direction);
            world.markBlockForUpdate(x, y, z);
            }
            }
            

            Et tu mets tout le contenu de TileEntityBarriere2 dans TileEntityBarriere et puis tu supprime TileEntityBarriere2

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

              Pfiouuu , vraiment désolé j’ai lu vite pour pouvoir répondre et résoudre le problème , j’aurais pas du 😞 Mais maintenant sa marche un grand merci à toi robin !!! 🙂 Y a t-il moyen de faire comme les escaliers ou même les barrières pour que les textures se connecte sur les coins ? Et pour la barrière qui sort de la case de l’inventaire comment faire ? 😕

              Oui ce gif est drôle.

              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

                Pour le rendu dans l’inventaire, je ne vois pas quoi faire à par un glScalef.
                Pour les coins, il faudrait faire plusieurs modèles et choisir le modèle en fonction des blocs qui sont autours.

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

                  Ouah ça a l’air compliquer pour les coins 😕 Tu saurais me passer le code du dlScalef s’il te plait ? 🙂

                  Oui ce gif est drôle.

                  1 réponse Dernière réponse Répondre Citer 0
                  • isadorI Hors-ligne
                    isador Moddeurs confirmés Modérateurs
                    dernière édition par

                    bha tu ajoute dans le code de ton rendu un G11.Scalef(x,y,z);

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

                      Sa ne marche pas ou que je le place et si je le place après les autres GL11 etc sa scale la barrière en jeux et pas dans l’inventaire

                      Oui ce gif est drôle.

                      1 réponse Dernière réponse Répondre Citer 0
                      • isadorI Hors-ligne
                        isador Moddeurs confirmés Modérateurs
                        dernière édition par

                        Envoi ton code de rendu

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

                          BarriereInventoryRenderer

                          package mod.proxy;
                          
                          import java.util.HashMap;
                          
                          import org.lwjgl.opengl.GL11;
                          
                          import net.minecraft.block.Block;
                          import net.minecraft.client.renderer.RenderBlocks;
                          import net.minecraft.world.IBlockAccess;
                          import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
                          
                          public class BarriereInventoryRenderer implements ISimpleBlockRenderingHandler
                          {
                          public static class TESRIndex
                          {
                          Block block;
                          int metadata;
                          
                          public TESRIndex(Block block, int metadata)
                          {
                          this.block = block;
                          this.metadata = metadata;
                          }
                          
                          @Override
                          public int hashCode()
                          {
                          return block.hashCode() + metadata;
                          }
                          
                          @Override
                          public boolean equals(Object o)
                          {
                          if(!(o instanceof TESRIndex))
                          return false;
                          
                          TESRIndex tesr = (TESRIndex)o;
                          
                          return tesr.block == block && tesr.metadata == metadata;
                          }
                          }
                          
                          public static HashMap <tesrindex, iinventoryrenderer="">blockByTESR = new HashMap<tesrindex, iinventoryrenderer="">();
                          @Override
                          public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer)
                          {
                          TESRIndex index = new TESRIndex(block, metadata);
                          if(blockByTESR.containsKey(index))
                          {
                          blockByTESR.get(index).renderInventory(-0.5, -0.5, -0.5);
                          
                          }
                          
                          }
                          
                          @Override
                          public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
                          {
                          return true;
                          }
                          
                          public boolean shouldRender3DInInventory(int modelId)
                          {
                          return true;
                          
                          }
                          
                          @Override
                          public int getRenderId()
                          {
                          return ClientProxy.renderInventoryBarriere;
                          }
                          
                          }
                          
                          

                          Celui-ci ?</tesrindex,></tesrindex,>

                          Oui ce gif est drôle.

                          1 réponse Dernière réponse Répondre Citer 0
                          • isadorI Hors-ligne
                            isador Moddeurs confirmés Modérateurs
                            dernière édition par

                            
                            package mod.proxy;
                            
                            import java.util.HashMap;
                            
                            import org.lwjgl.opengl.GL11;
                            
                            import net.minecraft.block.Block;
                            import net.minecraft.client.renderer.RenderBlocks;
                            import net.minecraft.world.IBlockAccess;
                            import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
                            
                            public class BarriereInventoryRenderer implements ISimpleBlockRenderingHandler
                            {
                            public static class TESRIndex
                            {
                            Block block;
                            int metadata;
                            
                            public TESRIndex(Block block, int metadata)
                            {
                            this.block = block;
                            this.metadata = metadata;
                            }
                            
                            @Override
                            public int hashCode()
                            {
                            return block.hashCode() + metadata;
                            }
                            
                            @Override
                            public boolean equals(Object o)
                            {
                            if(!(o instanceof TESRIndex))
                            return false;
                            
                            TESRIndex tesr = (TESRIndex)o;
                            
                            return tesr.block == block && tesr.metadata == metadata;
                            }
                            }
                            
                            public static HashMap <tesrindex, iinventoryrenderer="">blockByTESR = new HashMap<tesrindex, iinventoryrenderer="">();
                            @Override
                            public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer)
                            {
                            TESRIndex index = new TESRIndex(block, metadata);
                            GL11.glScaled(0.5f, 0.5f, 0.5f);
                            if(blockByTESR.containsKey(index))
                            {
                            blockByTESR.get(index).renderInventory(-0.5, -0.5, -0.5);
                            
                            }
                            
                            }
                            
                            @Override
                            public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer)
                            {
                            return true;
                            }
                            
                            public boolean shouldRender3DInInventory(int modelId)
                            {
                            return true;
                            
                            }
                            
                            @Override
                            public int getRenderId()
                            {
                            return ClientProxy.renderInventoryBarriere;
                            }
                            
                            }
                            
                            

                            essaie avec ca</tesrindex,></tesrindex,>

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

                              Ca dépasse toujours du cadre 😕

                              Oui ce gif est drôle.

                              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

                                Il y a rien a faire dans la classe BarriereInventoryRenderer.
                                D’ailleurs ce nom n’est pas approprié, car comme je l’ai expliqué la classe implements ISimpleBlockRenderingHandler va servir pour tous les rendus en main des TESR.

                                Il faudrait plutôt modifier TileEntityBarriereSpecialRender.

                                @Override
                                public void renderInventory(double x, double y, double z)
                                {
                                GL11.glPushMatrix();
                                GL11.glScaled(1.0F, 0.5F, 1.0F);
                                GL11.glTranslated(x + 0.5F, y + 1.5F, z + 0.5F);
                                this.bindTexture(textureLocation);
                                GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
                                this.model.render(0.0625F);
                                GL11.glPopMatrix();
                                }
                                
                                1 réponse Dernière réponse Répondre Citer 0
                                • isadorI Hors-ligne
                                  isador Moddeurs confirmés Modérateurs
                                  dernière édition par

                                  oui j’avais mal vu

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

                                    Ca se réduit également mais il est toujours hors du cadre , mais il y a un énorme espace entre le bas de la case et le bas de la barrière , il y a moyen de bouger la barrière vers le bas ?

                                    Oui ce gif est drôle.

                                    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

                                      Lance ton jeu en débug et “joue” avec cette ligne :
                                      GL11.glTranslated(x + 0.5F, y + 1.5F, z + 0.5F);
                                      (En gros change les valeurs jusqu’à avoir ce que tu veux).

                                      1 réponse Dernière réponse Répondre Citer 1
                                      • FlowF Hors-ligne
                                        Flow
                                        dernière édition par

                                        Merci Robin c’est parfait !! Je suis content mon mod va pouvoir avancer , il ne me reste plus qu’a trouver le code pour la hitbox , tu a des idées de sites spécialisés ou je pourrais chercher ( même anglais ) s’il te plait ?

                                        Oui ce gif est drôle.

                                        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

                                          Ici même. http://www.minecraftforgefrance.fr/showthread.php?tid=136
                                          getSelectedBoundingBoxFromPool
                                          getCollisionBoundingBoxFromPool

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

                                            Oké merci je vais lire tout ca et je re port si j’ai un problème ^^


                                            J’ai réussi a faire la hitbox plus grande !! 😄 Merci , par contre quand je regarde le haut de la barriere la hitbox disparais mais quand je regarde le bas elle ré-apparaît , y’a un moyen de considérer la hitbox entière comme le block ?

                                            Oui ce gif est drôle.

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB