diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index e7b2d800a..db58f2379 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -4264,10 +4264,10 @@ public class ModItems { .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) .setStep("hbm:step.metal").setJump("hbm:step.iron_jump").setFall("hbm:step.iron_land") .hides(EnumPlayerPart.HAT) - .setUnlocalizedName("t51_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_helmet"); - t51_plate = new ArmorT51(aMatT51, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_plate"); - t51_legs = new ArmorT51(aMatT51, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_legs"); - t51_boots = new ArmorT51(aMatT51, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_boots").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t51_boots"); + .setUnlocalizedName("t51_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor"); + t51_plate = new ArmorT51(aMatT51, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor"); + t51_legs = new ArmorT51(aMatT51, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor"); + t51_boots = new ArmorT51(aMatT51, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_boots").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor"); ArmorMaterial aMatDesh = EnumHelper.addArmorMaterial("HBM_DESH", 150, new int[] { 3, 8, 6, 3 }, 0); aMatDesh.customCraftingMaterial = ModItems.ingot_desh; diff --git a/src/main/java/com/hbm/items/armor/ArmorAJR.java b/src/main/java/com/hbm/items/armor/ArmorAJR.java index ae4af265a..14d380de3 100644 --- a/src/main/java/com/hbm/items/armor/ArmorAJR.java +++ b/src/main/java/com/hbm/items/armor/ArmorAJR.java @@ -1,14 +1,19 @@ package com.hbm.items.armor; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorAJR; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorAJR extends ArmorFSBPowered { +public class ArmorAJR extends ArmorFSBPowered implements IItemRendererProvider { public ArmorAJR(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -30,4 +35,18 @@ public class ArmorAJR extends ArmorFSBPowered { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_ajr, armorType, + ResourceManager.ajr_helmet, ResourceManager.ajr_chest, ResourceManager.ajr_arm, ResourceManager.ajr_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorAJRO.java b/src/main/java/com/hbm/items/armor/ArmorAJRO.java index a3425fdc3..1c9e1afec 100644 --- a/src/main/java/com/hbm/items/armor/ArmorAJRO.java +++ b/src/main/java/com/hbm/items/armor/ArmorAJRO.java @@ -1,14 +1,19 @@ package com.hbm.items.armor; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorAJRO; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorAJRO extends ArmorFSBPowered { +public class ArmorAJRO extends ArmorFSBPowered implements IItemRendererProvider { public ArmorAJRO(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -30,4 +35,18 @@ public class ArmorAJRO extends ArmorFSBPowered { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_ajr, armorType, + ResourceManager.ajro_helmet, ResourceManager.ajro_chest, ResourceManager.ajro_arm, ResourceManager.ajro_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorBJ.java b/src/main/java/com/hbm/items/armor/ArmorBJ.java index 5c2cc6353..a5fcc3be3 100644 --- a/src/main/java/com/hbm/items/armor/ArmorBJ.java +++ b/src/main/java/com/hbm/items/armor/ArmorBJ.java @@ -1,18 +1,26 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorBJ; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; +import net.minecraftforge.client.IItemRenderer; -public class ArmorBJ extends ArmorFSBPowered { +public class ArmorBJ extends ArmorFSBPowered implements IItemRendererProvider { public ArmorBJ(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -24,31 +32,57 @@ public class ArmorBJ extends ArmorFSBPowered { @Override @SideOnly(Side.CLIENT) public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { - + if(models == null) { models = new ModelArmorBJ[4]; - + for(int i = 0; i < 4; i++) models[i] = new ModelArmorBJ(i); } - + return models[armorSlot]; } - - public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { - - super.onArmorTick(world, player, itemStack); - - if(this == ModItems.bj_helmet && ArmorFSB.hasFSBArmorIgnoreCharge(player) && !ArmorFSB.hasFSBArmor(player)) { - - ItemStack helmet = player.inventory.armorInventory[3]; - - if(!player.inventory.addItemStackToInventory(helmet)) - player.dropPlayerItemWithRandomChoice(helmet, false); - - player.inventory.armorInventory[3] = null; - - player.attackEntityFrom(ModDamageSource.lunar, 1000); - } - } + + public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { + + super.onArmorTick(world, player, itemStack); + + if(this == ModItems.bj_helmet && ArmorFSB.hasFSBArmorIgnoreCharge(player) && !ArmorFSB.hasFSBArmor(player)) { + + ItemStack helmet = player.inventory.armorInventory[3]; + + if(!player.inventory.addItemStackToInventory(helmet)) + player.dropPlayerItemWithRandomChoice(helmet, false); + + player.inventory.armorInventory[3] = null; + + player.attackEntityFrom(ModDamageSource.lunar, 1000); + } + } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + if(armorType == 1) { + if(ArmorBJ.this == ModItems.bj_plate_jetpack) { + GL11.glScaled(0.6875, 0.6875, 0.6875); + } else { + GL11.glScaled(0.875, 0.875, 0.875); + } + } + renderStandard(ResourceManager.armor_bj, armorType, + ResourceManager.bj_eyepatch, ResourceManager.bj_chest, ResourceManager.bj_arm, ResourceManager.bj_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot"); + if(ArmorBJ.this == ModItems.bj_plate_jetpack) { + GL11.glTranslated(0, 0, -0.1); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.bj_jetpack); + ResourceManager.armor_bj.renderPart("Jetpack"); + } + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorBismuth.java b/src/main/java/com/hbm/items/armor/ArmorBismuth.java index 6906ab0a9..d0fd6e593 100644 --- a/src/main/java/com/hbm/items/armor/ArmorBismuth.java +++ b/src/main/java/com/hbm/items/armor/ArmorBismuth.java @@ -1,13 +1,21 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorBismuth; +import com.hbm.render.tileentity.IItemRendererProvider; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorBismuth extends ArmorFSB { +public class ArmorBismuth extends ArmorFSB implements IItemRendererProvider { public ArmorBismuth(ArmorMaterial material, int slot, String texture) { super(material, slot, texture); @@ -30,4 +38,26 @@ public class ArmorBismuth extends ArmorFSB { return models[armorSlot]; } + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + if(armorType == 0) { + GL11.glTranslated(0, -0.5, 0); + GL11.glScaled(0.625, 0.625, 0.625); + } + if(armorType == 1) { + GL11.glScaled(0.875, 0.875, 0.875); + } + GL11.glDisable(GL11.GL_CULL_FACE); + renderStandard(ResourceManager.armor_bismuth, armorType, + ResourceManager.armor_bismuth_tex, ResourceManager.armor_bismuth_tex, ResourceManager.armor_bismuth_tex, ResourceManager.armor_bismuth_tex, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot"); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDNT.java b/src/main/java/com/hbm/items/armor/ArmorDNT.java index 73617c0be..a188b05a7 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDNT.java +++ b/src/main/java/com/hbm/items/armor/ArmorDNT.java @@ -3,12 +3,17 @@ package com.hbm.items.armor; import java.util.List; import java.util.UUID; +import org.lwjgl.opengl.GL11; + import com.google.common.collect.Multimap; import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.threading.PacketThreading; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorDNT; +import com.hbm.render.tileentity.IItemRendererProvider; import com.hbm.util.ArmorUtil; import com.hbm.util.BobMathUtil; import com.hbm.util.i18n.I18nUtil; @@ -21,16 +26,18 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; -public class ArmorDNT extends ArmorFSBPowered { +public class ArmorDNT extends ArmorFSBPowered implements IItemRendererProvider { public ArmorDNT(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -190,4 +197,23 @@ public class ArmorDNT extends ArmorFSBPowered { list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.fastFall")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.sprintBoost")); } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + if(armorType == 0) { + GL11.glTranslated(0, -1, 0); + } + setupRenderInv(); + } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_dnt, armorType, + ResourceManager.dnt_helmet, ResourceManager.dnt_chest, ResourceManager.dnt_arm, ResourceManager.dnt_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDesh.java b/src/main/java/com/hbm/items/armor/ArmorDesh.java index c7ec38d1f..72abf9ad1 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDesh.java +++ b/src/main/java/com/hbm/items/armor/ArmorDesh.java @@ -4,7 +4,10 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.inventory.fluid.FluidType; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorDesh; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,9 +15,11 @@ import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorDesh extends ArmorFSBFueled { +public class ArmorDesh extends ArmorFSBFueled implements IItemRendererProvider { public ArmorDesh(ArmorMaterial material, int slot, String texture, FluidType fuelType, int maxFuel, int fillRate, int consumption, int drain) { super(material, slot, texture, fuelType, maxFuel, fillRate, consumption, drain); @@ -44,4 +49,18 @@ public class ArmorDesh extends ArmorFSBFueled { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_steamsuit, armorType, + ResourceManager.steamsuit_helmet, ResourceManager.steamsuit_chest, ResourceManager.steamsuit_arm, ResourceManager.steamsuit_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDiesel.java b/src/main/java/com/hbm/items/armor/ArmorDiesel.java index da8a6b3f8..e93ceb108 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDiesel.java +++ b/src/main/java/com/hbm/items/armor/ArmorDiesel.java @@ -1,5 +1,7 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; @@ -7,8 +9,11 @@ import com.hbm.handler.threading.PacketThreading; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorDiesel; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -18,11 +23,13 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.client.IItemRenderer; -public class ArmorDiesel extends ArmorFSBFueled { +public class ArmorDiesel extends ArmorFSBFueled implements IItemRendererProvider { public ArmorDiesel(ArmorMaterial material, int slot, String texture, FluidType fuelType, int maxFuel, int fillRate, int consumption, int drain) { super(material, slot, texture, fuelType, maxFuel, fillRate, consumption, drain); @@ -69,4 +76,22 @@ public class ArmorDiesel extends ArmorFSBFueled { public boolean acceptsFluid(FluidType type, ItemStack stack) { return type == Fluids.DIESEL || type == Fluids.DIESEL_CRACK; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + if(armorType == 0) { + GL11.glTranslated(0, 0.5, 0); + GL11.glScaled(0.875, 0.875, 0.875); + } + renderStandard(ResourceManager.armor_dieselsuit, armorType, + ResourceManager.dieselsuit_helmet, ResourceManager.dieselsuit_chest, ResourceManager.dieselsuit_arm, ResourceManager.dieselsuit_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorDigamma.java b/src/main/java/com/hbm/items/armor/ArmorDigamma.java index 89ad09e1d..2f6c460f4 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDigamma.java +++ b/src/main/java/com/hbm/items/armor/ArmorDigamma.java @@ -1,14 +1,21 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorDigamma; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorDigamma extends ArmorFSBPowered { +public class ArmorDigamma extends ArmorFSBPowered implements IItemRendererProvider { public ArmorDigamma(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -30,4 +37,24 @@ public class ArmorDigamma extends ArmorFSBPowered { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + if(armorType == 0) { + GL11.glScaled(0.875, 0.875, 0.875); + GL11.glTranslated(0, -2, 0); + } + setupRenderInv(); + } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_fau, armorType, + ResourceManager.fau_helmet, ResourceManager.fau_chest, ResourceManager.fau_arm, ResourceManager.fau_leg, + "Head", "Body,Cassette", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java b/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java index 940955329..897ec96d9 100644 --- a/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java +++ b/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java @@ -3,23 +3,32 @@ package com.hbm.items.armor; import com.google.common.collect.Multimap; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorEnvsuit; +import com.hbm.render.tileentity.IItemRendererProvider; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import net.minecraftforge.client.IItemRenderer; import java.util.UUID; -public class ArmorEnvsuit extends ArmorFSBPowered { +import org.lwjgl.opengl.GL11; + +public class ArmorEnvsuit extends ArmorFSBPowered implements IItemRendererProvider { public ArmorEnvsuit(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -91,4 +100,32 @@ public class ArmorEnvsuit extends ArmorFSBPowered { } } } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + if(armorType == 0) { + GL11.glScaled(0.3125, 0.3125, 0.3125); + GL11.glTranslated(0, 1, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.envsuit_helmet); + ResourceManager.armor_envsuit.renderPart("Helmet"); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(1F, 1F, 0.8F); + ResourceManager.armor_envsuit.renderPart("Lamps"); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_LIGHTING); + } else { + renderStandard(ResourceManager.armor_envsuit, armorType, + ResourceManager.envsuit_helmet, ResourceManager.envsuit_chest, ResourceManager.envsuit_arm, ResourceManager.envsuit_leg, + "Helmet,Lamps", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot"); + } + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index 2253f207c..84969c63b 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -10,7 +10,9 @@ import org.lwjgl.opengl.GL11; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.interfaces.NotableComments; import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; import com.hbm.util.ContaminationUtil; import com.hbm.util.ShadyUtil; import com.hbm.util.i18n.I18nUtil; @@ -39,10 +41,12 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.client.model.IModelCustom; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; //Armor with full set bonus +@NotableComments public class ArmorFSB extends ItemArmor implements IArmorDisableModel { private String texture = ""; @@ -63,6 +67,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { public ArmorFSB(ArmorMaterial material, int slot, String texture) { super(material, 0, slot); this.texture = texture; + this.setTextureName(RefStrings.MODID + ":armor"); } public ArmorFSB addEffect(PotionEffect effect) { @@ -428,4 +433,63 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { public void handleAttack(LivingAttackEvent event) { } public void handleHurt(LivingHurtEvent event) { } + + public static void setupRenderInv() { + GL11.glTranslated(0, -1.5, 0); + GL11.glScaled(3.25, 3.25, 3.25); + GL11.glRotated(180, 1, 0, 0); + GL11.glRotated(-135, 0, 1, 0); + GL11.glRotated(-20, 1, 0, 0); + } + + public static void setupRenderNonInv() { + GL11.glRotated(180, 1, 0, 0); + GL11.glScaled(0.75, 0.75, 0.75); + GL11.glRotated(-90, 0, 1, 0); + } + + // if it's the same vomit every time, why not make a method that does it for us? + public static void renderStandard(IModelCustom model, int armorType, + ResourceLocation helmetTex, ResourceLocation chestTex, ResourceLocation armTex, ResourceLocation legTex, + String helmet, String chest, String leftArm, String rightArm, String leftLeg, String rightLeg, String leftBoot, String rightBoot) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + if(armorType == 0) { + GL11.glScaled(0.3125, 0.3125, 0.3125); + GL11.glTranslated(0, 1, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(helmetTex); + for(String s : helmet.split(",")) model.renderPart(s); + } + if(armorType == 1) { + GL11.glScaled(0.225, 0.225, 0.225); + GL11.glTranslated(0, -10, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(chestTex); + for(String s : chest.split(",")) model.renderPart(s); + GL11.glTranslated(0, 0, 0.1); + Minecraft.getMinecraft().getTextureManager().bindTexture(armTex); + for(String s : leftArm.split(",")) model.renderPart(s); + for(String s : rightArm.split(",")) model.renderPart(s); + } + if(armorType == 2) { + GL11.glScaled(0.25, 0.25, 0.25); + GL11.glTranslated(0, -20, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(legTex); + GL11.glDisable(GL11.GL_CULL_FACE); + for(String s : leftLeg.split(",")) model.renderPart(s); + GL11.glTranslated(0, 0, 0.1); + for(String s : rightLeg.split(",")) model.renderPart(s); + GL11.glEnable(GL11.GL_CULL_FACE); + } + if(armorType == 3) { + GL11.glScaled(0.25, 0.25, 0.25); + GL11.glTranslated(0, -22, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(legTex); + GL11.glDisable(GL11.GL_CULL_FACE); + for(String s : leftBoot.split(",")) model.renderPart(s); + GL11.glTranslated(0, 0, 0.1); + for(String s : rightBoot.split(",")) model.renderPart(s); + GL11.glEnable(GL11.GL_CULL_FACE); + } + GL11.glShadeModel(GL11.GL_FLAT); + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorHEV.java b/src/main/java/com/hbm/items/armor/ArmorHEV.java index 5aa336fa9..f3c4e6677 100644 --- a/src/main/java/com/hbm/items/armor/ArmorHEV.java +++ b/src/main/java/com/hbm/items/armor/ArmorHEV.java @@ -4,7 +4,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorHEV; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -15,11 +18,13 @@ import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; -public class ArmorHEV extends ArmorFSBPowered { +public class ArmorHEV extends ArmorFSBPowered implements IItemRendererProvider { public ArmorHEV(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -175,4 +180,17 @@ public class ArmorHEV extends ArmorFSBPowered { Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); } + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_hev, armorType, + ResourceManager.hev_helmet, ResourceManager.hev_chest, ResourceManager.hev_arm, ResourceManager.hev_leg, + "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorRPA.java b/src/main/java/com/hbm/items/armor/ArmorRPA.java index dd7791918..718f62f2d 100644 --- a/src/main/java/com/hbm/items/armor/ArmorRPA.java +++ b/src/main/java/com/hbm/items/armor/ArmorRPA.java @@ -1,14 +1,21 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorRPA; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorRPA extends ArmorFSBPowered { +public class ArmorRPA extends ArmorFSBPowered implements IItemRendererProvider { public ArmorRPA(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -30,4 +37,19 @@ public class ArmorRPA extends ArmorFSBPowered { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + if(armorType == 1) GL11.glTranslated(0, 0.25, 0); + renderStandard(ResourceManager.armor_remnant, armorType, + ResourceManager.rpa_helmet, ResourceManager.rpa_chest, ResourceManager.rpa_arm, ResourceManager.rpa_leg, + "Head", "Body,Fan,Glow", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorT51.java b/src/main/java/com/hbm/items/armor/ArmorT51.java index 26150198b..8130c458c 100644 --- a/src/main/java/com/hbm/items/armor/ArmorT51.java +++ b/src/main/java/com/hbm/items/armor/ArmorT51.java @@ -1,14 +1,19 @@ package com.hbm.items.armor; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorT51; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorT51 extends ArmorFSBPowered { +public class ArmorT51 extends ArmorFSBPowered implements IItemRendererProvider { public ArmorT51(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { super(material, slot, texture, maxPower, chargeRate, consumption, drain); @@ -30,4 +35,18 @@ public class ArmorT51 extends ArmorFSBPowered { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { setupRenderInv(); } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_t51, armorType, + ResourceManager.t51_helmet, ResourceManager.t51_chest, ResourceManager.t51_arm, ResourceManager.t51_leg, + "Helmet", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorTaurun.java b/src/main/java/com/hbm/items/armor/ArmorTaurun.java index d927935b4..d402a6c82 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTaurun.java +++ b/src/main/java/com/hbm/items/armor/ArmorTaurun.java @@ -1,14 +1,21 @@ package com.hbm.items.armor; +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorTaurun; +import com.hbm.render.tileentity.IItemRendererProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; -public class ArmorTaurun extends ArmorFSB { +public class ArmorTaurun extends ArmorFSB implements IItemRendererProvider { public ArmorTaurun(ArmorMaterial material, int slot, String texture) { super(material, slot, texture); @@ -31,4 +38,22 @@ public class ArmorTaurun extends ArmorFSB { return models[armorSlot]; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + if(armorType == 0) GL11.glTranslated(0, 1, 0); + if(armorType == 1) GL11.glTranslated(0, 1.5, 0); + setupRenderInv(); + } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_taurun, armorType, + ResourceManager.taurun_helmet, ResourceManager.taurun_chest, ResourceManager.taurun_arm, ResourceManager.taurun_leg, + "Helmet", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java index c716e18e9..0b1660f20 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -2,10 +2,15 @@ package com.hbm.items.armor; import java.util.List; +import org.lwjgl.opengl.GL11; + import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; import com.hbm.render.model.ModelArmorTrenchmaster; +import com.hbm.render.tileentity.IItemRendererProvider; import com.hbm.util.i18n.I18nUtil; import cpw.mods.fml.relauncher.Side; @@ -13,12 +18,14 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; -public class ArmorTrenchmaster extends ArmorFSB { +public class ArmorTrenchmaster extends ArmorFSB implements IItemRendererProvider { public ArmorTrenchmaster(ArmorMaterial material, int slot, String texture) { super(material, slot, texture); @@ -102,4 +109,22 @@ public class ArmorTrenchmaster extends ArmorFSB { } return false; } + + @Override public Item getItemForRenderer() { return this; } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + if(armorType == 0) GL11.glTranslated(0, 1, 0); + if(armorType == 1) GL11.glTranslated(0, 1.5, 0); + setupRenderInv(); + } + public void renderNonInv() { setupRenderNonInv(); } + public void renderCommon() { + renderStandard(ResourceManager.armor_trenchmaster, armorType, + ResourceManager.trenchmaster_helmet, ResourceManager.trenchmaster_chest, ResourceManager.trenchmaster_arm, ResourceManager.trenchmaster_leg, + "Helmet,Light", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot"); + }}; + } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index a1c226305..a876e05cb 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -449,6 +449,18 @@ public class ClientProxy extends ServerProxy { } } } + + // same crap but for items directly because why invent a new solution when this shit works just fine + Iterator itItems = Item.itemRegistry.iterator(); + while(itItems.hasNext()) { + Object o = itItems.next(); + if(o instanceof IItemRendererProvider) { + IItemRendererProvider prov = (IItemRendererProvider) o; + for(Item item : prov.getItemsForRenderer()) { + MinecraftForgeClient.registerItemRenderer(item, prov.getRenderer()); + } + } + } //universal JSON translated items double[] rtp = new double[] {0, 180, -90}; diff --git a/src/main/java/com/hbm/render/model/ModelArmorDigamma.java b/src/main/java/com/hbm/render/model/ModelArmorDigamma.java index d0abc19c5..663e4df1d 100644 --- a/src/main/java/com/hbm/render/model/ModelArmorDigamma.java +++ b/src/main/java/com/hbm/render/model/ModelArmorDigamma.java @@ -43,8 +43,8 @@ public class ModelArmorDigamma extends ModelArmorBase { if(this.type == 1) { bindTexture(ResourceManager.fau_chest); this.body.render(scaleFactor); - GL11.glEnable(GL11.GL_BLEND); - OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); bindTexture(ResourceManager.fau_cassette); this.cassette.render(scaleFactor); bindTexture(ResourceManager.fau_arm); diff --git a/src/main/resources/assets/hbm/textures/items/armor.png b/src/main/resources/assets/hbm/textures/items/armor.png new file mode 100644 index 000000000..e8b4521b3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/armor.png differ