diff --git a/build.gradle b/build.gradle index 5dfb033b58..793fb30b0a 100644 --- a/build.gradle +++ b/build.gradle @@ -40,12 +40,16 @@ minecraft { //replace '@BUILD_NUMBER@', project.buildnumber } +configurations { + compile.extendsFrom exportedCompile +} dependencies { compile files('lib/cglib-nodep-2.2.3.jar') compile files('lib/NotEnoughItems-1.7.2-1.0.1-universal.jar') compile files('lib/CodeChickenCore-1.7.2-1.0.0-universal.jar') compile files('lib/CodeChickenLib-1.7.2-1.1.0.76-dev.jar') + exportedCompile 'com.mod-buildcraft:buildcraft:6.0.10:api' } // configure the source folders @@ -102,8 +106,13 @@ task sourceJar(type: Jar) { // because the normal output has been made to be obfuscated task deobfJar(type: Jar) { from sourceSets.main.output + from { configurations.exportedCompile.collect { it.isDirectory() ? it : zipTree(it) } } classifier = 'dev' } +jar { + from { configurations.exportedCompile.collect { it.isDirectory() ? it : zipTree(it) } } +} + // make sure all of these happen when we run build -build.dependsOn sourceJar, deobfJar \ No newline at end of file +build.dependsOn sourceJar, deobfJar diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/main/java/buildcraft/api/core/BuildCraftAPI.java b/src/main/java/buildcraft/api/core/BuildCraftAPI.java deleted file mode 100644 index 4dadfae9d1..0000000000 --- a/src/main/java/buildcraft/api/core/BuildCraftAPI.java +++ /dev/null @@ -1,22 +0,0 @@ -/** - * 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.core; - -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.block.Block; - -public class BuildCraftAPI { - - public static final int LAST_ORIGINAL_BLOCK = 122; - public static final int LAST_ORIGINAL_ITEM = 126; - - public static final Set softBlocks = new HashSet(); -} diff --git a/src/main/java/buildcraft/api/core/IAreaProvider.java b/src/main/java/buildcraft/api/core/IAreaProvider.java deleted file mode 100644 index 2338e0c71e..0000000000 --- a/src/main/java/buildcraft/api/core/IAreaProvider.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * 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.core; - -/** - * To be implemented by TileEntities able to provide a square area on the world, typically BuildCraft markers. - */ -public interface IAreaProvider { - - public int xMin(); - - public int yMin(); - - public int zMin(); - - public int xMax(); - - public int yMax(); - - public int zMax(); - - /** - * Remove from the world all objects used to define the area. - */ - public void removeFromWorld(); - -} diff --git a/src/main/java/buildcraft/api/core/IBox.java b/src/main/java/buildcraft/api/core/IBox.java deleted file mode 100644 index bfcafe6c9a..0000000000 --- a/src/main/java/buildcraft/api/core/IBox.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * 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.core; - -import net.minecraft.world.World; - -public interface IBox { - - public void expand(int amount); - - public void contract(int amount); - - public boolean contains(int x, int y, int z); - - public Position pMin(); - - public Position pMax(); - - public void createLasers(World world, LaserKind kind); - - public void deleteLasers(); - -} diff --git a/src/main/java/buildcraft/api/core/IIconProvider.java b/src/main/java/buildcraft/api/core/IIconProvider.java deleted file mode 100644 index 3df0b6d90d..0000000000 --- a/src/main/java/buildcraft/api/core/IIconProvider.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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.core; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.util.IIcon; - -public interface IIconProvider { - - /** - * @param iconIndex - * @return - */ - @SideOnly(Side.CLIENT) - public IIcon getIcon(int iconIndex); - - /** - * A call for the provider to register its Icons. This may be called multiple times but should only be executed once per provider - * @param iconRegister - */ - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister); - -} diff --git a/src/main/java/buildcraft/api/core/LaserKind.java b/src/main/java/buildcraft/api/core/LaserKind.java deleted file mode 100644 index 85f5ce8edd..0000000000 --- a/src/main/java/buildcraft/api/core/LaserKind.java +++ /dev/null @@ -1,13 +0,0 @@ -/** - * 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.core; - -public enum LaserKind { - Red, Blue, Stripes -} diff --git a/src/main/java/buildcraft/api/core/Position.java b/src/main/java/buildcraft/api/core/Position.java deleted file mode 100644 index 3ea1a7311a..0000000000 --- a/src/main/java/buildcraft/api/core/Position.java +++ /dev/null @@ -1,141 +0,0 @@ -/** - * 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.core; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; - -public class Position { - - public double x, y, z; - public ForgeDirection orientation; - - public Position(double ci, double cj, double ck) { - x = ci; - y = cj; - z = ck; - orientation = ForgeDirection.UNKNOWN; - } - - public Position(double ci, double cj, double ck, ForgeDirection corientation) { - x = ci; - y = cj; - z = ck; - orientation = corientation; - } - - public Position(Position p) { - x = p.x; - y = p.y; - z = p.z; - orientation = p.orientation; - } - - public Position(NBTTagCompound nbttagcompound) { - x = nbttagcompound.getDouble("i"); - y = nbttagcompound.getDouble("j"); - z = nbttagcompound.getDouble("k"); - - orientation = ForgeDirection.UNKNOWN; - } - - public Position(TileEntity tile) { - x = tile.xCoord; - y = tile.yCoord; - z = tile.zCoord; - } - - public void moveRight(double step) { - switch (orientation) { - case SOUTH: - x = x - step; - break; - case NORTH: - x = x + step; - break; - case EAST: - z = z + step; - break; - case WEST: - z = z - step; - break; - default: - } - } - - public void moveLeft(double step) { - moveRight(-step); - } - - public void moveForwards(double step) { - switch (orientation) { - case UP: - y = y + step; - break; - case DOWN: - y = y - step; - break; - case SOUTH: - z = z + step; - break; - case NORTH: - z = z - step; - break; - case EAST: - x = x + step; - break; - case WEST: - x = x - step; - break; - default: - } - } - - public void moveBackwards(double step) { - moveForwards(-step); - } - - public void moveUp(double step) { - switch (orientation) { - case SOUTH: - case NORTH: - case EAST: - case WEST: - y = y + step; - break; - default: - } - - } - - public void moveDown(double step) { - moveUp(-step); - } - - public void writeToNBT(NBTTagCompound nbttagcompound) { - nbttagcompound.setDouble("i", x); - nbttagcompound.setDouble("j", y); - nbttagcompound.setDouble("k", z); - } - - @Override - public String toString() { - return "{" + x + ", " + y + ", " + z + "}"; - } - - public Position min(Position p) { - return new Position(p.x > x ? x : p.x, p.y > y ? y : p.y, p.z > z ? z : p.z); - } - - public Position max(Position p) { - return new Position(p.x < x ? x : p.x, p.y < y ? y : p.y, p.z < z ? z : p.z); - } - -} diff --git a/src/main/java/buildcraft/api/core/SafeTimeTracker.java b/src/main/java/buildcraft/api/core/SafeTimeTracker.java deleted file mode 100644 index 46ca280966..0000000000 --- a/src/main/java/buildcraft/api/core/SafeTimeTracker.java +++ /dev/null @@ -1,84 +0,0 @@ -/** - * 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.core; - -import net.minecraft.world.World; - -public class SafeTimeTracker { - - private long lastMark = Long.MIN_VALUE; - private long duration = -1; - private long randomRange = 0; - private long lastRandomDelay = 0; - private long internalDelay = 1; - - /** - * @deprecated should use constructors with parameters instead - */ - public SafeTimeTracker () { - - } - - public SafeTimeTracker (long delay) { - internalDelay = delay; - } - - /** - * In many situations, it is a bad idea to have all objects of the same - * kind to be waiting for the exact same amount of time, as that can lead - * to some situation where they're all synchronized and got to work all - * at the same time. When created with a random range, the mark that is set - * when reaching the expect delay will be added with a random number - * between [0, range[, meaning that the event will take between 0 and range - * more tick to run. - */ - public SafeTimeTracker (long delay, long random) { - internalDelay = delay; - randomRange = random; - } - - public boolean markTimeIfDelay(World world) { - return markTimeIfDelay(world, internalDelay); - } - - /** - * Return true if a given delay has passed since last time marked was called - * successfully. - * - * @deprecated should use the constructor with a delay instead, and call - * this function without a parameter - */ - public boolean markTimeIfDelay(World world, long delay) { - if (world == null) - return false; - - long currentTime = world.getTotalWorldTime(); - - if (currentTime < lastMark) { - lastMark = currentTime; - return false; - } else if (lastMark + delay + lastRandomDelay <= currentTime) { - duration = currentTime - lastMark; - lastMark = currentTime; - lastRandomDelay = (int) (Math.random() * randomRange); - - return true; - } else { - return false; - } - } - - public long durationOfLastDelay() { - return duration > 0 ? duration : 0; - } - - public void markTime(World world) { - lastMark = world.getTotalWorldTime(); - } -} diff --git a/src/main/java/buildcraft/api/core/StackWrapper.java b/src/main/java/buildcraft/api/core/StackWrapper.java deleted file mode 100644 index a155c1cdc9..0000000000 --- a/src/main/java/buildcraft/api/core/StackWrapper.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * 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.core; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public class StackWrapper { - - public final ItemStack stack; - - public StackWrapper(ItemStack stack) { - this.stack = stack; - } - - @Override - public int hashCode() { - int hash = 5; - - hash = 67 * hash + stack.getItem().hashCode(); - - hash = 67 * hash + stack.getItemDamage(); - - if (stack.stackTagCompound != null) { - hash = 67 * hash + stack.stackTagCompound.hashCode(); - } - - return hash; - } - - @Override - public boolean equals(Object obj) { - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final StackWrapper other = (StackWrapper) obj; - if (stack.getItem() != other.stack.getItem()) - return false; - if (stack.getHasSubtypes() && stack.getItemDamage() != other.stack.getItemDamage()) - return false; - if (stack.stackTagCompound != null && !stack.stackTagCompound.equals(other.stack.stackTagCompound)) - return false; - return true; - } -} diff --git a/src/main/java/buildcraft/api/core/package-info.java b/src/main/java/buildcraft/api/core/package-info.java deleted file mode 100644 index bb494d5386..0000000000 --- a/src/main/java/buildcraft/api/core/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="BuildCraft|Core",provides="BuildCraftAPI|core") -package buildcraft.api.core; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/buildcraft/api/fuels/IronEngineCoolant.java b/src/main/java/buildcraft/api/fuels/IronEngineCoolant.java deleted file mode 100644 index 3e1de95421..0000000000 --- a/src/main/java/buildcraft/api/fuels/IronEngineCoolant.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * 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 liquidCoolants = new HashMap(); - public static Map solidCoolants = new HashMap(); - - 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()); - } -} diff --git a/src/main/java/buildcraft/api/fuels/IronEngineFuel.java b/src/main/java/buildcraft/api/fuels/IronEngineFuel.java deleted file mode 100644 index 20b14eb504..0000000000 --- a/src/main/java/buildcraft/api/fuels/IronEngineFuel.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * 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 java.util.HashMap; -import java.util.Map; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; - -public class IronEngineFuel { - - public static Map fuels = new HashMap(); - - public static Fuel getFuelForFluid(Fluid liquid) { - return liquid == null ? null : fuels.get(liquid.getName()); - } - - private IronEngineFuel() { - } - - public static class Fuel { - - public final Fluid liquid; - public final float powerPerCycle; - public final int totalBurningTime; - - private Fuel(String fluidName, float powerPerCycle, int totalBurningTime) { - this(FluidRegistry.getFluid(fluidName), powerPerCycle, totalBurningTime); - } - - private Fuel(Fluid liquid, float powerPerCycle, int totalBurningTime) { - this.liquid = liquid; - this.powerPerCycle = powerPerCycle; - this.totalBurningTime = totalBurningTime; - } - } - - public static void addFuel(Fluid fluid, float powerPerCycle, int totalBurningTime) { - fuels.put(fluid.getName(), new Fuel(fluid, powerPerCycle, totalBurningTime)); - } - - public static void addFuel(String fluidName, float powerPerCycle, int totalBurningTime) { - fuels.put(fluidName, new Fuel(fluidName, powerPerCycle, totalBurningTime)); - } -} diff --git a/src/main/java/buildcraft/api/fuels/package-info.java b/src/main/java/buildcraft/api/fuels/package-info.java deleted file mode 100644 index 48ad9319d8..0000000000 --- a/src/main/java/buildcraft/api/fuels/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="BuildCraftAPI|core",provides="BuildCraftAPI|fuels") -package buildcraft.api.fuels; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/buildcraft/api/gates/ActionManager.java b/src/main/java/buildcraft/api/gates/ActionManager.java deleted file mode 100644 index 51d0267f3a..0000000000 --- a/src/main/java/buildcraft/api/gates/ActionManager.java +++ /dev/null @@ -1,100 +0,0 @@ -/** - * 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.gates; - -import buildcraft.api.transport.IPipeTile; -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; - -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -public class ActionManager { - - public static Map triggers = new HashMap(); - public static Map actions = new HashMap(); - private static List triggerProviders = new LinkedList(); - private static List actionProviders = new LinkedList(); - - public static void registerTriggerProvider(ITriggerProvider provider) { - if (provider != null && !triggerProviders.contains(provider)) { - triggerProviders.add(provider); - } - } - - public static void registerTrigger(ITrigger trigger) { - triggers.put(trigger.getUniqueTag(), trigger); - } - - public static void registerAction(IAction action) { - actions.put(action.getUniqueTag(), action); - } - - public static List getNeighborTriggers(Block block, TileEntity entity) { - List triggers = new LinkedList(); - - for (ITriggerProvider provider : triggerProviders) { - List toAdd = provider.getNeighborTriggers(block, entity); - - if (toAdd != null) { - for (ITrigger t : toAdd) { - if (!triggers.contains(t)) { - triggers.add(t); - } - } - } - } - - return triggers; - } - - public static void registerActionProvider(IActionProvider provider) { - if (provider != null && !actionProviders.contains(provider)) { - actionProviders.add(provider); - } - } - - public static List getNeighborActions(Block block, TileEntity entity) { - List actions = new LinkedList(); - - for (IActionProvider provider : actionProviders) { - List toAdd = provider.getNeighborActions(block, entity); - - if (toAdd != null) { - for (IAction t : toAdd) { - if (!actions.contains(t)) { - actions.add(t); - } - } - } - } - - return actions; - } - - public static List getPipeTriggers(IPipeTile pipe) { - List triggers = new LinkedList(); - - for (ITriggerProvider provider : triggerProviders) { - List toAdd = provider.getPipeTriggers(pipe); - - if (toAdd != null) { - for (ITrigger t : toAdd) { - if (!triggers.contains(t)) { - triggers.add(t); - } - } - } - } - - return triggers; - } -} diff --git a/src/main/java/buildcraft/api/gates/GateExpansionController.java b/src/main/java/buildcraft/api/gates/GateExpansionController.java deleted file mode 100644 index 20f387137b..0000000000 --- a/src/main/java/buildcraft/api/gates/GateExpansionController.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * 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.gates; - -import java.util.List; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public abstract class GateExpansionController { - - public final IGateExpansion type; - public final TileEntity pipeTile; - - public GateExpansionController(IGateExpansion type, TileEntity pipeTile) { - this.pipeTile = pipeTile; - this.type = type; - } - - public IGateExpansion getType() { - return type; - } - - public boolean isActive() { - return false; - } - - public void tick() { - } - - public void startResolution() { - } - - public boolean resolveAction(IAction action, int count) { - return false; - } - - public boolean isTriggerActive(ITrigger trigger, ITriggerParameter parameter) { - return false; - } - - public void addTriggers(List list) { - } - - public void addActions(List list) { - } - - public void writeToNBT(NBTTagCompound nbt) { - } - - public void readFromNBT(NBTTagCompound nbt) { - } -} diff --git a/src/main/java/buildcraft/api/gates/GateExpansions.java b/src/main/java/buildcraft/api/gates/GateExpansions.java deleted file mode 100644 index b873244212..0000000000 --- a/src/main/java/buildcraft/api/gates/GateExpansions.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * 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.gates; - -import com.google.common.collect.BiMap; -import com.google.common.collect.HashBiMap; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -public final class GateExpansions { - - private static final Map expansions = new HashMap(); - private static final BiMap serverIDMap = HashBiMap.create(); - private static final BiMap clientIDMap = HashBiMap.create(); - private static byte nextID = 0; - - private GateExpansions() { - } - - public static void registerExpansion(IGateExpansion expansion) { - registerExpansion(expansion.getUniqueIdentifier(), expansion); - } - - public static void registerExpansion(String identifier, IGateExpansion expansion) { - expansions.put(identifier, expansion); - serverIDMap.put(nextID++, identifier); - } - - public static IGateExpansion getExpansion(String identifier) { - return expansions.get(identifier); - } - - public static IGateExpansion getExpansionClient(int id) { - if (id < 0 || id >= 128) - return null; - return expansions.get(clientIDMap.get((byte) id)); - } - - public static byte getServerExpansionID(String identifier) { - return serverIDMap.inverse().get(identifier); - } - - public static Set getExpansions() { - Set set = new HashSet(); - set.addAll(expansions.values()); - return set; - } - - public static BiMap getServerMap() { - return serverIDMap; - } - - public static void setClientMap(BiMap map) { - clientIDMap.clear(); - clientIDMap.putAll(map); - } -} diff --git a/src/main/java/buildcraft/api/gates/IAction.java b/src/main/java/buildcraft/api/gates/IAction.java deleted file mode 100644 index 38f134eb63..0000000000 --- a/src/main/java/buildcraft/api/gates/IAction.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * 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.gates; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.util.IIcon; - -public interface IAction { - - String getUniqueTag(); - - @SideOnly(Side.CLIENT) - IIcon getIcon(); - - @SideOnly(Side.CLIENT) - void registerIcons(IIconRegister iconRegister); - - boolean hasParameter(); - - String getDescription(); -} diff --git a/src/main/java/buildcraft/api/gates/IActionProvider.java b/src/main/java/buildcraft/api/gates/IActionProvider.java deleted file mode 100644 index 6712ca6f6e..0000000000 --- a/src/main/java/buildcraft/api/gates/IActionProvider.java +++ /dev/null @@ -1,22 +0,0 @@ -/** - * 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.gates; - -import java.util.LinkedList; -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; - -public interface IActionProvider { - - /** - * Returns the list of actions available to a gate next to the given block. - */ - public abstract LinkedList getNeighborActions(Block block, TileEntity tile); - -} diff --git a/src/main/java/buildcraft/api/gates/IActionReceptor.java b/src/main/java/buildcraft/api/gates/IActionReceptor.java deleted file mode 100644 index 8691629824..0000000000 --- a/src/main/java/buildcraft/api/gates/IActionReceptor.java +++ /dev/null @@ -1,15 +0,0 @@ -/** - * 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.gates; - -public interface IActionReceptor { - - public void actionActivated(IAction action); - -} diff --git a/src/main/java/buildcraft/api/gates/IGateExpansion.java b/src/main/java/buildcraft/api/gates/IGateExpansion.java deleted file mode 100644 index 361f0a4dd3..0000000000 --- a/src/main/java/buildcraft/api/gates/IGateExpansion.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * 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.gates; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; - -public interface IGateExpansion { - - String getUniqueIdentifier(); - - String getDisplayName(); - - GateExpansionController makeController(TileEntity pipeTile); - - void registerBlockOverlay(IIconRegister iconRegister); - - void registerItemOverlay(IIconRegister iconRegister); - - IIcon getOverlayBlock(); - - IIcon getOverlayItem(); -} diff --git a/src/main/java/buildcraft/api/gates/IOverrideDefaultTriggers.java b/src/main/java/buildcraft/api/gates/IOverrideDefaultTriggers.java deleted file mode 100644 index a105f52d12..0000000000 --- a/src/main/java/buildcraft/api/gates/IOverrideDefaultTriggers.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * 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.gates; - -import java.util.LinkedList; - -/** - * This interface has to be implemented by a TileEntity or a Pipe that wants to provide triggers different from the ones installed by default with BuildCraft. - */ -public interface IOverrideDefaultTriggers { - - LinkedList getTriggers(); - -} diff --git a/src/main/java/buildcraft/api/gates/ITileTrigger.java b/src/main/java/buildcraft/api/gates/ITileTrigger.java deleted file mode 100644 index 93c84e0199..0000000000 --- a/src/main/java/buildcraft/api/gates/ITileTrigger.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * 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.gates; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; - -public interface ITileTrigger extends ITrigger { - - /** - * Return true if the tile given in parameter activates the trigger, given - * the parameters. - */ - boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter); -} diff --git a/src/main/java/buildcraft/api/gates/ITrigger.java b/src/main/java/buildcraft/api/gates/ITrigger.java deleted file mode 100644 index affc418b44..0000000000 --- a/src/main/java/buildcraft/api/gates/ITrigger.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * 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.gates; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.util.IIcon; - -public interface ITrigger { - - /** - * Every trigger needs a unique tag, it should be in the format of - * ":". - * - * @return the unique id - */ - String getUniqueTag(); - - @SideOnly(Side.CLIENT) - IIcon getIcon(); - - @SideOnly(Side.CLIENT) - void registerIcons(IIconRegister iconRegister); - - /** - * Return true if this trigger can accept parameters - */ - boolean hasParameter(); - - /** - * Return true if this trigger requires a parameter - */ - boolean requiresParameter(); - - /** - * Return the trigger description in the UI - */ - String getDescription(); - - /** - * Create parameters for the trigger. As for now, there is only one kind of - * trigger parameter available so this subprogram is final. - */ - ITriggerParameter createParameter(); -} diff --git a/src/main/java/buildcraft/api/gates/ITriggerParameter.java b/src/main/java/buildcraft/api/gates/ITriggerParameter.java deleted file mode 100644 index 8570cf0fb9..0000000000 --- a/src/main/java/buildcraft/api/gates/ITriggerParameter.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * 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.gates; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; - -public interface ITriggerParameter { - - public abstract ItemStack getItemStack(); - - public abstract void set(ItemStack stack); - - public abstract void writeToNBT(NBTTagCompound compound); - - public abstract void readFromNBT(NBTTagCompound compound); - - @Deprecated - public abstract ItemStack getItem(); - -} diff --git a/src/main/java/buildcraft/api/gates/ITriggerProvider.java b/src/main/java/buildcraft/api/gates/ITriggerProvider.java deleted file mode 100644 index 8758032785..0000000000 --- a/src/main/java/buildcraft/api/gates/ITriggerProvider.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * 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.gates; - -import buildcraft.api.transport.IPipeTile; -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; - -import java.util.LinkedList; - -public interface ITriggerProvider { - - /** - * Returns the list of triggers that are available from the pipe holding the gate. - */ - public abstract LinkedList getPipeTriggers(IPipeTile pipe); - - /** - * Returns the list of triggers available to a gate next to the given block. - */ - public abstract LinkedList getNeighborTriggers(Block block, TileEntity tile); - -} diff --git a/src/main/java/buildcraft/api/gates/TriggerParameter.java b/src/main/java/buildcraft/api/gates/TriggerParameter.java deleted file mode 100644 index 46336c1570..0000000000 --- a/src/main/java/buildcraft/api/gates/TriggerParameter.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * 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.gates; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; - -public class TriggerParameter implements ITriggerParameter { - - protected ItemStack stack; - - /* - * (non-Javadoc) - * - * @see net.minecraft.src.buildcraft.api.gates.ITriggerParameter#getItemStack() - */ - @Override - public ItemStack getItemStack() { - return stack; - } - - /* - * (non-Javadoc) - * - * @see net.minecraft.src.buildcraft.api.gates.ITriggerParameter#set(net.minecraft.src.ItemStack) - */ - @Override - public void set(ItemStack stack) { - if (stack != null) { - this.stack = stack.copy(); - this.stack.stackSize = 1; - } - } - - /* - * (non-Javadoc) - * - * @see net.minecraft.src.buildcraft.api.gates.ITriggerParameter#writeToNBT(net.minecraft.src.NBTTagCompound) - */ - @Override - public void writeToNBT(NBTTagCompound compound) { - if (stack != null) { - NBTTagCompound tagCompound = new NBTTagCompound(); - stack.writeToNBT(tagCompound); - compound.setTag("stack", tagCompound); - } - } - - /* - * (non-Javadoc) - * - * @see net.minecraft.src.buildcraft.api.gates.ITriggerParameter#readFromNBT(net.minecraft.src.NBTTagCompound) - */ - @Override - public void readFromNBT(NBTTagCompound compound) { - // Legacy code to prevent existing gates from losing their contents - int itemID = compound.getInteger("itemID"); - if (itemID != 0) { - stack = new ItemStack((Item) Item.itemRegistry.getObject(itemID), 1, compound.getInteger("itemDMG")); - return; - } - - stack = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("stack")); - } - - @Override - @Deprecated - public ItemStack getItem() { - return stack; - } - -} diff --git a/src/main/java/buildcraft/api/gates/package-info.java b/src/main/java/buildcraft/api/gates/package-info.java deleted file mode 100644 index 01c1a66ad3..0000000000 --- a/src/main/java/buildcraft/api/gates/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="2.0",owner="BuildCraftAPI|core",provides="BuildCraftAPI|gates") -package buildcraft.api.gates; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/buildcraft/api/power/IPowerEmitter.java b/src/main/java/buildcraft/api/power/IPowerEmitter.java deleted file mode 100644 index 4bb48497b9..0000000000 --- a/src/main/java/buildcraft/api/power/IPowerEmitter.java +++ /dev/null @@ -1,22 +0,0 @@ -/** - * 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.power; - -import net.minecraftforge.common.util.ForgeDirection; - -/** - * Essentially only used for Wooden Power Pipe connection rules. - * - * This Tile Entity interface allows you to indicate that a block can emit power - * from a specific side. - */ -public interface IPowerEmitter { - - public boolean canEmitPowerFrom(ForgeDirection side); -} diff --git a/src/main/java/buildcraft/api/power/IPowerReceptor.java b/src/main/java/buildcraft/api/power/IPowerReceptor.java deleted file mode 100644 index 79586e9e1d..0000000000 --- a/src/main/java/buildcraft/api/power/IPowerReceptor.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * 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.power; - -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -/** - * This interface should be implemented by any Tile Entity that wishes to be - * able to receive power. - */ -public interface IPowerReceptor { - - /** - * Get the PowerReceiver for this side of the block. You can return the same - * PowerReceiver for all sides or one for each side. - * - * You should NOT return null to this method unless you mean to NEVER - * receive power from that side. Returning null, after previous returning a - * PowerReceiver, will most likely cause pipe connections to derp out and - * engines to eventually explode. - * - * @param side - * @return - */ - public PowerHandler.PowerReceiver getPowerReceiver(ForgeDirection side); - - /** - * Call back from the PowerHandler that is called when the stored power - * exceeds the activation power. - * - * It can be triggered by update() calls or power modification calls. - * - * @param workProvider - */ - public void doWork(PowerHandler workProvider); - - public World getWorld(); -} diff --git a/src/main/java/buildcraft/api/power/PowerHandler.java b/src/main/java/buildcraft/api/power/PowerHandler.java deleted file mode 100644 index 8979086ea1..0000000000 --- a/src/main/java/buildcraft/api/power/PowerHandler.java +++ /dev/null @@ -1,469 +0,0 @@ -/** - * 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.power; - -import buildcraft.api.core.SafeTimeTracker; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraftforge.common.util.ForgeDirection; - -/** - * The PowerHandler is similar to FluidTank in that it holds your power and - * allows standardized interaction between machines. - * - * To receive power to your machine you needs create an instance of PowerHandler - * and implement IPowerReceptor on the TileEntity. - * - * If you plan emit power, you need only implement IPowerEmitter. You do not - * need a PowerHandler. Engines have a PowerHandler because they can also - * receive power from other Engines. - * - * See TileRefinery for a simple example of a power using machine. - * - * @see IPowerReceptor - * @see IPowerEmitter - */ -public final class PowerHandler { - - public static enum Type { - - ENGINE, GATE, MACHINE, PIPE, STORAGE; - - public boolean canReceiveFromPipes() { - switch (this) { - case MACHINE: - case STORAGE: - return true; - default: - return false; - } - } - - public boolean eatsEngineExcess() { - switch (this) { - case MACHINE: - case STORAGE: - return true; - default: - return false; - } - } - } - - /** - * Extend this class to create custom Perdition algorithms (its not final). - * - * NOTE: It is not possible to create a Zero perdition algorithm. - */ - public static class PerditionCalculator { - - public static final float DEFAULT_POWERLOSS = 1F; - public static final float MIN_POWERLOSS = 0.01F; - private final double powerLoss; - - public PerditionCalculator() { - powerLoss = DEFAULT_POWERLOSS; - } - - /** - * Simple constructor for simple Perdition per tick. - * - * @param powerLoss power loss per tick - */ - public PerditionCalculator(double powerLoss) { - if (powerLoss < MIN_POWERLOSS) { - powerLoss = MIN_POWERLOSS; - } - this.powerLoss = powerLoss; - } - - /** - * Apply the perdition algorithm to the current stored energy. This - * function can only be called once per tick, but it might not be called - * every tick. It is triggered by any manipulation of the stored energy. - * - * @param powerHandler the PowerHandler requesting the perdition update - * @param current the current stored energy - * @param ticksPassed ticks since the last time this function was called - * @return - */ - public double applyPerdition(PowerHandler powerHandler, double current, long ticksPassed) { - current -= powerLoss * ticksPassed; - if (current < 0) { - current = 0; - } - return current; - } - - /** - * Taxes a flat rate on all incoming power. - * - * Defaults to 0% tax rate. - * - * @return percent of input to tax - */ - public double getTaxPercent() { - return 0; - } - } - public static final PerditionCalculator DEFAULT_PERDITION = new PerditionCalculator(); - public static final double ROLLING_AVERAGE_WEIGHT = 100.0; - public static final double ROLLING_AVERAGE_NUMERATOR = ROLLING_AVERAGE_WEIGHT - 1; - public static final double ROLLING_AVERAGE_DENOMINATOR = 1.0 / ROLLING_AVERAGE_WEIGHT; - private double minEnergyReceived; - private double maxEnergyReceived; - private double maxEnergyStored; - private double activationEnergy; - private double energyStored = 0; - private final SafeTimeTracker doWorkTracker = new SafeTimeTracker(); - private final SafeTimeTracker sourcesTracker = new SafeTimeTracker(); - private final SafeTimeTracker perditionTracker = new SafeTimeTracker(); - public final int[] powerSources = new int[6]; - public final IPowerReceptor receptor; - private PerditionCalculator perdition; - private final PowerReceiver receiver; - private final Type type; - // Tracking - private double averageLostPower = 0; - private double averageReceivedPower = 0; - private double averageUsedPower = 0; - - public PowerHandler(IPowerReceptor receptor, Type type) { - this.receptor = receptor; - this.type = type; - this.receiver = new PowerReceiver(); - this.perdition = DEFAULT_PERDITION; - } - - public PowerReceiver getPowerReceiver() { - return receiver; - } - - public double getMinEnergyReceived() { - return minEnergyReceived; - } - - public double getMaxEnergyReceived() { - return maxEnergyReceived; - } - - public double getMaxEnergyStored() { - return maxEnergyStored; - } - - public double getActivationEnergy() { - return activationEnergy; - } - - public double getEnergyStored() { - return energyStored; - } - - /** - * Setup your PowerHandler's settings. - * - * @param minEnergyReceived This is the minimum about of power that will be - * accepted by the PowerHandler. This should generally be greater than the - * activationEnergy if you plan to use the doWork() callback. Anything - * greater than 1 will prevent Redstone Engines from powering this Provider. - * @param maxEnergyReceived The maximum amount of power accepted by the - * PowerHandler. This should generally be less than 500. Too low and larger - * engines will overheat while trying to power the machine. Too high, and - * the engines will never warm up. Greater values also place greater strain - * on the power net. - * @param activationEnergy If the stored energy is greater than this value, - * the doWork() callback is called (once per tick). - * @param maxStoredEnergy The maximum amount of power this PowerHandler can - * store. Values tend to range between 100 and 5000. With 1000 and 1500 - * being common. - */ - public void configure(double minEnergyReceived, double maxEnergyReceived, double activationEnergy, double maxStoredEnergy) { - if (minEnergyReceived > maxEnergyReceived) { - maxEnergyReceived = minEnergyReceived; - } - this.minEnergyReceived = minEnergyReceived; - this.maxEnergyReceived = maxEnergyReceived; - this.maxEnergyStored = maxStoredEnergy; - this.activationEnergy = activationEnergy; - } - - /** - * Allows you define perdition in terms of loss/ticks. - * - * This function is mostly for legacy implementations. See - * PerditionCalculator for more complex perdition formulas. - * - * @param powerLoss - * @param powerLossRegularity - * @see PerditionCalculator - */ - public void configurePowerPerdition(int powerLoss, int powerLossRegularity) { - if (powerLoss == 0 || powerLossRegularity == 0) { - perdition = new PerditionCalculator(0); - return; - } - perdition = new PerditionCalculator((float) powerLoss / (float) powerLossRegularity); - } - - /** - * Allows you to define a new PerditionCalculator class to handler perdition - * calculations. - * - * For example if you want exponentially increasing loss based on amount - * stored. - * - * @param perdition - */ - public void setPerdition(PerditionCalculator perdition) { - if (perdition == null) - perdition = DEFAULT_PERDITION; - this.perdition = perdition; - } - - public PerditionCalculator getPerdition() { - if (perdition == null) - return DEFAULT_PERDITION; - return perdition; - } - - /** - * Ticks the power handler. You should call this if you can, but its not - * required. - * - * If you don't call it, the possibility exists for some weirdness with the - * perdition algorithm and work callback as its possible they will not be - * called on every tick they otherwise would be. You should be able to - * design around this though if you are aware of the limitations. - */ - public void update() { - applyPerdition(); - applyWork(); - validateEnergy(); - } - - private void applyPerdition() { - if (perditionTracker.markTimeIfDelay(receptor.getWorld(), 1) && energyStored > 0) { - double prev = energyStored; - double newEnergy = getPerdition().applyPerdition(this, energyStored, perditionTracker.durationOfLastDelay()); - if (newEnergy == 0 || newEnergy < energyStored) - energyStored = newEnergy; - else - energyStored = DEFAULT_PERDITION.applyPerdition(this, energyStored, perditionTracker.durationOfLastDelay()); - validateEnergy(); - - averageLostPower = (averageLostPower * ROLLING_AVERAGE_NUMERATOR + (prev - energyStored)) * ROLLING_AVERAGE_DENOMINATOR; - } - } - - private void applyWork() { - if (energyStored >= activationEnergy) { - if (doWorkTracker.markTimeIfDelay(receptor.getWorld(), 1)) { - receptor.doWork(this); - } - } - } - - private void updateSources(ForgeDirection source) { - if (sourcesTracker.markTimeIfDelay(receptor.getWorld(), 1)) { - for (int i = 0; i < 6; ++i) { - powerSources[i] -= sourcesTracker.durationOfLastDelay(); - if (powerSources[i] < 0) { - powerSources[i] = 0; - } - } - } - - if (source != null) - powerSources[source.ordinal()] = 10; - } - - /** - * Extract energy from the PowerHandler. You must call this even if doWork() - * triggers. - * - * @param min - * @param max - * @param doUse - * @return amount used - */ - public double useEnergy(double min, double max, boolean doUse) { - applyPerdition(); - - double result = 0; - - if (energyStored >= min) { - if (energyStored <= max) { - result = energyStored; - if (doUse) { - energyStored = 0; - } - } else { - result = max; - if (doUse) { - energyStored -= max; - } - } - } - - validateEnergy(); - - if (doUse) - averageUsedPower = (averageUsedPower * ROLLING_AVERAGE_NUMERATOR + result) * ROLLING_AVERAGE_DENOMINATOR; - - return result; - } - - public void readFromNBT(NBTTagCompound data) { - readFromNBT(data, "powerProvider"); - } - - public void readFromNBT(NBTTagCompound data, String tag) { - NBTTagCompound nbt = data.getCompoundTag(tag); - energyStored = nbt.getDouble("energyStored"); - } - - public void writeToNBT(NBTTagCompound data) { - writeToNBT(data, "powerProvider"); - } - - public void writeToNBT(NBTTagCompound data, String tag) { - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setDouble("energyStored", energyStored); - data.setTag(tag, nbt); - } - - public final class PowerReceiver { - - private PowerReceiver() { - } - - public double getMinEnergyReceived() { - return minEnergyReceived; - } - - public double getMaxEnergyReceived() { - return maxEnergyReceived; - } - - public double getMaxEnergyStored() { - return maxEnergyStored; - } - - public double getActivationEnergy() { - return activationEnergy; - } - - public double getEnergyStored() { - return energyStored; - } - - public double getAveragePowerReceived() { - return averageReceivedPower; - } - - public double getAveragePowerUsed() { - return averageUsedPower; - } - - public double getAveragePowerLost() { - return averageLostPower; - } - - public Type getType() { - return type; - } - - public void update() { - PowerHandler.this.update(); - } - - /** - * The amount of power that this PowerHandler currently needs. - * - * @return - */ - public double powerRequest() { - update(); - return Math.min(maxEnergyReceived, maxEnergyStored - energyStored); - } - - /** - * Add power to the PowerReceiver from an external source. - * - * IPowerEmitters are responsible for calling this themselves. - * - * @param quantity - * @param from - * @return the amount of power used - */ - public double receiveEnergy(Type source, final double quantity, ForgeDirection from) { - double used = quantity; - if (source == Type.ENGINE) { - if (used < minEnergyReceived) { - return 0; - } else if (used > maxEnergyReceived) { - used = maxEnergyReceived; - } - } - - updateSources(from); - - used -= used * getPerdition().getTaxPercent(); - - used = addEnergy(used); - - applyWork(); - - if (source == Type.ENGINE && type.eatsEngineExcess()) { - used = Math.min(quantity, maxEnergyReceived); - } - - averageReceivedPower = (averageReceivedPower * ROLLING_AVERAGE_NUMERATOR + used) * ROLLING_AVERAGE_DENOMINATOR; - - return used; - } - } - - /** - * - * @return the amount the power changed by - */ - public double addEnergy(double quantity) { - energyStored += quantity; - - if (energyStored > maxEnergyStored) { - quantity -= energyStored - maxEnergyStored; - energyStored = maxEnergyStored; - } else if (energyStored < 0) { - quantity -= energyStored; - energyStored = 0; - } - - applyPerdition(); - - return quantity; - } - - public void setEnergy(double quantity) { - this.energyStored = quantity; - validateEnergy(); - } - - public boolean isPowerSource(ForgeDirection from) { - return powerSources[from.ordinal()] != 0; - } - - private void validateEnergy() { - if (energyStored < 0) { - energyStored = 0; - } - if (energyStored > maxEnergyStored) { - energyStored = maxEnergyStored; - } - } -} diff --git a/src/main/java/buildcraft/api/power/package-info.java b/src/main/java/buildcraft/api/power/package-info.java deleted file mode 100644 index 4a98dbbead..0000000000 --- a/src/main/java/buildcraft/api/power/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.1",owner="BuildCraftAPI|core",provides="BuildCraftAPI|power") -package buildcraft.api.power; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/buildcraft/api/tools/IToolPipette.java b/src/main/java/buildcraft/api/tools/IToolPipette.java deleted file mode 100644 index bca9d26767..0000000000 --- a/src/main/java/buildcraft/api/tools/IToolPipette.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * 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.tools; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; - -public interface IToolPipette { - - /** - * @param pipette - * ItemStack of the pipette. - * @return Capacity of the pipette. - */ - int getCapacity(ItemStack pipette); - - /** - * @param pipette - * @return true if the pipette can pipette. - */ - boolean canPipette(ItemStack pipette); - - /** - * Fills the pipette with the given liquid stack. - * - * @param pipette - * @param liquid - * @param doFill - * @return Amount of liquid used in filling the pipette. - */ - int fill(ItemStack pipette, FluidStack liquid, boolean doFill); - - /** - * Drains liquid from the pipette - * - * @param pipette - * @param maxDrain - * @param doDrain - * @return Fluid stack representing the liquid and amount drained from the pipette. - */ - FluidStack drain(ItemStack pipette, int maxDrain, boolean doDrain); -} diff --git a/src/main/java/buildcraft/api/tools/IToolWrench.java b/src/main/java/buildcraft/api/tools/IToolWrench.java deleted file mode 100644 index a6c56e8d3f..0000000000 --- a/src/main/java/buildcraft/api/tools/IToolWrench.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * 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.tools; - -import net.minecraft.entity.player.EntityPlayer; - -/*** - * Implement this interface on subclasses of Item to have that item work as a wrench for buildcraft - */ -public interface IToolWrench { - - /*** - * Called to ensure that the wrench can be used. To get the ItemStack that is used, check player.inventory.getCurrentItem() - * - * @param player - * - The player doing the wrenching - * @param x - * ,y,z - The coordinates for the block being wrenched - * - * @return true if wrenching is allowed, false if not - */ - public boolean canWrench(EntityPlayer player, int x, int y, int z); - - /*** - * Callback after the wrench has been used. This can be used to decrease durability or for other purposes. To get the ItemStack that was used, check - * player.inventory.getCurrentItem() - * - * @param player - * - The player doing the wrenching - * @param x - * ,y,z - The coordinates of the block being wrenched - */ - public void wrenchUsed(EntityPlayer player, int x, int y, int z); -} diff --git a/src/main/java/buildcraft/api/tools/package-info.java b/src/main/java/buildcraft/api/tools/package-info.java deleted file mode 100644 index a5e03a0626..0000000000 --- a/src/main/java/buildcraft/api/tools/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="BuildCraftAPI|core",provides="BuildCraftAPI|tools") -package buildcraft.api.tools; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/buildcraft/api/transport/IExtractionHandler.java b/src/main/java/buildcraft/api/transport/IExtractionHandler.java deleted file mode 100644 index 4d56659ed9..0000000000 --- a/src/main/java/buildcraft/api/transport/IExtractionHandler.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * 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.transport; - -import net.minecraft.world.World; - -/** - * Implement and register with the PipeManager if you want to suppress connections from wooden pipes. - */ -public interface IExtractionHandler { - - /** - * Can this pipe extract items from the block located at these coordinates? - * param extractor can be null - */ - boolean canExtractItems(Object extractor, World world, int i, int j, int k); - - /** - * Can this pipe extract liquids from the block located at these coordinates? - * param extractor can be null - */ - boolean canExtractFluids(Object extractor, World world, int i, int j, int k); -} diff --git a/src/main/java/buildcraft/api/transport/IPipeConnection.java b/src/main/java/buildcraft/api/transport/IPipeConnection.java deleted file mode 100644 index 39f14ee948..0000000000 --- a/src/main/java/buildcraft/api/transport/IPipeConnection.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * 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.transport; - -import buildcraft.api.transport.IPipeTile.PipeType; -import net.minecraftforge.common.util.ForgeDirection; - -public interface IPipeConnection { - - enum ConnectOverride { - - CONNECT, DISCONNECT, DEFAULT - }; - - /** - * Allows you to override pipe connection logic. - * - * @param type - * @param with - * @return CONNECT to force a connection, DISCONNECT to force no connection, - * and DEFAULT to let the pipe decide. - */ - public ConnectOverride overridePipeConnection(PipeType type, ForgeDirection with); -} diff --git a/src/main/java/buildcraft/api/transport/IPipeDefinition.java b/src/main/java/buildcraft/api/transport/IPipeDefinition.java deleted file mode 100644 index 73a1c8909c..0000000000 --- a/src/main/java/buildcraft/api/transport/IPipeDefinition.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * 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.transport; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; - -public interface IPipeDefinition { - - String getUniqueTag(); - - void registerIcons(IIconRegister iconRegister); - - IIcon getIcon(int index); - - IIcon getItemIcon(); - - PipeBehavior makePipeBehavior(TileEntity tile); -} diff --git a/src/main/java/buildcraft/api/transport/IPipeTile.java b/src/main/java/buildcraft/api/transport/IPipeTile.java deleted file mode 100644 index 22f287f25e..0000000000 --- a/src/main/java/buildcraft/api/transport/IPipeTile.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * 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.transport; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.util.ForgeDirection; - -public interface IPipeTile { - - public enum PipeType { - - ITEM, FLUID, POWER, STRUCTURE; - } - - PipeType getPipeType(); - - /** - * Offers an ItemStack for addition to the pipe. Will be rejected if the - * pipe doesn't accept items from that side. - * - * @param stack ItemStack offered for addition. Do not manipulate this! - * @param doAdd If false no actual addition should take place. Implementors - * should simulate. - * @param from Orientation the ItemStack is offered from. - * @return Amount of items used from the passed stack. - */ - int injectItem(ItemStack stack, boolean doAdd, ForgeDirection from); - - /** - * True if the pipe is connected to the block/pipe in the specific direction - * - * @param wire - * @return true if connect - */ - boolean isPipeConnected(ForgeDirection with); - - /** - * True if the pipe has a powered wire of the specified color. - * - * @param wire - * @return true if powered - */ - boolean isWireActive(PipeWire wire); -} diff --git a/src/main/java/buildcraft/api/transport/PipeBehavior.java b/src/main/java/buildcraft/api/transport/PipeBehavior.java deleted file mode 100644 index 66c528cb58..0000000000 --- a/src/main/java/buildcraft/api/transport/PipeBehavior.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * 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.transport; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; - -public abstract class PipeBehavior { - - public final TileEntity tile; - - public PipeBehavior(TileEntity tile) { - this.tile = tile; - } - - public void tick() { - } - - public int getIconIndex(ForgeDirection side) { - return 0; - } - - public void writeToNBT(NBTTagCompound nbt) { - } - - public void readFromNBT(NBTTagCompound nbt) { - } - - public boolean canPipeConnect(TileEntity tile, ForgeDirection side) { - return true; - } - - public boolean blockActivated(EntityPlayer player) { - return false; - } - - public void onNeighborBlockChange(int blockId) { - } -} diff --git a/src/main/java/buildcraft/api/transport/PipeManager.java b/src/main/java/buildcraft/api/transport/PipeManager.java deleted file mode 100644 index ae7bd918af..0000000000 --- a/src/main/java/buildcraft/api/transport/PipeManager.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * 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.transport; - -import java.util.ArrayList; -import java.util.List; -import net.minecraft.world.World; - -public abstract class PipeManager { - - public static List extractionHandlers = new ArrayList(); - - public static void registerExtractionHandler(IExtractionHandler handler) { - extractionHandlers.add(handler); - } - - /** - * param extractor can be null - */ - public static boolean canExtractItems(Object extractor, World world, int i, int j, int k) { - for (IExtractionHandler handler : extractionHandlers) - if (!handler.canExtractItems(extractor, world, i, j, k)) - return false; - - return true; - } - - /** - * param extractor can be null - */ - public static boolean canExtractFluids(Object extractor, World world, int i, int j, int k) { - for (IExtractionHandler handler : extractionHandlers) - if (!handler.canExtractFluids(extractor, world, i, j, k)) - return false; - - return true; - } -} diff --git a/src/main/java/buildcraft/api/transport/PipeWire.java b/src/main/java/buildcraft/api/transport/PipeWire.java deleted file mode 100644 index 8024e6bb7a..0000000000 --- a/src/main/java/buildcraft/api/transport/PipeWire.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * 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.transport; - -import java.util.Locale; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public enum PipeWire { - - RED, BLUE, GREEN, YELLOW; - public static Item item; - public static final PipeWire[] VALUES = values(); - - public PipeWire reverse() { - switch (this) { - case RED: - return YELLOW; - case BLUE: - return GREEN; - case GREEN: - return BLUE; - default: - return RED; - } - } - - public String getTag() { - return name().toLowerCase(Locale.ENGLISH) + "PipeWire"; - } - - public ItemStack getStack() { - return getStack(1); - } - - public ItemStack getStack(int qty) { - if (item == null) - return null; - return new ItemStack(item, qty, ordinal()); - } - - public boolean isPipeWire(ItemStack stack) { - if (stack == null) - return false; - if (stack.getItem() != item) - return false; - return stack.getItemDamage() == ordinal(); - } - - public static PipeWire fromOrdinal(int ordinal) { - if (ordinal < 0 || ordinal >= VALUES.length) - return RED; - return VALUES[ordinal]; - } -} diff --git a/src/main/java/buildcraft/api/transport/package-info.java b/src/main/java/buildcraft/api/transport/package-info.java deleted file mode 100644 index 612eeaaafe..0000000000 --- a/src/main/java/buildcraft/api/transport/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="2.0",owner="BuildCraftAPI|core",provides="BuildCraftAPI|transport") -package buildcraft.api.transport; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/crazypants/enderio/power/PowerHandlerUtil.java b/src/main/java/crazypants/enderio/power/PowerHandlerUtil.java index 150bc59966..21b242612b 100644 --- a/src/main/java/crazypants/enderio/power/PowerHandlerUtil.java +++ b/src/main/java/crazypants/enderio/power/PowerHandlerUtil.java @@ -1,5 +1,6 @@ package crazypants.enderio.power; +import buildcraft.api.mj.MjAPI; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; @@ -20,6 +21,10 @@ public static IPowerInterface create(Object o) { } else if(o instanceof IPowerReceptor) { return new PowerInterfaceBC((IPowerReceptor) o); } + MjAPI.BatteryObject battery = MjAPI.getMjBattery(o); + if(battery != null) { + return new PowerInterfaceBC2(battery); + } return null; } diff --git a/src/main/java/crazypants/enderio/power/PowerInterfaceBC2.java b/src/main/java/crazypants/enderio/power/PowerInterfaceBC2.java new file mode 100644 index 0000000000..b2deb5f1b1 --- /dev/null +++ b/src/main/java/crazypants/enderio/power/PowerInterfaceBC2.java @@ -0,0 +1,47 @@ +package crazypants.enderio.power; + +import buildcraft.api.mj.MjAPI; +import net.minecraftforge.common.util.ForgeDirection; + +public class PowerInterfaceBC2 implements IPowerInterface { + private final MjAPI.BatteryObject battery; + + public PowerInterfaceBC2(MjAPI.BatteryObject battery) { + this.battery = battery; + } + + @Override + public Object getDelegate() { + return battery; + } + + @Override + public boolean canConduitConnect(ForgeDirection direction) { + return true; + } + + @Override + public float getEnergyStored(ForgeDirection dir) { + return (float) battery.getEnergyStored(); + } + + @Override + public float getMaxEnergyStored(ForgeDirection dir) { + return (float) battery.maxCapacity(); + } + + @Override + public float getPowerRequest(ForgeDirection dir) { + return (float) battery.getEnergyRequested(); + } + + @Override + public float getMinEnergyReceived(ForgeDirection dir) { + return (float) battery.minimumConsumption(); + } + + @Override + public float recieveEnergy(ForgeDirection opposite, float canOffer) { + return (float) battery.addEnergy(Math.min(canOffer, battery.maxReceivedPerCycle())); + } +}