• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Tourner CustomBlock dans la main

    1.7.x
    1.7.10
    6
    16
    2328
    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.
    • Benjamin Loison
      Benjamin Loison dernière édition par

      J’aimerais faire tourner le modèle que dans ma main pas dans la barre d’inventaire et en 3D quand il est posé, voici les classes :

      ​package fr.altiscraft.altiscraft.proxy;
      
      import org.lwjgl.opengl.GL11;
      
      import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
      import fr.altiscraft.altiscraft.common.ModAltisCraft;
      import net.minecraft.block.Block;
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.renderer.RenderBlocks;
      import net.minecraft.world.IBlockAccess;
      
      public class TESRInventoryRenderer implements ISimpleBlockRenderingHandler {
      public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
      if (block == ModAltisCraft.BlocATM) {
      GL11.glPushMatrix();
      GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
      GL11.glTranslatef(0.0F, -1.0F, 0.0F);
      Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityATMSpecialRenderer.texture);
      TileEntityATMSpecialRenderer.model.renderAll();
      GL11.glPopMatrix();
      
      } else if (block == ModAltisCraft.BlocVLampadaire) {
      GL11.glPushMatrix();
      GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
      GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
      GL11.glTranslatef(0.0F, -1.0F, 0.0F);
      Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityVLampadaireSpecialRenderer.texturev);
      TileEntityVLampadaireSpecialRenderer.modelv.renderAll();
      GL11.glPopMatrix();
      
      } else if (block == ModAltisCraft.BlocPoubelle) {
      GL11.glPushMatrix();
      GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
      GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
      GL11.glTranslatef(0.0F, -1.0F, 0.0F);
      Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityPoubelleSpecialRenderer.texturep);
      TileEntityPoubelleSpecialRenderer.modelp.renderAll();
      GL11.glPopMatrix();
      
      } else if (block == ModAltisCraft.BlocCoco) {
      GL11.glPushMatrix();
      GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
      GL11.glTranslatef(0.0F, -1.0F, 0.0F);
      Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityCocoSpecialRenderer.textures);
      TileEntityCocoSpecialRenderer.models.renderAll();
      GL11.glPopMatrix();
      
      } else if (block == ModAltisCraft.BlocLampadaire) {
      GL11.glPushMatrix();
      GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
      GL11.glTranslatef(0.0F, -1.0F, 0.0F);
      Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityCocoSpecialRenderer.texturesb);
      TileEntityCocoSpecialRenderer.modelsb.renderAll();
      GL11.glPopMatrix();
      
      } else if (block == ModAltisCraft.BlocBarriereOuverte) {
      GL11.glPushMatrix();
      GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
      GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
      GL11.glTranslatef(0.0F, -1.0F, 0.0F);
      Minecraft.getMinecraft().getTextureManager()
      .bindTexture(TileEntityBarriereOuverteSpecialRenderer.texturesbo);
      TileEntityBarriereOuverteSpecialRenderer.modelsbo.renderAll();
      GL11.glPopMatrix();
      
      } else if (block == ModAltisCraft.BlocBarriereFerme) {
      GL11.glPushMatrix();
      GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
      GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
      GL11.glTranslatef(0.0F, -1.0F, 0.0F);
      Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityBarriereFermeSpecialRenderer.texturesbf);
      TileEntityBarriereFermeSpecialRenderer.modelsbf.renderAll();
      GL11.glPopMatrix();
      
      } else if (block == ModAltisCraft.BlocPanneauSTOP) {
      GL11.glPushMatrix();
      GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
      GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
      GL11.glTranslatef(0.0F, -1.0F, 0.0F);
      Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityPanneauSTOPSpecialRenderer.textureps);
      TileEntityPanneauSTOPSpecialRenderer.modelps.renderAll();
      GL11.glPopMatrix();
      
      } else if (block == ModAltisCraft.BlocPanneauInterdit) {
      GL11.glPushMatrix();
      GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
      GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
      GL11.glTranslatef(0.0F, -1.0F, 0.0F);
      Minecraft.getMinecraft().getTextureManager()
      .bindTexture(TileEntityPanneauInterditSpecialRenderer.texturepi);
      TileEntityPanneauInterditSpecialRenderer.modelpi.renderAll();
      GL11.glPopMatrix();
      }
      }
      
      public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId,
      RenderBlocks renderer) {
      return false;
      }
      
      public int getRenderId() {
      return ClientProxy.tesrRenderId;
      }
      
      public boolean shouldRender3DInInventory(int modelId) {
      return true;
      }
      }
      
      ​package fr.altiscraft.altiscraft.common;
      
      import cpw.mods.fml.relauncher.Side;
      import cpw.mods.fml.relauncher.SideOnly;
      import fr.altiscraft.altiscraft.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 BlocPanneauInterdit extends Block {
      protected BlocPanneauInterdit() {
      super(Material.ground);
      }
      
      public boolean hasTileEntity(int metadata) {
      return true;
      }
      
      public TileEntity createTileEntity(World world, int metadata) {
      return new TileEntityPanneauInterdit();
      }
      
      public boolean isOpaqueCube() {
      return false;
      }
      
      public boolean renderAsNormalBlock() {
      return false;
      }
      
      @SideOnly(Side.CLIENT)
      public int getRenderType() {
      return ClientProxy.tesrRenderId;
      }
      
      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 TileEntityPanneauInterdit)) {
      int direction = MathHelper.floor_double(living.rotationYaw * 4.0F / 360.0F + 2.5D) & 0x3;
      ((TileEntityPanneauInterdit) tile).setDirection((byte) direction);
      }
      }
      }
      
      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 TileEntityPanneauInterdit)) {
      TileEntityPanneauInterdit tilePanneauInterdit = (TileEntityPanneauInterdit) tile;
      byte direction = tilePanneauInterdit.getDirection();
      direction = (byte) (direction + 1);
      if (direction > 3) {
      direction = 0;
      }
      tilePanneauInterdit.setDirection(direction);
      return true;
      }
      }
      return false;
      }
      
      public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
      setBlockBounds(0.45F, 0.0F, 0.45F, 0.55F, 3.0F, 0.55F);
      }
      
      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;
      }
      }
      
      ​package fr.altiscraft.altiscraft.client;
      
      import net.minecraft.client.model.ModelBase;
      import net.minecraft.client.model.ModelRenderer;
      
      public class ModelBlockPanneauInterdit extends ModelBase
      {
          ModelRenderer poteau;
          ModelRenderer centre;
          ModelRenderer apreshaut;
          ModelRenderer haut;
          ModelRenderer apresbas;
          ModelRenderer bas;
      
        public ModelBlockPanneauInterdit()
        {
          textureWidth = 32;
          textureHeight = 64;
      
            poteau = new ModelRenderer(this, 0, 0);
            poteau.addBox(0F, 0F, 0F, 2, 48, 2);
            poteau.setRotationPoint(-1F, -24F, -1F);
            poteau.setTextureSize(32, 64);
            setRotation(poteau, 0F, 0F, 0F);
            centre = new ModelRenderer(this, 0, 55);
            centre.addBox(0F, 0F, 0F, 14, 5, 1);
            centre.setRotationPoint(-7F, -20F, -2F);
            centre.setTextureSize(32, 64);
            setRotation(centre, 0F, 0F, 0F);
            apreshaut = new ModelRenderer(this, 10, 51);
            apreshaut.addBox(0F, 0F, 0F, 10, 2, 1);
            apreshaut.setRotationPoint(-5F, -22F, -2F);
            apreshaut.setTextureSize(32, 64);
            setRotation(apreshaut, 0F, 0F, 0F);
            haut = new ModelRenderer(this, 10, 50);
            haut.addBox(0F, 0F, 0F, 6, 2, 1);
            haut.setRotationPoint(-3F, -24F, -2F);
            haut.setTextureSize(32, 64);
            setRotation(haut, 0F, 0F, 0F);
            apresbas = new ModelRenderer(this, 10, 50);
            apresbas.addBox(0F, 0F, 0F, 10, 2, 1);
            apresbas.setRotationPoint(-5F, -15F, -2F);
            apresbas.setTextureSize(32, 64);
            setRotation(apresbas, 0F, 0F, 0F);
            bas = new ModelRenderer(this, 13, 50);
            bas.addBox(0F, 0F, 0F, 6, 2, 1);
            bas.setRotationPoint(-3F, -13F, -2F);
            bas.setTextureSize(32, 64);
            setRotation(bas, 0F, 0F, 0F);
        }
      public void renderAll() {
      this.poteau.render(0.0625F);
      this.bas.render(0.0625F);
      this.apresbas.render(0.0625F);
      this.haut.render(0.0625F);
      this.apreshaut.render(0.0625F);
      this.centre.render(0.0625F);
      }
      
      private void setRotation(ModelRenderer model, float x, float y, float z) {
      model.rotateAngleX = x;
      model.rotateAngleY = y;
      model.rotateAngleZ = z;
      }
      }
      
      
      ​package fr.altiscraft.altiscraft.proxy;
      
      import org.lwjgl.opengl.GL11;
      
      import fr.altiscraft.altiscraft.client.ModelBlockPanneauInterdit;
      import fr.altiscraft.altiscraft.common.TileEntityPanneauInterdit;
      import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
      import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.util.ResourceLocation;
      
      public class TileEntityPanneauInterditSpecialRenderer extends TileEntitySpecialRenderer {
      public static ModelBlockPanneauInterdit modelpi = new ModelBlockPanneauInterdit();
      public static ResourceLocation texturepi = new ResourceLocation("altiscraft",
      "textures/models/blocks/ModelBlockPanneauInterdit.png");
      
      public TileEntityPanneauInterditSpecialRenderer() {
      func_147497_a(TileEntityRendererDispatcher.instance);
      }
      
      public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float partialRenderTick) {
      renderTileEntityPanneauInterditAt((TileEntityPanneauInterdit) tile, x, y, z, partialRenderTick);
      }
      
      private void renderTileEntityPanneauInterditAt(TileEntityPanneauInterdit tile, double x, double y, double z,
      float partialRenderTick) {
      GL11.glPushMatrix();
      GL11.glTranslated(x + 0.5D, y + 1.5D, z + 0.5D);
      GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
      GL11.glRotatef(90.0F * tile.getDirection() + 180.0F, 0.0F, 1.0F, 0.0F);
      bindTexture(texturepi);
      modelpi.renderAll();
      GL11.glPopMatrix();
      }
      }
      

      Voilà cette photo expliquera mieux que moi :

      >! Développeur de Altis-Life (Arma III) sur Minecraft !
      >! Site web     : https://lemnoslife.com

      1 réponse Dernière réponse Répondre Citer 0
      • jglrxavpok
        jglrxavpok Modérateurs dernière édition par

        } else if (block == ModAltisCraft.BlocPanneauInterdit) {
        GL11.glPushMatrix();
        GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
        GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
        GL11.glTranslatef(0.0F, -1.0F, 0.0F);
        Minecraft.getMinecraft().getTextureManager()
        .bindTexture(TileEntityPanneauInterditSpecialRenderer.texturepi);
        TileEntityPanneauInterditSpecialRenderer.modelpi.renderAll();
        GL11.glPopMatrix();
        }
        

        ajoute un

        GL11.glRotatef(90f, 0f, 1f, 0f);
        

        avant ton:

        GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
        

        Modérateur sur MFF. 
        Mon Github: http://github.com/jglrxavpok
        Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

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

          ça c’est le rendu dans l’inventaire xavpok, il faut qu’il modifie dans renderTileEntityPanneauInterditAt qu’il doit ajouter ça.

          1 réponse Dernière réponse Répondre Citer 0
          • Benjamin Loison
            Benjamin Loison dernière édition par

            Robin tu veux que je fasse ça ? Parce que ça ne change rien… :S

            ​package fr.altiscraft.altiscraft.proxy;
            
            import org.lwjgl.opengl.GL11;
            
            import fr.altiscraft.altiscraft.client.ModelBlockPanneauInterdit;
            import fr.altiscraft.altiscraft.common.TileEntityPanneauInterdit;
            import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
            import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
            import net.minecraft.tileentity.TileEntity;
            import net.minecraft.util.ResourceLocation;
            
            public class TileEntityPanneauInterditSpecialRenderer extends TileEntitySpecialRenderer {
            public static ModelBlockPanneauInterdit modelpi = new ModelBlockPanneauInterdit();
            public static ResourceLocation texturepi = new ResourceLocation("altiscraft",
            "textures/models/blocks/ModelBlockPanneauInterdit.png");
            
            public TileEntityPanneauInterditSpecialRenderer() {
            func_147497_a(TileEntityRendererDispatcher.instance);
            }
            
            public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float partialRenderTick) {
            renderTileEntityPanneauInterditAt((TileEntityPanneauInterdit) tile, x, y, z, partialRenderTick);
            }
            
            private void renderTileEntityPanneauInterditAt(TileEntityPanneauInterdit tile, double x, double y, double z,
            float partialRenderTick) {
            GL11.glPushMatrix();
            GL11.glRotatef(90f, 0f, 1f, 0f);
            GL11.glTranslated(x + 0.5D, y + 1.5D, z + 0.5D);
            GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
            GL11.glRotatef(90.0F * tile.getDirection() + 180.0F, 0.0F, 1.0F, 0.0F);
            bindTexture(texturepi);
            modelpi.renderAll();
            GL11.glPopMatrix();
            }
            }
            

            >! Développeur de Altis-Life (Arma III) sur Minecraft !
            >! Site web     : https://lemnoslife.com

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

              Pourtant ça devrait fonctionner …

              1 réponse Dernière réponse Répondre Citer 0
              • Benjamin Loison
                Benjamin Loison dernière édition par

                Ah ba sans là je viens de relancer…

                >! Développeur de Altis-Life (Arma III) sur Minecraft !
                >! Site web     : https://lemnoslife.com

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

                  Après ce que j’ai dit c’est seulement pour le rendu dans le monde. Pour le rendu en main il faut passer par un IItemRenderer.

                  1 réponse Dernière réponse Répondre Citer 0
                  • Benjamin Loison
                    Benjamin Loison dernière édition par

                    Tu peux me donner un lien vite fait s’il te plaît ? ^^

                    >! Développeur de Altis-Life (Arma III) sur Minecraft !
                    >! Site web     : https://lemnoslife.com

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

                      http://www.minecraftforgefrance.fr/showthread.php?tid=130

                      1 réponse Dernière réponse Répondre Citer 0
                      • SCAREX
                        SCAREX dernière édition par

                        Balise résolu ?

                        Site web contenant mes scripts : http://SCAREXgaming.github.io

                        Pas de demandes de support par MP ni par skype SVP.
                        Je n'accepte sur skype que l…

                        1 réponse Dernière réponse Répondre Citer 0
                        • Benjamin Loison
                          Benjamin Loison dernière édition par

                          Comme j’ai dis sur l’autre post avec robin on travaille toujours sur la question…

                          >! Développeur de Altis-Life (Arma III) sur Minecraft !
                          >! Site web     : https://lemnoslife.com

                          1 réponse Dernière réponse Répondre Citer 0
                          • PadreDeLaCuarto
                            PadreDeLaCuarto dernière édition par

                            Sinon j’image que c’est pour faire un serveur Altis 😄
                            Les joueurs n’auront donc pas accès panneau !
                            Tu vois où je veux en venir, sa ne gênera donc pas les joueurs de voir un panneau return vu qu’il ne l’auront pas en main 😄

                            Programmeur un peu trop ambicieux au vu des c'est capacité :D

                            1 réponse Dernière réponse Répondre Citer 0
                            • Benjamin Loison
                              Benjamin Loison dernière édition par

                              Oui 😄 Mais bon ce serait pour les développeurs mais bon je ferme on va dire que ce n’est pas grave merci à toi 😄

                              >! Développeur de Altis-Life (Arma III) sur Minecraft !
                              >! Site web     : https://lemnoslife.com

                              1 réponse Dernière réponse Répondre Citer 0
                              • PadreDeLaCuarto
                                PadreDeLaCuarto dernière édition par

                                Ah mais je viens d’avoir un tilt !!!
                                Si tu veux faire tourné l’objet dans ta main il faut modifié la valeur ici :

                                } else if (block == ModAltisCraft.BlocPanneauInterdit) {
                                GL11.glPushMatrix();
                                GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F);
                                GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
                                GL11.glTranslatef(0.0F, -1.0F, 0.0F);
                                Minecraft.getMinecraft().getTextureManager()
                                .bindTexture(TileEntityPanneauInterditSpecialRenderer.texturepi);
                                TileEntityPanneauInterditSpecialRenderer.modelpi.renderAll();
                                GL11.glPopMatrix();
                                }
                                

                                Tu vois des lignes avec GL11.glRotatef et GL11.glTranslatef ??
                                Et bien il faut les utiliser en changant les valeur (ne touche pas au 180.0F qui permet e mettre ton block droit).
                                Il faut aussi que tu enleves une des ligne GL11.glRotatef car il ne t’en faut qu’une !!
                                Dans ton cas (si je ne me trompe pas je début dans le modding) il faut que tu joue avec l’axe Y de glTranslatef (l’axe Y est la 2eme valeur le -1.0F) ensuite tu bidouille mais je pense que la valeur dans être dans les 180°

                                Je précise que je me base sur la rotation des items mais vu que pour les item pour peux préciser sur quel vision on se base beh je suis pas sûr 😕 !!
                                Si j’ai pu t’aidé met moi un petit +1 😄

                                Programmeur un peu trop ambicieux au vu des c'est capacité :D

                                1 réponse Dernière réponse Répondre Citer 0
                                • Benjamin Loison
                                  Benjamin Loison dernière édition par

                                  Parfait merci 🙂

                                  >! Développeur de Altis-Life (Arma III) sur Minecraft !
                                  >! Site web     : https://lemnoslife.com

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • Deleted
                                    Deleted dernière édition par

                                    Salut, si tu fais des retours sur chacun de tes anciens posts, sois utile aux autres et fais leur gagner du temps en sélectionnant la meilleure réponse. Merci 😃

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

                                    MINECRAFT FORGE FRANCE © 2018

                                    Powered by NodeBB