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

    Rendu 3D

    Sans suite
    1.7.10
    5
    10
    2134
    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

      Bonjour,

      J’aimerais rendre en 3D un modèle dans le dos d’un joueur (un Sac), j’ai trouvé ce post :

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

      Seulement, il manque énormément de détails, comment Register la classe etc et de plus, c’est marqué pour 1.7.10 mais le :

      extends RenderPlayerBase
      

      N’existe pas j’ai du le changer par :

      extends RenderPlayer
      

      Et la méthode @Override renderPlayer :

      The method renderPlayer(AbstractClientPlayer, double, double, double, float, float) of type RenderPlayerItem must override or implement a supertype method

      Je vois pas très bien ce que veut dire ce message.

      Voici donc la classe que j’ai formé :

      package fr.altiscraft.benjaminloison.proxy;
      
      import org.lwjgl.opengl.GL11;
      import org.lwjgl.opengl.GL12;
      
      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.entity.RenderPlayer;
      import net.minecraft.client.renderer.texture.TextureManager;
      import net.minecraft.client.renderer.texture.TextureMap;
      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;
      
      public class RenderPlayerItem extends RenderPlayer {
      
      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);
      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);
      }
      
      }
      

      De plus je ne sais pas comment il faut appliquer le code à la fin du post pour bien régler la rotation.

      J’aimerais que ça soit compatible au multi-joueur, que chacun puisse voir si quelqu’un à un sac dans le dos des autres.

      PS: J’aimerais aussi faire quelque chose comme ceci: http://www.minecraftforgefrance.fr/showthread.php?tid=1245

      Mais avec un modèle de flansmod, donc déjà en .class etc et je pense pas que du coup c’est trop possible,

      Merci d’avance pour la lecture, 🙂

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

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

        Tu ne vois pas la classe RenderPlayerBase car tout simplement elle appartient à la lib Render Player API. Pour ajouter un modèle dans le dos du joueur comme ceci, tu peux soit te servir de l’event RenderPlayerEvent, ce qui te permettra de ne dépendre de la lib Render Player API, ou alors tu te sers d’une classe héritant RenderPlayerBase.
        Pour ta seconde question, y’a sûrement moyen, je regarderai + en détail si personne n’a d’ici là la réponse…

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

          Es-ce que tu a vérifié ce qu’il y a dans la class RenderPlayer ?
          Pour moi (je suis en 1.8 donc c’est peut-être différent), il y a une fonction “func_180596_a” ou “doRender” mais y n’y a pas “renderPlayer”.

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

            Toute façon , il ne pourra pas enregistrer sa classe héritant de RenderPlayer. Si vous pensez qu’il pourra enregistrer son rendu comme ça
            RenderingRegistry.registerEntityRenderingHandler(EntityPlayer.class, new RenderPlayerItem(new ModelBiped(), 0.5F));

            Vous vous trompez, essayez ça fera juste crasher le jeu. Je n’ai pas testé mais essaie de cancel l’event RenderPlayerEvent, et d’appeler la fonction doRender de ta nouvelle classe RenderPlayer. Sa peut peut-être marcher…

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

              Il n’est pas obligé de cancel l’event RenderPlayerEvent.
              Cette event peut être utilisé pour rendre n’importe quoi en rapport avec le joueur.
              On l’utilise pour le chapeau de FFMT libs :
              https://github.com/FFMT/FFMT-libs/blob/ce0cebba7fb13cc4d06b1f1bee2ae75768c03347/common/fr/minecraftforgefrance/ffmtlibs/event/PlayerEventHandler.java#L30
              (il y a pleins de truc car la texture est chargé sur files.minecraftforgefrance.fr/hats et le modèle est récréé à partir des fichiers textes).

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

                Pour flan’s mod et donc pour un modèle dans une gui, suffi que tu ai les sources de flan’s mod 😉 (disponible ici au passage)

                Si je t'ai filé un coup de main n'oublie pas le + / -
                Par contre évite les demandes d'aides en MP, tu sera sympa'

                La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                  😕 J’ai fais recherches etc mais je galère à trouver un code source qui me serait utile, j’aimerais que lorsque le joueur a un sac ça l’affiche dans son dos, quelqu’un pourrait m’envoyer un code s’il vous plaît et en l’expliquant ce serait superbe 🙂

                  Merci,

                  PS: Je fais des tests pour le Flansmod 😉

                  >! Développeur de Altis-Life (Arma III) sur Minecraft !
                  >! Site web     : https://lemnoslife.com
                  TeamSpeak : ts.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

                    Il faut déjà un code qui parcours les différents item de l’inventaire pour voir si le sac y ait. Ça ce n’est rien de compliqué, c’est juste une condition dans une boucle for.
                    Ensuite si c’est le cas il faut bind la texture puis rendre le modèle du sac.

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

                      Ouai l’histoire du for c’est tranquille mais pour le rendu 3D, ça c’est mon faible et j’ai aucune idée de comment faire en faite…

                      Ps: j’ai réussi pour le Flansmod rendu de ouf merci ! 🙂 J’avais oublié que dans le code source y avait déjà un rendu 3D dans un Gui 🙂

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

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

                        Quelqu’un a une idée ou un peu de code à me donner pour mon rendu 3D d’item ? (Je ne sais pas du tout comment m’y prendre :/)

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

                        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