• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Item avec couleur

    1.8.x
    1.8
    3
    15
    2515
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      leflo last edited by

      Bonjour à tous !

      Je fait appelle à vous car j’ai un problème avec un item que je voudrais mettre en couleur comme je le veut;
      Un peut à la façon d’un spawn egg ou de la grass vanilla.

      J’ai donc mon item avec son model 3d mais je n’ai pas trouvé de méthode qui fonctionne correctement.

      J’ai trouvé ça dans la class item mais ça ne change absolument rien …

      @Override
      public int getColorFromItemStack(ItemStack stack, int renderPass) {
      return 48006;
      }
      

      Je voudrais donc savoir si vous pourriez m’aider à résoudre ce problème ?

      Il n’y a pas de crash ou d’erreurs donc pas de logs désolé 😉

      J’espère que vous m’aiderez au plus vite et **merci **d’avance !

      -LeFlo

      1 Reply Last reply Reply Quote 0
      • SCAREX
        SCAREX last edited by

        Si tu as un model 3D, ce serait mieux de faire le changement de couleur directement dans le rendu. As-tu essayé avec une couleur en hexadécimal RGB et RGBA ?

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

        1 Reply Last reply Reply Quote 0
        • L
          leflo last edited by

          @‘SCAREX’:

          Si tu as un model 3D, ce serait mieux de faire le changement de couleur directement dans le rendu. As-tu essayé avec une couleur en hexadécimal RGB et RGBA ?

          Mais le problème est que je passe par le rendu 1.8 de Minecraft en json… Mais je peut toujours le faire avec techne mais après je ne sais pas a quel render me referencer aurriez vous un tuto ou une fonction ou encore une class de forge/Minecraft qui pourrais m’aider ? Merci en tout cas !

          1 Reply Last reply Reply Quote 0
          • L
            leflo last edited by

            @‘SCAREX’:

            Si tu as un model 3D, ce serait mieux de faire le changement de couleur directement dans le rendu. As-tu essayé avec une couleur en hexadécimal RGB et RGBA ?

            Mais le problème, c’est que j’utilise le rendu json de Minecraft, mais si besoin est, je peut le refaire avec techne !
            Mais je veut si possible pourvoir changé la couleur de l’item à n’importe quelle moment c’est à adire que je veut que la couleur puisse
            être changé in-game (pas besoin de me fournir de code pour cet partie pour l’instant !)
            Si ce que vous me proposez rend cela possible, j’aimerais bien savoir de quelle renderer vous parlez, j’ai entendus parler de gl11 mais je ne comprend pas très bien ce qu’il faut faire … Possible d’avoir un exemple ? Une class à la quelle me rattaché ? Un tuto ?

            En tout cas un grand merci à toi !

            1 Reply Last reply Reply Quote 0
            • SCAREX
              SCAREX last edited by

              Malheureusement si tu utilises un json, il faut regarder dans les json de minecraft voir si c’est fait à un endroit car GL11.glColor4f ne peut être appelé que avant le rendu or tu n’as pas de fonction appelée avant le rendu

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

              1 Reply Last reply Reply Quote 0
              • L
                leflo last edited by

                @‘SCAREX’:

                Malheureusement si tu utilises un json, il faut regarder dans les json de minecraft voir si c’est fait à un endroit car GL11.glColor4f ne peut être appelé que avant le rendu or tu n’as pas de fonction appelée avant le rendu

                C’est possible un rendu modifiable in-game ? Avec Model techne ? Car le faite d’avoir un model techne me dérrange pas du tout (même au contraire)

                1 Reply Last reply Reply Quote 0
                • SCAREX
                  SCAREX last edited by

                  Oui tu peux avec un model techne ou obj, mais tu peux aussi avec un json, mais je ne sais pas comment avec les json

                  Site web contenant mes scripts : http://SCAREXgaming.github.io

                  Pas de demandes de support par MP ni par skype SVP.
                  Je n'accepte sur skype que l…

                  1 Reply Last reply Reply Quote 0
                  • L
                    leflo last edited by

                    @‘SCAREX’:

                    Oui tu peux avec un model techne ou obj, mais tu peux aussi avec un json, mais je ne sais pas comment avec les json

                    Ma class ClientProxy:
                    :::

                    package fr.leflodu62.octets.proxy;
                    
                    import net.minecraftforge.client.MinecraftForgeClient;
                    import fr.leflodu62.octets.init.ItemsOctets;
                    import fr.leflodu62.octets.render.RenderOctet;
                    
                    public class ClientProxy extends CommonProxy {
                    
                    @Override
                    public void registerRenders(){
                    ItemsOctets.registerRenders();
                    
                    MinecraftForgeClient.registerItemRenderer(ItemsOctets.Octet, new RenderOctet());
                    }
                    
                    }
                    
                    

                    :::

                    Ma class Item:
                    :::

                    package fr.leflodu62.octets.items;
                    
                    import java.util.List;
                    
                    import fr.leflodu62.octets.util.OctetColorHelper;
                    import net.minecraft.entity.player.EntityPlayer;
                    import net.minecraft.item.Item;
                    import net.minecraft.item.ItemStack;
                    
                    public class ItemOctet extends Item {
                    
                    @Override
                    public void addInformation(ItemStack stack, EntityPlayer playerIn, List tooltip, boolean advanced) {
                    tooltip.add(0 + " octets.");
                    }
                    
                    }
                    
                    

                    :::

                    Mon model:
                    :::

                    package fr.leflodu62.octets.models;
                    
                    import net.minecraft.client.model.ModelBase;
                    import net.minecraft.client.model.ModelRenderer;
                    import net.minecraft.entity.Entity;
                    
                    public class ModelOctet extends ModelBase
                    {
                     //fields
                       ModelRenderer Cube;
                    
                     public ModelOctet()
                     {
                       textureWidth = 32;
                       textureHeight = 32;
                    
                         Cube = new ModelRenderer(this, 0, 0);
                         Cube.addBox(0F, 0F, 0F, 8, 8, 8);
                         Cube.setRotationPoint(-4F, 8F, -4F);
                         Cube.setTextureSize(32, 32);
                         Cube.mirror = true;
                         setRotation(Cube, 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);
                       Cube.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);
                     }
                    
                    }
                    
                    

                    :::

                    Ma class RenderOctet:
                    :::

                    package fr.leflodu62.octets.render;
                    
                    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;
                    
                    import fr.leflodu62.octets.References;
                    import fr.leflodu62.octets.models.ModelOctet;
                    
                    public class RenderOctet implements IItemRenderer  {
                    
                    protected ModelOctet model;
                    protected ResourceLocation texture = new ResourceLocation(References.MOD_ID + ":" + "textures/blocks/octet.png");
                    
                    @Override
                    public boolean handleRenderType(ItemStack item, ItemRenderType type) {
                    return false;
                    }
                    
                    @Override
                    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
                    return false;
                    }
                    
                    @Override
                    public void renderItem(ItemRenderType type, ItemStack item, Object… data) {
                    GL11.glPopMatrix();
                    Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
                    model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
                    GL11.glPushMatrix();
                    }
                    
                    }
                    
                    

                    :::

                    Ma class du Mod:
                    :::

                    package fr.leflodu62.octets;
                    
                    import net.minecraftforge.fml.common.Mod;
                    import net.minecraftforge.fml.common.Mod.EventHandler;
                    import net.minecraftforge.fml.common.SidedProxy;
                    import net.minecraftforge.fml.common.event.FMLInitializationEvent;
                    import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
                    import fr.leflodu62.octets.init.ItemsOctets;
                    import fr.leflodu62.octets.proxy.CommonProxy;
                    
                    @Mod(modid = References.MOD_ID, name = References.MOD_NAME, version = References.VERSION)
                    public class Octets {
                    
                    @SidedProxy(clientSide = References.CLIENT_PROXY_CLASS, serverSide = References.COMMON_PROXY_CLASS)
                    public static CommonProxy proxy;
                    
                    @EventHandler
                    public void preIntit(FMLPreInitializationEvent event){
                    ItemsOctets.init();
                    ItemsOctets.register();
                    }
                    
                    @EventHandler
                    public void intit(FMLInitializationEvent event){
                    proxy.registerRenders();
                    }
                    
                    }
                    
                    

                    :::

                    Voilà et sinon le rendu ingame qui va pas du tout:  http://puu.sh/lkmsh/663415e015.jpg

                    Une idée de ce qui ne va pas ? Merci du soutient !

                    1 Reply Last reply Reply Quote 0
                    • SCAREX
                      SCAREX last edited by

                      Dans les fonctions handleRenderType et shouldUseRenderHelper tu dois retourner true

                      Site web contenant mes scripts : http://SCAREXgaming.github.io

                      Pas de demandes de support par MP ni par skype SVP.
                      Je n'accepte sur skype que l…

                      1 Reply Last reply Reply Quote 0
                      • L
                        leflo last edited by

                        @‘SCAREX’:

                        Dans les fonctions handleRenderType et shouldUseRenderHelper tu dois retourner true

                        Voici la nouvelle class RenderOctet:

                        :::

                        package fr.leflodu62.octets.render;
                        
                        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;
                        
                        import fr.leflodu62.octets.References;
                        import fr.leflodu62.octets.models.ModelOctet;
                        
                        public class RenderOctet implements IItemRenderer  {
                        
                        protected ModelOctet model;
                        protected ResourceLocation texture = new ResourceLocation(References.MOD_ID + ":" + "textures/blocks/octet.png");
                        
                        @Override
                        public boolean handleRenderType(ItemStack item, ItemRenderType type) {
                        return true;
                        }
                        
                        @Override
                        public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
                        return true;
                        }
                        
                        @Override
                        public void renderItem(ItemRenderType type, ItemStack item, Object… data) {
                        GL11.glPopMatrix();
                        Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
                        model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
                        GL11.glPushMatrix();
                        }
                        
                        }
                        
                        

                        :::

                        et ça me donne toujours ça http://puu.sh/lkp3B/0e66a8173c.png
                        C’est bizarre …

                        1 Reply Last reply Reply Quote 0
                        • robin4002
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                          IItemRenderer existe encore en 1.8 ? Il me semblait pourtant que ça n’existait plus.
                          EDIT : en effet il est toujours là mais en obsolète et non implémenté. Donc il en fonctionne pas.

                          Aucune idée de commencer colorer avec les jsons. Comme déjà dit faut regarder les potions.

                          1 Reply Last reply Reply Quote 0
                          • L
                            leflo last edited by

                            @‘robin4002’:

                            IItemRenderer existe encore en 1.8 ? Il me semblait pourtant que ça n’existait plus.
                            EDIT : en effet il est toujours là mais en obsolète et non implémenté. Donc il en fonctionne pas.

                            Aucune idée de commencer colorer avec les jsons. Comme déjà dit faut regarder les potions.

                            J’ai trouvé ça dans la class pour les potions, mais comme je l’ai dit dans le 1e com’, ça ne fonctionne pas avec moi et aussi je n’ai pas de metadata à mon item

                            Partie de la class potion:
                            :::

                            @SideOnly(Side.CLIENT)
                               public int getColorFromDamage(int meta)
                               {
                                   return PotionHelper.getLiquidColor(meta, false);
                               }
                            
                               @SideOnly(Side.CLIENT)
                               public int getColorFromItemStack(ItemStack stack, int renderPass)
                               {
                                   return renderPass > 0 ? 16777215 : this.getColorFromDamage(stack.getMetadata());
                               }
                            

                            :::

                            Et après aussi avec la class des armures j’ai trouvé ces deux choses:
                            :::

                            @SideOnly(Side.CLIENT)
                            public int getColorFromItemStack(ItemStack stack, int renderPass)
                            {
                            if (renderPass > 0)
                            {
                            return 16777215;
                            }
                            else
                            {
                            int j = this.getColor(stack);
                            
                            if (j < 0)
                            {
                            j = 16777215;
                            }
                            
                            return j;
                            }
                            }
                            
                            public boolean hasColor(ItemStack stack)
                            {
                            return this.material != ItemArmor.ArmorMaterial.LEATHER ? false : (!stack.hasTagCompound() ? false : (!stack.getTagCompound().hasKey("display", 10) ? false : stack.getTagCompound().getCompoundTag("display").hasKey("color", 3)));
                            }
                            
                            /**
                            * Return the color for the specified armor ItemStack.
                            */
                            public int getColor(ItemStack stack)
                            {
                            if (this.material != ItemArmor.ArmorMaterial.LEATHER)
                            {
                            return -1;
                            }
                            else
                            {
                            NBTTagCompound nbttagcompound = stack.getTagCompound();
                            
                            if (nbttagcompound != null)
                            {
                            NBTTagCompound nbttagcompound1 = nbttagcompound.getCompoundTag("display");
                            
                            if (nbttagcompound1 != null && nbttagcompound1.hasKey("color", 3))
                            {
                            return nbttagcompound1.getInteger("color");
                            }
                            }
                            
                            return 10511680;
                            }
                            }
                            
                            /**
                            * Remove the color from the specified armor ItemStack.
                            */
                            public void removeColor(ItemStack stack)
                            {
                            if (this.material == ItemArmor.ArmorMaterial.LEATHER)
                            {
                            NBTTagCompound nbttagcompound = stack.getTagCompound();
                            
                            if (nbttagcompound != null)
                            {
                            NBTTagCompound nbttagcompound1 = nbttagcompound.getCompoundTag("display");
                            
                            if (nbttagcompound1.hasKey("color"))
                            {
                            nbttagcompound1.removeTag("color");
                            }
                            }
                            }
                            }
                            
                            /**
                            * Sets the color of the specified armor ItemStack
                            */
                            public void setColor(ItemStack stack, int color)
                            {
                            if (this.material != ItemArmor.ArmorMaterial.LEATHER)
                            {
                            throw new UnsupportedOperationException("Can\'t dye non-leather!");
                            }
                            else
                            {
                            NBTTagCompound nbttagcompound = stack.getTagCompound();
                            
                            if (nbttagcompound == null)
                            {
                            nbttagcompound = new NBTTagCompound();
                            stack.setTagCompound(nbttagcompound);
                            }
                            
                            NBTTagCompound nbttagcompound1 = nbttagcompound.getCompoundTag("display");
                            
                            if (!nbttagcompound.hasKey("display", 10))
                            {
                            nbttagcompound.setTag("display", nbttagcompound1);
                            }
                            
                            nbttagcompound1.setInteger("color", color);
                            }
                            }
                            

                            :::

                            1 Reply Last reply Reply Quote 0
                            • robin4002
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                              https://github.com/TheGreyGhost/MinecraftByExample/tree/master/src/main/java/minecraftbyexample/mbe11_item_variants
                              Cet item est un exemple d’utilisation du render pass et de coloration.

                              1 Reply Last reply Reply Quote 0
                              • L
                                leflo last edited by

                                @‘robin4002’:

                                https://github.com/TheGreyGhost/MinecraftByExample/tree/master/src/main/java/minecraftbyexample/mbe11_item_variants
                                Cet item est un exemple d’utilisation du render pass et de coloration.

                                Est-ce que de ce faite je suis obligé d’utilisé un model en 2d comme les items normaux ?

                                Au passage les couleurs fonctionnent bien maintenant :-3 Merci ❤

                                1 Reply Last reply Reply Quote 0
                                • robin4002
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                                  Il me semble que ça peut aussi fonctionner avec un modèle 3D

                                  1 Reply Last reply Reply Quote 0
                                  • 1 / 1
                                  • First post
                                    Last post
                                  Design by Woryk
                                  Contact / Mentions Légales

                                  MINECRAFT FORGE FRANCE © 2018

                                  Powered by NodeBB