Rendu d'item avec un model techne
-
Non, il ne faut pas remplacer, il faut mettre en plus.
-
Mais j’ai deja un EQUIPPED alors ca me fait une erreur… Je fais comment ?
-
Envoie toute ta classe.
-
Je te mp mon dossier src.
Edit:
Regarde tes mp Robin -
Bon, normal que ça ne fonctionne pas si tu as retiré tous les sharpe.render dans le code du modèle –’
Sérieusement, fait attention a ce que tu fais, tu fait les trucs complètement par hasard ou tu comprends ce que tu fais ?Voila la classe du modèle corrigé :
package com.harrypotter.sosoh.client; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelBaguetteSureau extends ModelBase { // fields ModelRenderer Shape1; ModelRenderer Shape2; ModelRenderer Shape3; ModelRenderer Shape4; ModelRenderer Shape5; ModelRenderer Shape6; ModelRenderer Shape7; ModelRenderer Shape8; ModelRenderer Shape9; public ModelBaguetteSureau() { textureWidth = 64; textureHeight = 32; Shape1 = new ModelRenderer(this, 0, 0); Shape1.addBox(0F, 0F, 0F, 1, 1, 14); Shape1.setRotationPoint(0F, 20.36667F, -8F); Shape1.setTextureSize(64, 32); setRotation(Shape1, 0F, 0F, 0F); Shape2 = new ModelRenderer(this, 36, 0); Shape2.addBox(0F, 0F, 0F, 2, 2, 1); Shape2.setRotationPoint(-0.5F, 19.86667F, 6F); Shape2.setTextureSize(64, 32); setRotation(Shape2, 0F, 0F, 0F); Shape3 = new ModelRenderer(this, 36, 0); Shape3.addBox(0F, 0F, 0F, 2, 2, 1); Shape3.setRotationPoint(-0.5F, 19.9F, 3F); Shape3.setTextureSize(64, 32); setRotation(Shape3, 0F, 0F, 0F); Shape4 = new ModelRenderer(this, 43, 0); Shape4.addBox(0F, 0F, 0F, 3, 3, 1); Shape4.setRotationPoint(-1F, 19.5F, 0F); Shape4.setTextureSize(64, 32); setRotation(Shape4, 0F, 0F, 0F); Shape5 = new ModelRenderer(this, 36, 0); Shape5.addBox(0F, 0F, 0F, 2, 2, 1); Shape5.setRotationPoint(-0.5F, 19.9F, -2.5F); Shape5.setTextureSize(64, 32); setRotation(Shape5, 0F, 0F, 0F); Shape6 = new ModelRenderer(this, 31, 0); Shape6.addBox(0F, 0F, 0F, 1, 1, 1); Shape6.setRotationPoint(0F, 20.1F, -6F); Shape6.setTextureSize(64, 32); setRotation(Shape6, 0F, 0F, 0F); Shape7 = new ModelRenderer(this, 31, 0); Shape7.addBox(0F, 0F, 0F, 1, 1, 1); Shape7.setRotationPoint(0F, 20.6F, -6F); Shape7.setTextureSize(64, 32); setRotation(Shape7, 0F, 0F, 0F); Shape8 = new ModelRenderer(this, 31, 0); Shape8.addBox(0F, 0F, 0F, 1, 1, 1); Shape8.setRotationPoint(0.3F, 20.35F, -6F); Shape8.setTextureSize(64, 32); setRotation(Shape8, 0F, 0F, 0F); Shape9 = new ModelRenderer(this, 31, 0); Shape9.addBox(0F, 0F, 0F, 1, 1, 1); Shape9.setRotationPoint(-0.3F, 20.4F, -6F); Shape9.setTextureSize(64, 32); setRotation(Shape9, 0F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); Shape1.render(f5); Shape2.render(f5); Shape3.render(f5); Shape4.render(f5); Shape5.render(f5); Shape6.render(f5); Shape7.render(f5); Shape8.render(f5); Shape9.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); } }Et celle du rendu :
package com.harrypotter.sosoh.client; import org.lwjgl.opengl.GL11; import com.harrypotter.sosoh.common.ModHarryPotter; 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 ItemBaguetteSureauTechneRender implements IItemRenderer { protected ModelBaguetteSureau model; protected static final ResourceLocation texture = new ResourceLocation(ModHarryPotter.MODID, "textures/models/items/model_items_sureau.png"); public ItemBaguetteSureauTechneRender() { model = new ModelBaguetteSureau(); } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { switch(type) { case EQUIPPED: return true; case EQUIPPED_FIRST_PERSON: 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 item, Object... data) { switch(type) { case EQUIPPED: { GL11.glPushMatrix(); GL11.glRotatef(-90.F, 1.0F, 0.0F, 0.0F); GL11.glTranslatef(0.5F, -1.2F, 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.0F, 0.0F); GL11.glTranslatef(0.5F, -1.2F, 0.5F); 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 INVENTORY: { GL11.glPushMatrix(); GL11.glTranslatef(-8F, -8F, 0.0F); GL11.glRotatef(-45.F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(90.F, 0.0F, 1.0F, 0.0F); GL11.glScalef(17F, 17F, 17F); 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; } } } -
J’avais enlevé pour tester si ca marcher… Merci en tout cas
-
Bonjour j’ai essayé de faire sa en forge 1.7.2 et je ne comprend l’argument “Angle” dans les rotation car en 1.7.2 sa me demande de mettre un float que doit je faire? S’il vous plait repondez le plus vite possible.
-
Bonjour voilà j’aimerais mettre un render sur un item en version 1.8 seulement j’ai quelques problèmes à ces niveaux :
@Override public void renderItem(ItemRenderType type, ItemStack item, Object… data) { switch(type) { case EQUIPPED: { GL11.glPushMatrix(); Minecraft.getMinecraft().renderEngine.func_110577_a(texture); //func_110577_a n'est plus dispo alors j'utilise : getTexture model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); break; } default: break; } }et dans le ClientProxy, .itemID n’est plus dispo non plus alors j’utilise .getItemById(0). Mais rien ne marche, j’espère que quelqu’un pourra m’aider et verras mon message, n’hésitez pas a me le signaler si une méthode ou si la méthode au complet n’est plus valide en 1.8. Merci d’avance

-
P.s : Mes classes :
L’item simple :
package mods.emotion.items; import mods.emotion.creativeTabs.EmotionTab; import net.minecraft.item.Item; public class BaseButterflyNet extends Item { public BaseButterflyNet() { this.setCreativeTab(EmotionTab.EmotionCreativeTab2); } }Le render :
package mods.emotion.items; import mods.emotion.lib.Infos; 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; import org.lwjgl.opengl.GL11; public class RenderNet implements IItemRenderer { protected ModelNet model; protected static final ResourceLocation texture = new ResourceLocation(Infos.MODID + ":textures/entity/net.png"); public RenderNet() { model = new ModelNet(); } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { switch(type) { case EQUIPPED: return true; default: return false; } } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return false; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object… data) { switch(type) { case EQUIPPED: { GL11.glPushMatrix(); 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; } default: break; } } }et le model :
package mods.emotion.items; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelNet extends ModelBase { // fields ModelRenderer handle; ModelRenderer par1; ModelRenderer par2; ModelRenderer par3; ModelRenderer par4; ModelRenderer net; public ModelNet() { textureWidth = 32; textureHeight = 32; handle = new ModelRenderer(this, 0, 0); handle.addBox(0F, 0F, 0F, 1, 1, 8); handle.setRotationPoint(0F, 23F, 0F); handle.setTextureSize(32, 32); handle.mirror = true; setRotation(handle, 0F, 0F, 0F); par1 = new ModelRenderer(this, 0, 10); par1.addBox(0F, 0F, 0F, 7, 1, 1); par1.setRotationPoint(-3F, 23F, -1F); par1.setTextureSize(32, 32); par1.mirror = true; setRotation(par1, 0F, 0F, 0F); par2 = new ModelRenderer(this, 0, 12); par2.addBox(0F, 0F, 0F, 1, 1, 5); par2.setRotationPoint(-3F, 23F, -6F); par2.setTextureSize(32, 32); par2.mirror = true; setRotation(par2, 0F, 0F, 0F); par3 = new ModelRenderer(this, 16, 10); par3.addBox(0F, 0F, 0F, 7, 1, 1); par3.setRotationPoint(-3F, 23F, -7F); par3.setTextureSize(32, 32); par3.mirror = true; setRotation(par3, 0F, 0F, 0F); par4 = new ModelRenderer(this, 12, 12); par4.addBox(0F, 0F, 0F, 1, 1, 5); par4.setRotationPoint(3F, 23F, -6F); par4.setTextureSize(32, 32); par4.mirror = true; setRotation(par4, 0F, 0F, 0F); net = new ModelRenderer(this, 0, 19); net.addBox(0F, 0F, 0F, 7, 5, 7); net.setRotationPoint(-3F, 18F, -7F); net.setTextureSize(32, 32); net.mirror = true; setRotation(net, 0F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); handle.render(f5); par1.render(f5); par2.render(f5); par3.render(f5); par4.render(f5); net.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); } } -
En 1.7 il faut juste mettre l’item, pas de .itemID. En 1.8, je crois que cette fonctionnalité n’est plus du tout opérationnel à vérifier.
-
Robin ce tuto ne parle pas d’item de model comme la crée en elle-même parce que je n’ai pas l’impression qu’on en parle et j’ai juste une erreur du coup c’est :
MinecraftForgeClient.registerItemRenderer(ModAltisCraft.BlocPanneauInterdit, (IItemRenderer)new ItemPanneauInterditRender());J’ai enlevé le .ItemID comme tu le dis en 1.7.X il n’y en a pas besoin mais du coup mon eclipse n’est pas très content et me propose pour le registerItemRenderer :
- Change to ‘getItemRenderer(…)’ : qui fait que ce n’est pas une item et il ne kiff pas
- Change type of ‘BlocPanneauInterdit’ to ‘Item’ : change dans ma classe principale le bloc en item et c’est le dawa comme c’est censé être un bloc…
-
Item.getItemFromBlock(ModAltisCraft.BlocPanneauInterdit) au lieu de ModAltisCraft.BlocPanneauInterdit
-
Merci mais j’ai encore 2 problèmes :
package fr.altiscraft.altiscraft.common; import org.lwjgl.opengl.GL11; 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 ItemPanneauInterditRender implements IItemRenderer { protected ItemPanneauInterditRender model; protected static final ResourceLocation texture = new ResourceLocation("ModAltisCraft:textures/items/ItemPanneauInterdit.png"); public ItemPanneauInterditRender () { model = new ItemPanneauInterditRender(); } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { switch(type) { case EQUIPPED: return true; default: return false; } } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return false; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object… data) { switch(type) { case EQUIPPED: { GL11.glPushMatrix(); Minecraft.getMinecraft().renderEngine).func_110577_a(texture); model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); break; } default: break; } }Au .func_110577_a(texture); ce n’est pas une méthode reconnue, il ne me propose que : Add cast to method receiver
A model.render il faut définir render ce que je fais et ça me donne ça : private void render(Entity entity, float f, float g, float h, float i, float j, float k) { }Il y a t’il encore besoin de modification ?
-
Utilise model.renderAll() au lieu de model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
Pour le func_110577_a remplace par bindTexture -
La console me spam ceci maintenant je ne comprends pas d’où vient le problème :S
at fr.altiscraft.altiscraft.common.ItemPanneauInterditRender.<init>(ItemPanneauInterditRender.java:19)
package fr.altiscraft.altiscraft.common; import org.lwjgl.opengl.GL11; 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 ItemPanneauInterditRender implements IItemRenderer { protected ItemPanneauInterditRender model; protected static final ResourceLocation texture = new ResourceLocation("ModAltisCraft:textures/items/ItemPanneauInterdit.png"); public ItemPanneauInterditRender () { model = new ItemPanneauInterditRender(); } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { switch(type) { case EQUIPPED: return true; default: return false; } } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return false; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object… data) { switch(type) { case EQUIPPED: { GL11.glPushMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(texture); GL11.glPopMatrix(); break; } default: break; } } public void renderAll() { } private void render(Entity entity, float f, float g, float h, float i, float j, float k) { } } ```</init> -
protected ItemPanneauInterditRender model;
C’est ton modèle que tu es sensé mettre ici …
public void renderAll() {
}private void render(Entity entity, float f, float g, float h, float i, float j, float k) {
}
Ces méthodes n’ont rien à faire là. -
Voilà maintenant ma classe :
package fr.altiscraft.altiscraft.common; import org.lwjgl.opengl.GL11; import fr.altiscraft.altiscraft.client.ModelBlockPanneauInterdit; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; public class ItemPanneauInterditRender implements IItemRenderer { protected ModelBlockPanneauInterdit model; protected static final ResourceLocation texture = new ResourceLocation("ModAltisCraft:textures/items/ItemPanneauInterdit.png"); public ItemPanneauInterditRender () { model = new ModelBlockPanneauInterdit(); } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { switch(type) { case EQUIPPED: return true; default: return false; } } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return false; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object… data) { switch(type) { case EQUIPPED: { GL11.glPushMatrix(); GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); Minecraft.getMinecraft().renderEngine.bindTexture(texture); GL11.glPopMatrix(); break; } default: break; } } }Mais lorsque je touche au glRotate rien ne se passe pour tous les rendu et maintenant le rendu dans le monde du panneau est invisible… et les panneaux se déplacent tels des Slenders… :S Une matrix pas fermé ?
-
GL11.glPushMatrix(); GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); Minecraft.getMinecraft().renderEngine.bindTexture(texture); GL11.glPopMatrix();Il te manque model.renderAll() avant le GL11.glPopMatrix();.
Pour le modèle dans le monde aucune idée
Mais à mon avis comme tu utilise un IItemRenderer tu devrais l’utiliser pour tous ce qui rendu de l’inventaire et retirer ce que tu as dans le TESRInventoryRenderer (seulement ce qui concerne ce bloc, pas ce qui concerne les autres) -
Je ne vois plus l’item dans la main et mon slender est toujours présent maintenant voici ma classe :
package fr.altiscraft.altiscraft.common; import org.lwjgl.opengl.GL11; import fr.altiscraft.altiscraft.client.ModelBlockPanneauInterdit; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; public class ItemPanneauInterditRender implements IItemRenderer { protected ModelBlockPanneauInterdit model; protected static final ResourceLocation texture = new ResourceLocation("ModAltisCraft:textures/items/ItemPanneauInterdit.png"); public ItemPanneauInterditRender () { model = new ModelBlockPanneauInterdit(); } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { switch(type) { case EQUIPPED: return true; default: return false; } } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return false; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object… data) { switch(type) { case EQUIPPED: { GL11.glPushMatrix(); GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); Minecraft.getMinecraft().renderEngine.bindTexture(texture); model.renderAll(); GL11.glPopMatrix(); break; } default: break; } } } -
protected static final ResourceLocation texture = new ResourceLocation(“ModAltisCraft:textures/items/ItemPanneauInterdit.png”);
Pas de maj au modid ->
protected static final ResourceLocation texture = new ResourceLocation(“modaltiscraft:textures/items/ItemPanneauInterdit.png”);
Pour le reste c’est pas normal, à la limite on regarde ça ensemble sur ts à l’occasion.
