MFF

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

    Rendu 3D

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    10 Messages 5 Publieurs 2.3k 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.
    • Benjamin LoisonB Hors-ligne
      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

      1 réponse Dernière réponse Répondre Citer 0
      • DeletedD Hors-ligne
        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
        • LeBossMax2L Hors-ligne
          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
          • DeletedD Hors-ligne
            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
            • robin4002R Hors-ligne
              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
              • AmaA Hors-ligne
                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 LoisonB Hors-ligne
                  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

                  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 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 LoisonB Hors-ligne
                      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

                      1 réponse Dernière réponse Répondre Citer 0
                      • Benjamin LoisonB Hors-ligne
                        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

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

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB