Faire un rendue a peut près comme un me map
-
“l’image icon” pardon ?
Tu peux toujours agrandir la taille de l’item avec GL11.glscalef comme on l’a dit plus haut, après si tu veux utiliser une autre texture c’est simple : tu ajoutes un ResourceLocation dans ta classe et tu fais un bind de texture avec, en revanche après il faut faire le rendu ce qui est plus complexe
-
Voila, c’est le rendue que j’aimerais savoir comment on fait , désoler de m’être mal exprimé

-
Je te conseille de copier la fonction utiliser dans la classe Gui pour faire un rendu facilement
-
Bonjour quelle fonction? Il y a aucune avec “background”
-
Pourquoi est-ce qu’il y aurait background dedans ?
-
Car ca paraissait plus logique >< mais j’ai trouvée ca a la palce : drawTexturedModelRectFromIcon sauf qu’aucune variable contient les ressource
il ya juste ca :Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); tessellator.addVertexWithUV((double)(p_94065_1_ + 0), (double)(p_94065_2_ + p_94065_5_), (double)this.zLevel, (double)p_94065_3_.getMinU(), (double)p_94065_3_.getMaxV()); tessellator.addVertexWithUV((double)(p_94065_1_ + p_94065_4_), (double)(p_94065_2_ + p_94065_5_), (double)this.zLevel, (double)p_94065_3_.getMaxU(), (double)p_94065_3_.getMaxV()); tessellator.addVertexWithUV((double)(p_94065_1_ + p_94065_4_), (double)(p_94065_2_ + 0), (double)this.zLevel, (double)p_94065_3_.getMaxU(), (double)p_94065_3_.getMinV()); tessellator.addVertexWithUV((double)(p_94065_1_ + 0), (double)(p_94065_2_ + 0), (double)this.zLevel, (double)p_94065_3_.getMinU(), (double)p_94065_3_.getMinV()); tessellator.draw(); -
Oui, c’est cette fonction qui dessine effectivement, il n’y a pas de question de resources car ta texture doit être appliquée avant comme avant de dessiner ton item
-
Par contre pour le getMinU() comment je fait vue que c’est avec un icon ou alors ils faut load avec une fonction spécifique l’icon?
voici le code actuel :Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); tessellator.addVertexWithUV((double)(0), (double)(16), (double)this.zLevel, (double)p_94065_3_.getMinU(), (double)p_94065_3_.getMaxV()); tessellator.addVertexWithUV((double)(16), (double)(16), (double)this.zLevel, (double)p_94065_3_.getMaxU(), (double)p_94065_3_.getMaxV()); tessellator.addVertexWithUV((double)(16), (double)(0), (double)this.zLevel, (double)p_94065_3_.getMaxU(), (double)p_94065_3_.getMinV()); tessellator.addVertexWithUV((double)(0), (double)(0), (double)this.zLevel, (double)p_94065_3_.getMinU(), (double)p_94065_3_.getMinV()); tessellator.draw();Merci de vos réponse.
-
u correspond à x sur ta texture et v correspond à y, donc remplace les getMinU() et les truc semblables car les valeurs dont tu as besoin.
-
Avant d’utiliser un tesselator il faut bind la texture.
Les textures des items et des blocs se trouvent tous sur une image commune, la fonction getMinU/V et getMaxU/V permet d’avoir les coordonnées de la texture du bloc / item sur cette image commune. -
Bonjour, je viens de testé plusieur valeur en 0 et 16 et rien
(de mon côté) voic mon code :[font=Courier Newpackage ]fr.ph1823.MyLife.Item%(#cc7832)[; ] import net.minecraft.client.Minecraft%(#cc7832)[; ]import net.minecraft.client.gui.FontRenderer%(#cc7832)[; ] import net.minecraft.client.gui.Gui%(#cc7832)[; ]import net.minecraft.client.gui.MapItemRenderer%(#cc7832)[; ]import net.minecraft.client.renderer.Tessellator%(#cc7832)[; ]import net.minecraft.client.renderer.WorldRenderer%(#cc7832)[; ]import net.minecraft.client.renderer.entity.RenderItem%(#cc7832)[; ]import net.minecraft.client.renderer.texture.DynamicTexture%(#cc7832)[; ]import net.minecraft.client.renderer.texture.TextureAtlasSprite%(#cc7832)[; ]import net.minecraft.client.renderer.texture.TextureManager%(#cc7832)[; ] import net.minecraft.client.renderer.texture.TextureMap%(#cc7832)[; ]import net.minecraft.entity.item.EntityItem%(#cc7832)[; ]import net.minecraft.item.ItemStack%(#cc7832)[; ]import net.minecraft.nbt.NBTTagCompound%(#cc7832)[; ] import net.minecraft.util.ChatComponentText%(#cc7832)[; ]import net.minecraft.util.IIcon%(#cc7832)[; ]import net.minecraft.util.ResourceLocation%(#cc7832)[; ] import net.minecraftforge.client.IItemRenderer%(#cc7832)[; ]import org.lwjgl.opengl.GL11%(#cc7832)[; ] import java.util.Random%(#cc7832)[; ] %(#629755)[*/** *]%(#629755)[* * Created by ph1823 - Minecraft on 28/03/2016. *]%(#629755)[* */ *]public class IdentityTechneRender implements IItemRenderer { protected Identity model%(#cc7832)[; ] private static RenderItem *renderItem *= new RenderItem()%(#cc7832)[; ] %(#808080)[// private static DynamicTexture dyn; ] protected float zLevel%(#cc7832)[; ] private static TextureManager *manager *= Minecraft.*getMinecraft*().getTextureManager()%(#cc7832)[; ] protected static ResourceLocation *texture *= new ResourceLocation("plants:textures/items/card1.png")%(#cc7832)[; ] public IdentityTechneRender() { %(#808080)[//this.getDynamicTextureLocation() ] model = new Identity()%(#cc7832)[; ] %(#808080)[// model. ]%(#808080)[ // dyn = new DynamicTexture(16,16); ]%(#808080)[ //this.field_148241_e = this.field_148243_c.getTextureData(); ]%(#808080)[ // texture = manager.getDynamicTextureLocation("plants:textures/items/card.png", dyn); ]%(#808080)[//Gui.class ] } %(#bbb529)[@Override ] public boolean handleRenderType(ItemStack item, ItemRenderType type) { return type == ItemRenderType.*EQUIPPED *|| type == ItemRenderType.*EQUIPPED_FIRST_PERSON*%(#cc7832)[; ] } %(#bbb529)[@Override ] public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return type == ItemRenderType.*EQUIPPED*%(#cc7832)[; ] } %(#bbb529)[@Override ] public void renderItem(ItemRenderType type, ItemStack item, Object… data) { %(#808080)[// Get icon index for the texture ] %(#808080)[ // EntityItem entItem = new EntityItem(Minecraft.getMinecraft().theWorld, 0D, 0D, 0D, item); ] String name = "Iconnue"%(#cc7832)[; ] String surname = "Inconnue"%(#cc7832)[; ] int age = 0%(#cc7832)[; ] NBTTagCompound nbt = item.getTagCompound()%(#cc7832)[; ] if (nbt != null) { age = nbt.getInteger("age")%(#cc7832)[; ] name = nbt.getString("name") != null ? nbt.getString("name") : name%(#cc7832)[; ] surname = nbt.getString("surname") != null ? nbt.getString("surname") : surname%(#cc7832)[; ] } net.minecraft.util.IIcon icon = item.getIconIndex()%(#cc7832)[; ] FontRenderer font = Minecraft.*getMinecraft*().fontRenderer%(#cc7832)[; ] switch (type) { case *EQUIPPED*: GL11.*glTranslatef*(1F, -.5F, 0F)%(#cc7832)[; ]%(#cc7832)[ break; ] case *EQUIPPED_FIRST_PERSON*: GL11.*glTranslatef*(8F, 2F, 2F)%(#cc7832)[; ] GL11.*glRotatef*(-10F, 0F, 0F, 1F)%(#cc7832)[; ]%(#cc7832)[ break; ] default: } GL11.*glRotatef*(180F, 0F, 0F, 1F)%(#cc7832)[; ] GL11.*glScalef*(0.05F, 0.05F, 0.05F)%(#cc7832)[; ] font.drawStringWithShadow(surname,-5,5, 0xFFFFFF);%(#808080)[//Patrick ]%(#808080)[ // fontRenderer.drawStringWithShadow("Nom : " + name, 1, 5, 0xFFFFFF); ]%(#808080)[ //fontRenderer.drawStringWithShadow("Âge : " + age, 1, 10, 0xFFFFFF) ]%(#808080)[ //renderItem.renderIcon(0,0,icon,64,64); ]%(#808080)[ //GL11.glScalef(2F, 2F, 2F); ] *manager*.bindTexture(*texture*)%(#cc7832)[; ] Tessellator tessellator = Tessellator.*instance*%(#cc7832)[; ] tessellator.startDrawingQuads()%(#cc7832)[; ] tessellator.addVertexWithUV((double)(0), (double)(16), (double)this.zLevel, (double)0, (double)16)%(#cc7832)[; ] tessellator.addVertexWithUV((double)(16), (double)(16), (double)this.zLevel, (double)0, (double)16)%(#cc7832)[; ] tessellator.addVertexWithUV((double)(16), (double)(0), (double)this.zLevel, (double)0, (double)16)%(#cc7832)[; ] tessellator.addVertexWithUV((double)(0), (double)(0), (double)this.zLevel, (double)0, (double)16)%(#cc7832)[; ] tessellator.draw()%(#cc7832)[; ] %(#808080)[//renderItem.renderIcon(0, 0, icon, 16, 16); ] } }merci de vos réponse

-
J’ai pas tout suivi là durant ces 4 pages…Et puis faut dire que ton code n’aide pas beaucoup, je te conseille de retirer les commentaires ou les vieux bouts de codes qui traînent, ça facilitera la lecture.
Réexplique moi stp, ce que tu souhaites faire, car l’interface IItemRenderer est pourtant très facile à utiliser, je ne vois pas où tu peux bloquer ^^’ -
Voici le code sans les vieux morceau :
[font=Courier Newpackage ]fr.ph1823.MyLife.Item%(#cc7832)[; ] import net.minecraft.client.Minecraft%(#cc7832)[; ]import net.minecraft.client.gui.FontRenderer%(#cc7832)[; ]import net.minecraft.client.renderer.Tessellator%(#cc7832)[; ]import net.minecraft.client.renderer.entity.RenderItem%(#cc7832)[; ]import net.minecraft.client.renderer.texture.TextureManager%(#cc7832)[; ] import net.minecraft.item.ItemStack%(#cc7832)[; ]import net.minecraft.nbt.NBTTagCompound%(#cc7832)[; ]import net.minecraft.util.ResourceLocation%(#cc7832)[; ]import net.minecraftforge.client.IItemRenderer%(#cc7832)[; ] import org.lwjgl.opengl.GL11%(#cc7832)[; ] %(#629755)[*/** *]%(#629755)[* * Created by ph1823 - Minecraft on 28/03/2016. *]%(#629755)[* */ *]public class IdentityTechneRender implements IItemRenderer { protected Identity model%(#cc7832)[; ] protected float zLevel%(#cc7832)[; ] private static TextureManager *manager *= Minecraft.*getMinecraft*().getTextureManager()%(#cc7832)[; ] protected static ResourceLocation *texture *= new ResourceLocation("plants:textures/items/card1.png")%(#cc7832)[; ] public IdentityTechneRender() { model = new Identity()%(#cc7832)[; ] } %(#bbb529)[@Override ] public boolean handleRenderType(ItemStack item, ItemRenderType type) { return type == ItemRenderType.*EQUIPPED *|| type == ItemRenderType.*EQUIPPED_FIRST_PERSON*%(#cc7832)[; ] } %(#bbb529)[@Override ] public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return type == ItemRenderType.*EQUIPPED*%(#cc7832)[; ] } %(#bbb529)[@Override ] public void renderItem(ItemRenderType type, ItemStack item, Object… data) { String name = "Iconnue"%(#cc7832)[; ] String surname = "Inconnue"%(#cc7832)[; ] int age = 0%(#cc7832)[; ] NBTTagCompound nbt = item.getTagCompound()%(#cc7832)[; ] if (nbt != null) { age = nbt.getInteger("age")%(#cc7832)[; ] name = nbt.getString("name") != null ? nbt.getString("name") : name%(#cc7832)[; ] surname = nbt.getString("surname") != null ? nbt.getString("surname") : surname%(#cc7832)[; ] } net.minecraft.util.IIcon icon = item.getIconIndex()%(#cc7832)[; ] FontRenderer font = Minecraft.*getMinecraft*().fontRenderer%(#cc7832)[; ] switch (type) { case *EQUIPPED*: GL11.*glTranslatef*(1F, -.5F, 0F)%(#cc7832)[; ]%(#cc7832)[ break; ] case *EQUIPPED_FIRST_PERSON*: GL11.*glTranslatef*(8F, 2F, 2F)%(#cc7832)[; ] GL11.*glRotatef*(-10F, 0F, 0F, 1F)%(#cc7832)[; ]%(#cc7832)[ break; ] default: } GL11.*glRotatef*(180F, 0F, 0F, 1F)%(#cc7832)[; ] GL11.*glScalef*(0.05F, 0.05F, 0.05F)%(#cc7832)[; ] font.drawStringWithShadow(surname,-5,5, 0xFFFFFF)%(#cc7832)[; ] *manager*.bindTexture(*texture*)%(#cc7832)[; ] Tessellator tessellator = Tessellator.*instance*%(#cc7832)[; ] tessellator.startDrawingQuads()%(#cc7832)[; ] tessellator.addVertexWithUV((double)(0), (double)(16), (double)this.zLevel, (double)0, (double)16)%(#cc7832)[; ] tessellator.addVertexWithUV((double)(16), (double)(16), (double)this.zLevel, (double)0, (double)16)%(#cc7832)[; ] tessellator.addVertexWithUV((double)(16), (double)(0), (double)this.zLevel, (double)0, (double)16)%(#cc7832)[; ] tessellator.addVertexWithUV((double)(0), (double)(0), (double)this.zLevel, (double)0, (double)16)%(#cc7832)[; ] tessellator.draw()%(#cc7832)[; ] } }Ce que jaimerais faire : c’est le même rendue que l’item MAP, (ItemMapRender) mais pour ma carte d’indentité, maintenant il ne me manque plus que me “background” que j’aimerais changé car j’ai l’icon de l’item mais “le background” et plus grand pour que cela sois plus lisible, et j’aimerais aussi ajouté si possible “les main” comme dans la map . Merci de vos réponse.
-
Malheureusement pour faire ça il faut que ton Item soit extends ItemMap
-
D’accord, mais puor le problème du “background” ?
-
Je vois pas ce que tu appelles background
-
L’image de font que je tente de render avec mon tessellator.
-
Fait un copier coller de la fonction entière, ensuite tu as juste à associer la texture que tu veux et à dessiner avec le tesselator. (envoi le code une fois ça fait)
PS : il est possible que le rendu soit en dehors de l’écran
-
Voici le code :
[font=Courier Newpackage ]fr.ph1823.MyLife.Item.civil%(#cc7832)[; ] import net.minecraft.client.Minecraft%(#cc7832)[; ]import net.minecraft.client.gui.FontRenderer%(#cc7832)[; ]import net.minecraft.client.renderer.Tessellator%(#cc7832)[; ]import net.minecraft.client.renderer.texture.TextureManager%(#cc7832)[; ] import net.minecraft.item.ItemStack%(#cc7832)[; ]import net.minecraft.nbt.NBTTagCompound%(#cc7832)[; ]import net.minecraft.util.ResourceLocation%(#cc7832)[; ]import net.minecraftforge.client.IItemRenderer%(#cc7832)[; ] import org.lwjgl.opengl.GL11%(#cc7832)[; ] %(#629755)[*/** *]%(#629755)[* * Created by ph1823 - Minecraft on 28/03/2016. *]%(#629755)[* */ *]public class IdentityTechneRender implements IItemRenderer { protected Identity model%(#cc7832)[; ] protected float zLevel%(#cc7832)[; ] private static TextureManager *manager *= Minecraft.*getMinecraft*().getTextureManager()%(#cc7832)[; ] protected static ResourceLocation *texture *= new ResourceLocation("plants:textures/items/card1.png")%(#cc7832)[; ] public IdentityTechneRender() { model = new Identity()%(#cc7832)[; ] } %(#bbb529)[@Override ] public boolean handleRenderType(ItemStack item, ItemRenderType type) { return type == ItemRenderType.*EQUIPPED *|| type == ItemRenderType.*EQUIPPED_FIRST_PERSON*%(#cc7832)[; ] } %(#bbb529)[@Override ] public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return type == ItemRenderType.*EQUIPPED*%(#cc7832)[; ] } %(#bbb529)[@Override ] public void renderItem(ItemRenderType type, ItemStack item, Object… data) { String name = "Iconnue"%(#cc7832)[; ] String surname = "Inconnue"%(#cc7832)[; ] int age = 0%(#cc7832)[; ] NBTTagCompound nbt = item.getTagCompound()%(#cc7832)[; ] if (nbt != null) { age = nbt.getInteger("age")%(#cc7832)[; ] name = nbt.getString("name") != null ? nbt.getString("name") : name%(#cc7832)[; ] surname = nbt.getString("surname") != null ? nbt.getString("surname") : surname%(#cc7832)[; ] } net.minecraft.util.IIcon icon = item.getIconIndex()%(#cc7832)[; ] FontRenderer font = Minecraft.*getMinecraft*().fontRenderer%(#cc7832)[; ] switch (type) { case *EQUIPPED*: GL11.*glTranslatef*(1F, -.5F, 0F)%(#cc7832)[; ]%(#cc7832)[ break; ] case *EQUIPPED_FIRST_PERSON*: GL11.*glTranslatef*(8F, 2F, 2F)%(#cc7832)[; ] GL11.*glRotatef*(-10F, 0F, 0F, 1F)%(#cc7832)[; ]%(#cc7832)[ break; ] default: } GL11.*glRotatef*(180F, 0F, 0F, 1F)%(#cc7832)[; ] GL11.*glScalef*(0.05F, 0.05F, 0.05F)%(#cc7832)[; ] font.drawStringWithShadow(surname,-5,5, 0xFFFFFF)%(#cc7832)[; ] *manager*.bindTexture(*texture*)%(#cc7832)[; ] drawTexturedModalRect(0,0,16,16,16,16)%(#cc7832)[; ] %(#808080)[/* Tessellator tessellator = Tessellator.instance; ] %(#808080)[ tessellator.startDrawingQuads(); ]%(#808080)[ tessellator.addVertexWithUV((double)(0), (double)(16), (double)this.zLevel, (double)0, (double)16); ]%(#808080)[ tessellator.addVertexWithUV((double)(16), (double)(16), (double)this.zLevel, (double)0, (double)16); ]%(#808080)[ tessellator.addVertexWithUV((double)(16), (double)(0), (double)this.zLevel, (double)0, (double)16); ]%(#808080)[ tessellator.addVertexWithUV((double)(0), (double)(0), (double)this.zLevel, (double)0, (double)16); ]%(#808080)[ tessellator.draw();*/ ] } %(#808080)[/* public void drawTexturedModelRectFromIcon(int p_94065_1_, int p_94065_2_, int p_94065_4_, int p_94065_5_) ]%(#808080)[ { ]%(#808080)[ Tessellator tessellator = Tessellator.instance; ]%(#808080)[ tessellator.startDrawingQuads(); ]%(#808080)[ tessellator.addVertexWithUV((double)(p_94065_1_ + 0), (double)(p_94065_2_ + p_94065_5_), (double)this.zLevel, (double)16, (double)0); ]%(#808080)[ tessellator.addVertexWithUV((double)(p_94065_1_ + p_94065_4_), (double)(p_94065_2_ + p_94065_5_), (double)this.zLevel, (double)16, (double)0); ]%(#808080)[ tessellator.addVertexWithUV((double)(p_94065_1_ + p_94065_4_), (double)(p_94065_2_ + 0), (double)this.zLevel, (double)16, (double)0); ]%(#808080)[ tessellator.addVertexWithUV((double)(p_94065_1_ + 0), (double)(p_94065_2_ + 0), (double)this.zLevel, (double)16, (double)0); ]%(#808080)[ tessellator.draw(); ]%(#808080)[ }*/ ] public void drawTexturedModalRect(int p_73729_1_, int p_73729_2_, int p_73729_3_, int p_73729_4_, int p_73729_5_, int p_73729_6_) { float f = 0.00390625F%(#cc7832)[; ] float f1 = 0.00390625F%(#cc7832)[; ] Tessellator tessellator = Tessellator.*instance*%(#cc7832)[; ] tessellator.startDrawingQuads()%(#cc7832)[; ] tessellator.addVertexWithUV((double)(p_73729_1_ + 0), (double)(p_73729_2_ + p_73729_6_), (double)this.zLevel, (double)((float)(p_73729_3_ + 0) * f), (double)((float)(p_73729_4_ + p_73729_6_) * f1))%(#cc7832)[; ] tessellator.addVertexWithUV((double)(p_73729_1_ + p_73729_5_), (double)(p_73729_2_ + p_73729_6_), (double)this.zLevel, (double)((float)(p_73729_3_ + p_73729_5_) * f), (double)((float)(p_73729_4_ + p_73729_6_) * f1))%(#cc7832)[; ] tessellator.addVertexWithUV((double)(p_73729_1_ + p_73729_5_), (double)(p_73729_2_ + 0), (double)this.zLevel, (double)((float)(p_73729_3_ + p_73729_5_) * f), (double)((float)(p_73729_4_ + 0) * f1))%(#cc7832)[; ] tessellator.addVertexWithUV((double)(p_73729_1_ + 0), (double)(p_73729_2_ + 0), (double)this.zLevel, (double)((float)(p_73729_3_ + 0) * f), (double)((float)(p_73729_4_ + 0) * f1))%(#cc7832)[; ] tessellator.draw()%(#cc7832)[; ] } }, j’ai un problème cest que l’images est en 1250*882
Et voici ce que ca donne (un carré de rien du tout) :

-
1- La taille de ta texture doit être une puissance de 2 : 256x256, 512x512 etc. Tu peux prendre une taille au dessus et remplir le reste de vide
2- Une fois ça fait il faut faire ces calculs pour mettre la bonne taille : xMaxDeLaTexture / tailleEnXDeLaTexture * 256 (même chose pour l’axe y). Exemple : si ta texture fait 256x256 dans un fichier de 512x512, tu devras mettre taille sur x et y 128 (256 / 512 * 256 = 128)