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

    Résolu Rendu d'un item dans le dos

    1.7.x
    1.7.10
    3
    5
    1064
    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.
    • X
      xenakise dernière édition par

      Bonjour, j’essaye de faire un rendu des épées / arc dans le dos du personnage lorsque ces items sont équipé j’ai réussi plus ou moins mais je ne trouve pas comment faire suivre l’item parallélement au dos :

      –> http://puu.sh/axw0I/ecdeb5b56a.png

      Mais si je tourne mon perso sur lui même :

      –> http://puu.sh/axw4H/912459f5bc.png
      –> http://puu.sh/axw5J/fb13d2010e.png

      
      package fr.cc;
      
      import java.awt.image.BufferedImage;
      import java.net.URL;
      import java.util.HashMap;
      
      import javax.imageio.ImageIO;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.entity.AbstractClientPlayer;
      import net.minecraft.client.renderer.ItemRenderer;
      import net.minecraft.client.renderer.Tessellator;
      import net.minecraft.client.renderer.texture.DynamicTexture;
      import net.minecraft.client.renderer.texture.TextureManager;
      import net.minecraft.client.renderer.texture.TextureMap;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemBow;
      import net.minecraft.item.ItemStack;
      import net.minecraft.item.ItemSword;
      import net.minecraft.util.IIcon;
      import net.minecraft.util.ResourceLocation;
      
      import org.lwjgl.opengl.GL11;
      import org.lwjgl.opengl.GL12;
      
      import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type;
      
      public class CoolCraftPlayer extends RenderPlayerBase {
      
      private Minecraft mc = Minecraft.getMinecraft();
      
      @Override
      public void renderPlayer(AbstractClientPlayer player, double x, double z, double y, float f, float f2) {
      if (player.getHeldItem() != null) {
      ItemStack heldItem = player.getHeldItem();
      if (heldItem.getItem() instanceof ItemSword || heldItem.getItem() instanceof ItemBow) {
      GL11.glPushMatrix();
      GL11.glTranslatef(0.0F, -0.5F, 0.16F);
      if (player.inventory.armorItemInSlot(2) != null) {
      GL11.glTranslatef(0.0F, player.isSneaking() ? -0.1F : 0.0F, player.isSneaking() ? 0.025F : 0.06F);
      }
      if (player.isSneaking()) {
      GL11.glRotatef(-28.799999F, 1.0F, 0.0F, 0.0F);
      GL11.glTranslatef(0.0F, 0.0F, 0.18F);
      }
      int i = heldItem.getItem() instanceof ItemSword ? 1 : 2;
      GL11.glRotatef(i * -90.0F, 0F, 0F, 1F);
      GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);
      System.out.println(f);
      GL11.glEnable(3042);
      GL11.glBlendFunc(770, 771);
      renderItemIn3d(heldItem);
      GL11.glDisable(3042);
      GL11.glPopMatrix();
      }
      }
      super.renderPlayer(player, x, z, y, f, f2);
      }
      
      public static void renderItemIn3d(ItemStack stack) {
      TextureManager textureManager = Minecraft.getMinecraft().getTextureManager();
      if (textureManager == null)
      return;
      Item item = stack.getItem();
      
      GL11.glPushMatrix();
      
      Tessellator tessellator = Tessellator.instance;
      GL11.glEnable(GL12.GL_RESCALE_NORMAL);
      GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
      GL11.glTranslatef(-0.5F, -0.5F, 1 / 32.0F);
      
      GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
      
      int passes = item.getRenderPasses(stack.getItemDamage());
      for (int pass = 0; pass < passes; pass++) {
      textureManager.bindTexture(((stack.getItemSpriteNumber() == 0) ? TextureMap.locationBlocksTexture : TextureMap.locationItemsTexture));
      IIcon icon = item.getIcon(stack, pass);
      float minU = icon.getMinU();
      float maxU = icon.getMaxU();
      float minV = icon.getMinV();
      float maxV = icon.getMaxV();
      setColorFromInt(item.getColorFromItemStack(stack, pass));
      ItemRenderer.renderItemIn2D(tessellator, maxU, minV, minU, maxV, icon.getIconWidth(), icon.getIconHeight(), 0.0625F);
      }
      GL11.glDisable(GL12.GL_RESCALE_NORMAL);
      
      GL11.glPopMatrix();
      }
      
      public static void setColorFromInt(int color) {
      float r = (color >> 16 & 255) / 255.0F;
      float g = (color >> 8 & 255) / 255.0F;
      float b = (color & 255) / 255.0F;
      GL11.glColor4f(r, g, b, 1.0F);
      }
      
      }
      
      
      1 réponse Dernière réponse Répondre Citer 0
      • isador
        isador Moddeurs confirmés Modérateurs dernière édition par

        il te faut jouer avec les rotatef et scalef de ton code de rendu pour trouver la bonne position

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

          tu n’a pas pris en compte le paramètre de rotation du corps : " player.rotationYaw; ", il me semble que c’est ce paramètre ou alors c’est un paramètre avec un nom similaire.

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

            exact phenix j’avais mal lu sa question

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

              Je maitrise mal la fonction GL11.glRotatef()

              D’après ce que je comprends y’a :

              GL11.glRotatef(ANGLE , X , Y , Z)

              dont je fais :

              GL11.glRotatef(player.renderYawOffset, ?F, 0F, ?F);

              Pour faire un rotation sur X / Z mais comment savoir les valeurs de X / Z ?


              Ah ! j’ai trouvé le float du corps :

              
              int i = heldItem.getItem() instanceof ItemSword ? 1 : 2;
              GL11.glRotatef(i * -90.0F, 0F, 0F, 1F);
              GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);
              GL11.glRotatef(-player.renderYawOffset, 0F, 1F, 0F);
              GL11.glEnable(3042);
              GL11.glBlendFunc(770, 771);
              renderItemIn3d(heldItem);
              GL11.glDisable(3042);
              GL11.glPopMatrix();
              
              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