Jump to content

Schemex

Members
  • Posts

    8
  • Joined

  • Last visited

Posts posted by Schemex

  1. @SubscribeEvent
    public void setArmorModel(RenderPlayerEvent.SetArmorModel evt){
    	if(/* is wearing you armor */){
    		evt.result = -1;
    	}
    }

    put this in your client event handler and try messing with the result.

    I have no idea if this works or not but looking at the source code this is the only way i could find to manipulate the render passes.

    EDIT 2:

     

    I have been playing around with it, trying to find a way to recolor from there, but I haven't found one yet.

     

    @SubscribeEvent
    public void setArmorModel(RenderPlayerEvent.SetArmorModel event) {
    	int color = 9109504;
    		float f1 = (float)(color >> 16 & 255) / 255.0F;
                float f2 = (float)(color >> 8 & 255) / 255.0F;
                float f3 = (float)(color & 255) / 255.0F;
                GL11.glColor3f(f1, f2, f3);
    
    }

    I wrote the method above just to see if I can use GL1 to recolor it; however, I think this method is called at the wrong time, I am not using GL1 correctly, or there is a better alternative.

     

    EDIT 3:

    Just a follow up, I tested if the functions are being called by creating a file with the word "test" in it, and, sure enough, when the entity is being rendered, the thread is run (but the color of the armor doesn't change).

     

    EDIT 4:

    Is there a forge event that is called that could simply change the color of the texture when the texture is first initialized?

  2. Build: Recommended 1.7.10 (downloaded last week)

     

    Background: I am attempting to develop a mod that has many different types of armor.  For convenience purposes, I am going to simply going to recolor one texture, similar to how leather works.

     

    However, I have spent hours reading through tons of posts regarding this to no avail.  I have tried reading through the render class for player and I am fairly sure I've implemented it correctly, but, inevitably, it doesn't work.

     

    I am able to change the items associated with the armor parts (helmet, chestplate, etc...), but when they are applied to the player, it is the default grey texture I stole from leather armor ( http://i.imgur.com/9r793b0.png ).

     

    I am not attempting to use any overlay features.  I just want to recolor my textures.

     

    My current code:

    package com.betterToolsAndArmor.armor;
    
    import org.lwjgl.opengl.GL11;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.ItemArmor;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.DamageSource;
    import net.minecraft.util.IIcon;
    import net.minecraftforge.common.ISpecialArmor;
    
    public class ItemArmorLocalBase extends ItemArmor implements ISpecialArmor {
    
    public ItemArmorLocalBase(ArmorMaterial p_i45325_1_, int p_i45325_2_, int p_i45325_3_) {
    	super(p_i45325_1_, p_i45325_2_, p_i45325_3_);
    }
    @Override
    public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) {
    	return new ArmorProperties(0, 0, 0);
    }
    
    @Override
    public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) {
    	return 5;
    }
    
    @Override
    public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) {
    	stack.damageItem(damage * 2, entity);		
    }
    
    @Override
    public String getArmorTexture(ItemStack armor, Entity entity, int slot, String type) {
    	if (((ItemArmor) (armor.getItem())).armorType == 2) {
    		return modid + ":textures/armor/magic_2.png";
    	}
    	return modid + ":textures/armor/magic_1.png";
    }
    
    public CreativeTabs[] getCreativeTabs() {
    	return new CreativeTabs[] {CreativeTabs.tabCombat};
    }
    
    public boolean getIsRepairable(ItemStack armor, ItemStack stack) {
    	//return stack.getItem() == ModItems.craftableObsidian;
    	return false;
    }
    
    //the part that actually applies
    
    @Override
     public boolean hasColor(ItemStack item)
     {
    	 return true;
     }
    
     @Override
     public int getColor(ItemStack item)
     {
    	 return 9846527;
     }
    
     @Override
     @SideOnly(Side.CLIENT)
     public int getColorFromItemStack(ItemStack item, int unUsed)
     {
    	 return getColor(item);
     }
    
     @Override
     public void registerIcons(IIconRegister r)
    	{
    		itemIcon = r.registerIcon(iconReg);
    	}
    
    
    
     //I am fairly sure this is supurfulous
     @Override
    	@SideOnly(Side.CLIENT)
    	public boolean requiresMultipleRenderPasses()
    	{
    		return true;
    	}
    
    	@Override
    	public int getRenderPasses(int metadata)
    	{
    		// TODO Auto-generated method stub
    		return 1;
    	}
    
    	@Override
    	public IIcon getIcon(ItemStack stack, int pass)
    	{
    		// TODO Auto-generated method stub
    		return itemIcon;
    		//return icons[pass];
    	}
    }
    

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.