Résolu Rendu 3D d'item en inventaire
-
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 -
Salut,
As-tu bien enregistré ton IItemRenderer ? -
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());
-
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 -
Ah ouais c’est tordu en effet.
Merci, plus qu’à bien régler tout ça.