Rendu 3D d'item en inventaire


  • Correcteurs

    Yep, qqs soucis de compréhension vis à vis du rendu 3D en inventaire.

    package fr.powergame.modpg2.client.renders.items;
    
    import org.lwjgl.opengl.GL11;
    
    import fr.powergame.modpg2.client.models.ModelUSP;
    import net.minecraft.client.Minecraft;
    import net.minecraft.entity.Entity;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.IItemRenderer;
    
    public class RenderUSP implements IItemRenderer
    {
        protected ModelUSP model;
        protected static final ResourceLocation texture = new ResourceLocation("ModPg2:textures/models/items/R700.png");
    
        public RenderUSP()
        {
            model = new ModelUSP();
        }
    
        @Override
        public boolean handleRenderType(ItemStack item, ItemRenderType type)
        {
            switch(type)
            {
                case EQUIPPED:
                    return true;
                case EQUIPPED_FIRST_PERSON:
                    return true;
                case ENTITY:
                    return true;
                case INVENTORY:
                    return true;
                default:
                    return false;
            }
        }
    
        @Override
        public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper)
        {
            return false;
        }
    
        @Override
        public void renderItem(ItemRenderType type, ItemStack stack, Object… data)
        {
            switch(type)
            {
                case EQUIPPED:
                {
                    GL11.glPushMatrix();
                    GL11.glRotatef(90.F, 1.0F, 0.2F, 0.0F);
                    GL11.glRotatef(100.F, 1.0F, 0.0F, 0.0F);
                    GL11.glTranslatef(0.5F, -0.35F, -0.75F);
                    GL11.glScaled(0.5F, 0.5F, 0.5F);
                    Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                    model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
                    GL11.glPopMatrix();
                    break;
                }
                case EQUIPPED_FIRST_PERSON:
                {
                    GL11.glPushMatrix();
                    GL11.glRotatef(90.F, 1.0F, -0.2F, 0.0F);
                    GL11.glRotatef(100.F, 0.5F, -0.2F, -0.65F);
                    GL11.glRotatef(30.F, -0.2F, -1.2F, 0.0F);
                    GL11.glTranslatef(-0.4F, 0.0F, -2.7F);
                    GL11.glScaled(1F, 1F, 1F);
                    Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                    model.render((Entity)null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
                    GL11.glPopMatrix();
                    break;
                }
                case ENTITY:
                {
                    GL11.glPushMatrix();
                    GL11.glRotatef(90.F, 1.0F, 0F, 0F);
                    GL11.glRotatef(90.F, 1.0F, 0F, 0F);
                    GL11.glTranslatef(0F, -0.3F, 0.3F);
                    GL11.glScaled(0.5F, 0.5F, 0.5F);
                    Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                    model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
                    GL11.glPopMatrix();
                    break;
                }
                case INVENTORY:
                {
                    GL11.glPushMatrix();
                    Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                    model.render((Entity)null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
                    GL11.glPopMatrix();
                    break;
                }
                default:
                    break;
            }
        }
    }
    

    Le rendu n'apparait pas en inventaire ou alors il n'est pas visible à l'écran
    Besoin de vos avis


  • Administrateurs

    Salut,
    As-tu bien enregistré ton IItemRenderer ?


  • Correcteurs

    Ah bah y'a que le rendu en inventaire qui pose problème. En main le rendu est bon et en 3ème personne aussi

            MinecraftForgeClient.registerItemRenderer(ModPg2.itemUSP, new RenderUSP());
    

  • Administrateurs

    ah, j'avais mal lu, désolé.
    Essaies d'ajouter ses 3 lignes ? https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/main/client/renderer/items/ItemLightSaberRender.java#L110-L112
    il me semble que par défaut les coordonnées du rendu son endors de l'écran, donc il faut utiliser un glTranslatef


  • Correcteurs

    Ah ouais c'est tordu en effet.
    Merci, plus qu'à bien régler tout ça.