/******************************************************************************* * AbyssalCraft * Copyright (c) 2012 - 2017 Shinoow. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt * * Contributors: * Shinoow - implementation ******************************************************************************/ package com.shinoow.abyssalcraft.common.items.armor; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager.DestFactor; import net.minecraft.client.renderer.GlStateManager.SourceFactor; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.VertexBuffer; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import com.shinoow.abyssalcraft.api.AbyssalCraftAPI; import com.shinoow.abyssalcraft.api.item.ACItems; import com.shinoow.abyssalcraft.lib.ACConfig; import com.shinoow.abyssalcraft.lib.ACTabs; //@InterfaceList(value = { @Interface(iface = "thaumcraft.api.items.IVisDiscountGear", modid = "Thaumcraft"), // @Interface(iface = "thaumcraft.api.items.IRevealer", modid = "Thaumcraft")}) public class ItemDepthsArmor extends ItemArmor /* implements IVisDiscountGear, IRevealer */ { public ItemDepthsArmor(ArmorMaterial par2EnumArmorMaterial, int par3, EntityEquipmentSlot par4, String name){ super(par2EnumArmorMaterial, par3, par4); setUnlocalizedName(name); setCreativeTab(ACTabs.tabCombat); } @Override public String getItemStackDisplayName(ItemStack par1ItemStack) { return TextFormatting.DARK_RED + super.getItemStackDisplayName(par1ItemStack); } @Override public String getArmorTexture(ItemStack stack, Entity entity, EntityEquipmentSlot slot, String layer) { if(stack.getItem() == ACItems.depths_helmet || stack.getItem() == ACItems.depths_chestplate || stack.getItem() == ACItems.depths_boots) return "abyssalcraft:textures/armor/depths_1.png"; if(stack.getItem() == ACItems.depths_leggings) return "abyssalcraft:textures/armor/depths_2.png"; else return null; } @Override public void onArmorTick(World world, EntityPlayer player, ItemStack itemstack) { if(world.isRemote) return; if (itemstack.getItem() == ACItems.depths_helmet) { player.addPotionEffect(new PotionEffect(MobEffects.WATER_BREATHING, 20, 0)); if(world.provider.isSurfaceWorld()) player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, 260, 0)); if(player.getActivePotionEffect(AbyssalCraftAPI.coralium_plague) !=null) player.removePotionEffect(AbyssalCraftAPI.coralium_plague); } if (itemstack.getItem() == ACItems.depths_chestplate) player.addPotionEffect(new PotionEffect(MobEffects.RESISTANCE, 20, 0)); if (itemstack.getItem() == ACItems.depths_leggings) player.addPotionEffect(new PotionEffect(MobEffects.JUMP_BOOST, 20, 1)); if (itemstack.getItem() == ACItems.depths_boots) player.addPotionEffect(new PotionEffect(MobEffects.SPEED, 20, 1)); } @Override @SideOnly(Side.CLIENT) public void renderHelmetOverlay(ItemStack stack, EntityPlayer player, ScaledResolution resolution, float partialTicks){ final ResourceLocation coraliumBlur = new ResourceLocation("abyssalcraft:textures/misc/coraliumblur.png"); if(Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && stack != null && stack.getItem() == ACItems.depths_helmet) { GlStateManager.disableDepth(); GlStateManager.depthMask(false); GlStateManager.enableBlend(); GlStateManager.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA); GlStateManager.color(1.0F, 1.0F, 1.0F, (float)ACConfig.depthsHelmetOverlayOpacity); Minecraft.getMinecraft().renderEngine.bindTexture(coraliumBlur); Tessellator t = Tessellator.getInstance(); VertexBuffer wr = t.getBuffer(); wr.begin(7, DefaultVertexFormats.POSITION_TEX); wr.pos(0.0D, resolution.getScaledHeight(), 90.0D).tex(0.0D, 1.0D).endVertex();; wr.pos(resolution.getScaledWidth(), resolution.getScaledHeight(), 90.0D).tex(1.0D, 1.0D).endVertex();; wr.pos(resolution.getScaledWidth(), 0.0D, 90.0D).tex(1.0D, 0.0D).endVertex();; wr.pos(0.0D, 0.0D, 90.0D).tex(0.0D, 0.0D).endVertex();; t.draw(); GlStateManager.depthMask(true); GlStateManager.enableDepth(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); } } // @Override // @Method(modid = "Thaumcraft") // public int getVisDiscount(ItemStack stack, EntityPlayer player, // Aspect aspect) { // return stack.getItem() == ACItems.depths_helmet ? 5 : stack.getItem() == ACItems.depths_chestplate ? 2 : // stack.getItem() == ACItems.depths_leggings ? 2 : stack.getItem() == ACItems.depths_boots ? 1 : 0; // } // @SuppressWarnings({ "unchecked", "rawtypes" }) // @Override // public void addInformation(ItemStack is, EntityPlayer player, List l, boolean B){ // if(Loader.isModLoaded("Thaumcraft")){ // if(is.getItem() == ACItems.depths_helmet) // l.add("\u00A75"+I18n.translateToLocal("tc.visdiscount")+": 5%"); // if(is.getItem() == ACItems.depths_chestplate) // l.add("\u00A75"+I18n.translateToLocal("tc.visdiscount")+": 2%"); // if(is.getItem() == ACItems.depths_leggings) // l.add("\u00A75"+I18n.translateToLocal("tc.visdiscount")+": 2%"); // if(is.getItem() == ACItems.depths_boots) // l.add("\u00A75"+I18n.translateToLocal("tc.visdiscount")+": 1%"); // } // } // @Override // @Method(modid = "Thaumcraft") // public boolean showNodes(ItemStack itemstack, EntityLivingBase player) { // // return itemstack.getItem() == ACItems.depths_helmet; // } }