MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Item avec couleur

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    15 Messages 3 Publieurs 3.0k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • L Hors-ligne
      leflo
      dernière édition par

      @‘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 réponse Dernière réponse Répondre Citer 0
      • SCAREXS Hors-ligne
        SCAREX
        dernière édition par

        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 réponse Dernière réponse Répondre Citer 0
        • L Hors-ligne
          leflo
          dernière édition par

          @‘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 réponse Dernière réponse Répondre Citer 0
          • SCAREXS Hors-ligne
            SCAREX
            dernière édition par

            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 réponse Dernière réponse Répondre Citer 0
            • L Hors-ligne
              leflo
              dernière édition par

              @‘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 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                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 réponse Dernière réponse Répondre Citer 0
                • L Hors-ligne
                  leflo
                  dernière édition par

                  @‘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 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    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 réponse Dernière réponse Répondre Citer 0
                    • L Hors-ligne
                      leflo
                      dernière édition par

                      @‘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 réponse Dernière réponse Répondre Citer 0
                      • robin4002R Hors-ligne
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                        dernière édition par

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

                        1 réponse Dernière réponse Répondre Citer 0
                        • 1 / 1
                        • Premier message
                          Dernier message
                        Design by Woryk
                        ContactMentions Légales

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB