Résolu Rendu Armure 3D sans la porter
-
Salut
Je sais faire une Armure 3D mais on ne voit celle-ci sur nous que lorsqu’on la porte et j’aimerais faire que juste si on l’a dans l’inventaire ça nous l’affiche comme une Armure 3D,
Merci d’avance pour vos idées,
-
Tu peux le faire facilement avec un rendu avancé d’Item
-
Ajoutes à ton item une classe item renderer implémentant de IItemRenderer. Y’a un tuto sur le fofo
-
Le tuto n’est pas pour 1.7.10, j’ai réussi à adapter un peu avec bindTexture mais mon model avec le render et tout ça…
https://www.minecraftforgefrance.fr/showthread.php?tid=130
Model :
package fr.altiscraft.benjaminloison.model; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelSac extends ModelBase { ModelRenderer base, centre, haut, milieu; public ModelSac() { int textureWidth = 512; int textureHeight = 512; base = new ModelRenderer(this, 465, 464); base.addBox(-3F, 1F, 2F, 6, 10, 2); base.setRotationPoint(0F, 0F, 0F); base.setTextureSize(512, 512); setRotation(base, 0F, 0F, 0F); centre = new ModelRenderer(this, 466, 467); centre.addBox(-1F, 4.5F, 3.5F, 2, 1, 1); centre.setRotationPoint(0F, 0F, 0F); centre.setTextureSize(512, 512); setRotation(centre, 0F, 0F, 0F); haut = new ModelRenderer(this, 469, 466); haut.addBox(-2.5F, 1.5F, 4F, 5, 3, 1); haut.setRotationPoint(0F, 0F, 0F); haut.setTextureSize(512, 512); setRotation(haut, 0F, 0F, 0F); milieu = new ModelRenderer(this, 466, 466); milieu.addBox(-2.5F, 5.5F, 4F, 5, 5, 1); milieu.setRotationPoint(0F, 0F, 0F); milieu.setTextureSize(512, 512); setRotation(milieu, 0F, 0F, 0F); } // TODO: sert à rendre dans un gui public void render(float f) { base.render(f); centre.render(f); haut.render(f); milieu.render(f); } 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); } 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); } }
ClientProxy :
MinecraftForgeClient.registerItemRenderer(ModAltisCraft.Sac, (IItemRenderer)new RenderSac());
Classe principale :
Sac = new Sac().setUnlocalizedName("Sac").setTextureName("altiscraft:Sac").setCreativeTab(AltisCraft).setMaxStackSize(1);
Sac :
package fr.altiscraft.benjaminloison.conteneurs; import cpw.mods.fml.common.registry.GameRegistry; import fr.altiscraft.benjaminloison.common.ModAltisCraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class Sac extends Item { public static final String NAME = "backpack"; public Sac() { GameRegistry.registerItem(this, NAME); } @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { player.openGui(ModAltisCraft.instance, 0, world, (int)player.posX, (int)player.posY, (int)player.posZ); return stack; } }
RenderSac:
package fr.altiscraft.benjaminloison.common; import org.lwjgl.opengl.GL11; import cpw.mods.fml.common.registry.GameRegistry; import fr.altiscraft.benjaminloison.common.ModAltisCraft; import fr.altiscraft.benjaminloison.model.ModelSac; import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.client.IItemRenderer; public class RenderSac implements IItemRenderer { protected ModelSac modelTroisD; protected static final ResourceLocation texture = new ResourceLocation("altiscraft:textures/models/armor/Sac.png"); public RenderSac() { modelTroisD = new ModelSac(); } @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); modelTroisD.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); break; } default: break; } } }
-
Il faut que tu fasses un nouveau modèle (sous techne tu prends le modeleBiped par exemple) tu y bind la texture de ton armure et tu fais un render comme dis plus tôt et ça marche très bien.
-
Pas besoin d’en re-créer un, tu as juste à avoir une nouvelle instance de ModelBiped et c’est bon
-
J’ai changé l’extends en ModelBiped et aucun changement L’item est toujours affiché en 2D
-
Faudrait pas faire un petit GL11.glRotate ?
-
J’en verrai pas l’utilité si je vois l’item en 2D que dans ma main…
-
Non mais Robin suggère subtilement que tu rends ton modèle de face. Tu peux très bien avoir un rendu 3D et n’exploiter que 2 des 3 dimensions si tu ne fais pas pivoter un peu ton modèle.
Une question de perspective quoi…
-
^^ très subtile, ça me parait impossible mais j’essaye de suite
EDIT: Ca ne bouge pas après rotate
-
Autre chose, que personnellement je confond souvent, assure toi que tu n’as pas fais le rendu qu’à la troisième personne, un petit f5 en jeu et tu seras fixé
-
Non aucun changement en F5
-
Euh essaie avec un rendu case INVENTORY, nan?
Il me semble avoir essayé cette histoire de rendu 3D en inventaire (pour un item) mais que j’ai laissé tomber l’idée par manque de réussite =D
-
En fait sans Glrotate et sans case inventory et avec extends ModelBase ou ModelBiped je vois un semblant de 3D (hyper faible), je ne le voyais pas à cause de ma texture de **** regarder c’est incompréhensible… Ca peut venir d’où ? http://altiscraft.fr/BEN/Sac.png