package crazypants.enderio.fluid; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import buildcraft.api.fuels.BuildcraftFuelRegistry; import buildcraft.api.fuels.ICoolant; import buildcraft.api.fuels.IFuel; import crazypants.enderio.fluid.FluidFuelRegister.CoolantImpl; import crazypants.enderio.fluid.FluidFuelRegister.FuelImpl; public class BuildCraftFluidRegister implements IFluidRegister { public BuildCraftFluidRegister() throws Exception { //Make it go splat in object construction if an older version of //build craft is installed Class.forName("buildcraft.api.fuels.BuildcraftFuelRegistry"); } @Override public void addCoolant(Fluid fluid, float degreesCoolingPerMB) { if(BuildcraftFuelRegistry.coolant != null && BuildcraftFuelRegistry.coolant.getCoolant(fluid) == null) { BuildcraftFuelRegistry.coolant.addCoolant(fluid, degreesCoolingPerMB); } } @Override public IFluidCoolant getCoolant(Fluid fluid) { if(fluid != null && BuildcraftFuelRegistry.coolant != null) { ICoolant bcCool = BuildcraftFuelRegistry.coolant.getCoolant(fluid); if(bcCool != null) { return new CoolantBC(bcCool); } } return null; } @Override public IFluidCoolant getCoolant(FluidStack fluid) { if(fluid == null || fluid.getFluid() == null) { return null; } return getCoolant(fluid.getFluid()); } @Override public void addFuel(Fluid fluid, int powerPerCycleRF, int totalBurnTime) { if(BuildcraftFuelRegistry.fuel != null && BuildcraftFuelRegistry.fuel.getFuel(fluid) == null) { BuildcraftFuelRegistry.fuel.addFuel(fluid, powerPerCycleRF, totalBurnTime); } } @Override public IFluidFuel getFuel(Fluid fluid) { if(fluid == null) { return null; } if(BuildcraftFuelRegistry.fuel != null) { IFuel bcFuel = BuildcraftFuelRegistry.fuel.getFuel(fluid); if(bcFuel != null) { return new FuelBC(bcFuel); } } return null; } @Override public IFluidFuel getFuel(FluidStack fluid) { if(fluid == null || fluid.getFluid() == null) { return null; } return getFuel(fluid.getFluid()); } private static class FuelBC extends FuelImpl { FuelBC(IFuel fuel) { super(fuel.getFluid(), fuel.getPowerPerCycle(), fuel.getTotalBurningTime()); } } private static class CoolantBC extends CoolantImpl { CoolantBC(ICoolant coolant) { //NB: in the current BC impl the temperature to getDegreesCoolingPerMB is ignored super(coolant.getFluid(), coolant.getDegreesCoolingPerMB(100)); } } }