package com.jaquadro.minecraft.gardencore.item; import com.jaquadro.minecraft.gardencore.GardenCore; import com.jaquadro.minecraft.gardencore.core.ModCreativeTabs; 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.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraft.world.ColorizerGrass; import java.util.List; public class ItemUsedSoilKit extends Item { @SideOnly(Side.CLIENT) private IIcon icon; @SideOnly(Side.CLIENT) private IIcon iconOverlay; public ItemUsedSoilKit (String unlocalizedName) { setUnlocalizedName(unlocalizedName); setMaxStackSize(1); setHasSubtypes(true); setTextureName("soil_test_kit"); setCreativeTab(ModCreativeTabs.tabGardenCore); } @SideOnly(Side.CLIENT) @Override public IIcon getIconFromDamage (int damage) { return icon; } @SideOnly(Side.CLIENT) @Override public IIcon getIconFromDamageForRenderPass (int damage, int pass) { return pass == 0 ? iconOverlay : super.getIconFromDamageForRenderPass(damage, pass); } public static int PackTempHumidity (float temp, float humidity) { return (int)(humidity * 127) << 7 | (int)(temp * 127); } @SideOnly(Side.CLIENT) public int getColorFromDamage (int damage) { int temperature = damage & 127; int humidity = (damage >> 7) & 127; return ColorizerGrass.getGrassColor(temperature / 255f, humidity / 255f); } @SideOnly(Side.CLIENT) @Override public int getColorFromItemStack (ItemStack itemStack, int pass) { return pass > 0 ? 16777215 : getColorFromDamage(itemStack.getItemDamage()); } @SideOnly(Side.CLIENT) @Override public boolean requiresMultipleRenderPasses () { return true; } @SideOnly(Side.CLIENT) @Override public void addInformation (ItemStack itemStack, EntityPlayer player, List list, boolean par4) { float temperature = (itemStack.getItemDamage() & 127) / 127f; float humidity = ((itemStack.getItemDamage() >> 7) & 127) / 127f; EnumChatFormatting tempColor = EnumChatFormatting.BLUE; if (temperature >= .2) tempColor = EnumChatFormatting.DARK_GREEN; if (temperature >= 1) tempColor = EnumChatFormatting.DARK_RED; EnumChatFormatting humidColor = EnumChatFormatting.DARK_RED; if (humidity >= .3) humidColor = EnumChatFormatting.GOLD; if (humidity >= .6) humidColor = EnumChatFormatting.DARK_GREEN; String temperatureStr = StatCollector.translateToLocal("gardencore.soilkit.temperature") + ": " + tempColor + String.format("%.2f", temperature) ; String humidityStr = StatCollector.translateToLocal("gardencore.soilkit.rainfall") + ": " + humidColor + String.format("%.2f", humidity); list.add(temperatureStr); list.add(humidityStr); } @Override public void getSubItems (Item item, CreativeTabs creativeTabs, List list) { list.add(new ItemStack(item, 1, PackTempHumidity(0, 0))); list.add(new ItemStack(item, 1, PackTempHumidity(.5f, 0))); list.add(new ItemStack(item, 1, PackTempHumidity(1f, 0))); list.add(new ItemStack(item, 1, PackTempHumidity(.5f, .5f))); list.add(new ItemStack(item, 1, PackTempHumidity(1f, .5f))); list.add(new ItemStack(item, 1, PackTempHumidity(1f, 1f))); } // addInformation @Override public void registerIcons (IIconRegister iconRegister) { icon = iconRegister.registerIcon(GardenCore.MOD_ID + ":soil_test_kit_used"); iconOverlay = iconRegister.registerIcon(GardenCore.MOD_ID + ":soil_test_kit_overlay"); } }