package com.carpentersblocks.util.flowerpot; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.IShearable; import com.carpentersblocks.tileentity.TEBase; import com.carpentersblocks.util.BlockProperties; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class FlowerPotProperties { /** * Will return block from ItemStack. This is to be used for plants only. */ public static Block toBlock(ItemStack itemStack) { Block block = FlowerPotHandler.itemPlant.get(itemStack.getItem()); if (block != null) { return block; } else { return BlockProperties.toBlock(itemStack); } } @SideOnly(Side.CLIENT) /** * Returns plant color. */ public static int getPlantColor(TEBase TE) { ItemStack itemStack = TE.getAttribute(TE.ATTR_PLANT); Block block = toBlock(itemStack); TE.setMetadata(itemStack.getItemDamage()); int color1 = block.getBlockColor(); int color2 = block.colorMultiplier(TE.getWorldObj(), TE.xCoord, TE.yCoord, TE.zCoord); TE.restoreMetadata(); return color1 < color2 ? color1 : color2; } @SideOnly(Side.CLIENT) /** * Returns whether plant can be colored - leaves, grass, etc. */ public static boolean isPlantColorable(TEBase TE) { return FlowerPotProperties.getPlantColor(TE) != 16777215; } /** * Returns whether ItemStack contains soil. */ public static boolean isSoil(ItemStack itemStack) { if (itemStack.getItem() instanceof ItemBlock) { Block block = BlockProperties.toBlock(itemStack); if (!block.hasTileEntity(itemStack.getItemDamage())) { Material material = block.getMaterial(); return material.equals(Material.grass) || material.equals(Material.ground) || material.equals(Material.sand); } } return false; } /** * Returns whether ItemStack contains a plant. */ public static boolean isPlant(ItemStack itemStack) { Block block = BlockProperties.toBlock(itemStack); if (!block.equals(Blocks.air)) { if (!block.hasTileEntity(itemStack.getItemDamage())) { return block instanceof IPlantable || block instanceof IShearable; } else { return false; } } else { return FlowerPotHandler.itemPlant.containsKey(itemStack.getItem()); } } }