| /** |
| * Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team |
| * http://www.mod-buildcraft.com |
| * |
| * BuildCraft is distributed under the terms of the Minecraft Mod Public |
| * License 1.0, or MMPL. Please check the contents of the license located in |
| * http://www.mod-buildcraft.com/MMPL-1.0.txt |
| */ |
| package buildcraft.api.fuels; |
| |
| import buildcraft.api.core.StackWrapper; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import net.minecraft.block.Block; |
| import net.minecraft.item.Item; |
| import net.minecraft.item.ItemStack; |
| import net.minecraftforge.fluids.Fluid; |
| import net.minecraftforge.fluids.FluidStack; |
| |
| public final class IronEngineCoolant { |
| |
| public static Map<String, Coolant> liquidCoolants = new HashMap<String, Coolant>(); |
| public static Map<StackWrapper, FluidStack> solidCoolants = new HashMap<StackWrapper, FluidStack>(); |
| |
| public static FluidStack getFluidCoolant(ItemStack stack) { |
| return solidCoolants.get(new StackWrapper(stack)); |
| } |
| |
| public static Coolant getCoolant(ItemStack stack) { |
| return getCoolant(getFluidCoolant(stack)); |
| } |
| |
| public static Coolant getCoolant(FluidStack fluidStack) { |
| return fluidStack != null && fluidStack.getFluid() != null ? liquidCoolants.get(fluidStack.getFluid().getName()) : null; |
| } |
| |
| private IronEngineCoolant() { |
| } |
| |
| public static interface Coolant { |
| |
| float getDegreesCoolingPerMB(float currentHeat); |
| } |
| |
| public static void addCoolant(final Fluid fluid, final float degreesCoolingPerMB) { |
| if (fluid != null) { |
| liquidCoolants.put(fluid.getName(), new Coolant() { |
| @Override |
| public float getDegreesCoolingPerMB(float currentHeat) { |
| return degreesCoolingPerMB; |
| } |
| }); |
| } |
| } |
| |
| /** |
| * Adds a solid coolant like Ice Blocks. The FluidStack must contain a registered |
| * Coolant Fluid or nothing will happen. You do not need to call this for |
| * Fluid Containers. |
| * |
| * @param stack |
| * @param coolant |
| */ |
| public static void addCoolant(final ItemStack stack, final FluidStack coolant) { |
| if (stack != null && stack.getItem() != null && coolant != null) { |
| solidCoolants.put(new StackWrapper(stack), coolant); |
| } |
| } |
| |
| /** |
| * Adds a solid coolant like Ice Blocks. The FluidStack must contain a registered |
| * Coolant Fluid or nothing will happen. You do not need to call this for |
| * Fluid Containers. |
| * |
| * @param stack |
| * @param coolant |
| */ |
| public static void addCoolant(final Item item, final int metadata, final FluidStack coolant) { |
| addCoolant(new ItemStack(item, 1, metadata), coolant); |
| } |
| |
| public static void addCoolant(final Block block, final int metadata, final FluidStack coolant) { |
| addCoolant(new ItemStack(block, 1, metadata), coolant); |
| } |
| |
| public static boolean isCoolant(Fluid fluid) { |
| return liquidCoolants.containsKey(fluid.getName()); |
| } |
| } |