diff --git a/APIs/buildcraft/api/core/BuildCraftAPI.java b/APIs/buildcraft/api/core/BuildCraftAPI.java deleted file mode 100644 index c0c06bcd8..000000000 --- a/APIs/buildcraft/api/core/BuildCraftAPI.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 - * 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.block.Block; - -public class BuildCraftAPI -{ - - public static final int LAST_ORIGINAL_BLOCK = 122; - public static final int LAST_ORIGINAL_ITEM = 126; - - public static final boolean[] softBlocks = new boolean[Block.blocksList.length]; -} diff --git a/APIs/buildcraft/api/core/IAreaProvider.java b/APIs/buildcraft/api/core/IAreaProvider.java deleted file mode 100644 index cad9e2111..000000000 --- a/APIs/buildcraft/api/core/IAreaProvider.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 - * 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/APIs/buildcraft/api/core/IBox.java b/APIs/buildcraft/api/core/IBox.java deleted file mode 100644 index a6f95cae7..000000000 --- a/APIs/buildcraft/api/core/IBox.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 - * 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/APIs/buildcraft/api/core/IIconProvider.java b/APIs/buildcraft/api/core/IIconProvider.java deleted file mode 100644 index 3a249e041..000000000 --- a/APIs/buildcraft/api/core/IIconProvider.java +++ /dev/null @@ -1,27 +0,0 @@ -package buildcraft.api.core; - -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.util.Icon; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public interface IIconProvider -{ - - /** - * @param iconIndex - * @return - */ - @SideOnly(Side.CLIENT) - public Icon 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(IconRegister iconRegister); - -} diff --git a/APIs/buildcraft/api/core/LaserKind.java b/APIs/buildcraft/api/core/LaserKind.java deleted file mode 100644 index 520d6511c..000000000 --- a/APIs/buildcraft/api/core/LaserKind.java +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 - * 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/APIs/buildcraft/api/core/Position.java b/APIs/buildcraft/api/core/Position.java deleted file mode 100644 index b3f6b3dd2..000000000 --- a/APIs/buildcraft/api/core/Position.java +++ /dev/null @@ -1,161 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 - * 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.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/APIs/buildcraft/api/core/SafeTimeTracker.java b/APIs/buildcraft/api/core/SafeTimeTracker.java deleted file mode 100644 index cee37abe9..000000000 --- a/APIs/buildcraft/api/core/SafeTimeTracker.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 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; - - /** - * Return true if a given delay has passed since last time marked was called successfully. - */ - 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 <= currentTime) - { - duration = currentTime - lastMark; - lastMark = currentTime; - return true; - } - else - return false; - - } - - public long durationOfLastDelay() - { - return duration > 0 ? duration : 0; - } - - public void markTime(World world) - { - lastMark = world.getTotalWorldTime(); - } -} diff --git a/APIs/buildcraft/api/core/StackWrapper.java b/APIs/buildcraft/api/core/StackWrapper.java deleted file mode 100644 index 2f354719a..000000000 --- a/APIs/buildcraft/api/core/StackWrapper.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) SpaceToad, 2011-2012 - * 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.ItemStack; - -/** - * - * @author CovertJaguar - */ -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.itemID; - 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.itemID != other.stack.itemID) - 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/APIs/buildcraft/api/power/IPowerEmitter.java b/APIs/buildcraft/api/power/IPowerEmitter.java deleted file mode 100644 index 08a1b24e0..000000000 --- a/APIs/buildcraft/api/power/IPowerEmitter.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) SpaceToad, 2011-2012 - * 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.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. - * - * @author CovertJaguar - */ -public interface IPowerEmitter -{ - - public boolean canEmitPowerFrom(ForgeDirection side); -} diff --git a/APIs/buildcraft/api/power/IPowerReceptor.java b/APIs/buildcraft/api/power/IPowerReceptor.java deleted file mode 100644 index f9f709329..000000000 --- a/APIs/buildcraft/api/power/IPowerReceptor.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 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.ForgeDirection; -import buildcraft.api.power.PowerHandler.PowerReceiver; - -/** - * This interface should be implemented by any Tile Entity that wishes to be able to receive power. - * - * @author CovertJaguar - */ -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 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/APIs/buildcraft/api/power/PowerHandler.java b/APIs/buildcraft/api/power/PowerHandler.java deleted file mode 100644 index 2969dd628..000000000 --- a/APIs/buildcraft/api/power/PowerHandler.java +++ /dev/null @@ -1,455 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 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.nbt.NBTTagCompound; -import net.minecraftforge.common.ForgeDirection; -import buildcraft.api.core.SafeTimeTracker; - -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; - } - } - } - - public static class PerditionCalculator - { - - public static final float DEFAULT_POWERLOSS = 1F; - public static final float MIN_POWERLOSS = 0.01F; - private final float powerLoss; - - public PerditionCalculator() - { - powerLoss = DEFAULT_POWERLOSS; - } - - public PerditionCalculator(float 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 float applyPerdition(PowerHandler powerHandler, float current, long ticksPassed) - { - current -= powerLoss * ticksPassed; - if (current < 0) - { - current = 0; - } - return current; - } - } - - public static final PerditionCalculator DEFAULT_PERDITION = new PerditionCalculator(); - private float minEnergyReceived; - private float maxEnergyReceived; - private float maxEnergyStored; - private float activationEnergy; - private float 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; - - 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 float getMinEnergyReceived() - { - return minEnergyReceived; - } - - public float getMaxEnergyReceived() - { - return maxEnergyReceived; - } - - public float getMaxEnergyStored() - { - return maxEnergyStored; - } - - public float getActivationEnergy() - { - return activationEnergy; - } - - public float 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(float minEnergyReceived, float maxEnergyReceived, float activationEnergy, float maxStoredEnergy) - { - if (minEnergyReceived > maxEnergyReceived) - { - maxEnergyReceived = minEnergyReceived; - } - this.minEnergyReceived = minEnergyReceived; - this.maxEnergyReceived = maxEnergyReceived; - this.maxEnergyStored = maxStoredEnergy; - this.activationEnergy = activationEnergy; - } - - 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) - { - float newEnergy = getPerdition().applyPerdition(this, energyStored, perditionTracker.durationOfLastDelay()); - if (newEnergy == 0 || newEnergy < energyStored) - energyStored = newEnergy; - else - energyStored = DEFAULT_PERDITION.applyPerdition(this, energyStored, perditionTracker.durationOfLastDelay()); - validateEnergy(); - } - } - - 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 float useEnergy(float min, float max, boolean doUse) - { - applyPerdition(); - - float result = 0; - - if (energyStored >= min) - { - if (energyStored <= max) - { - result = energyStored; - if (doUse) - { - energyStored = 0; - } - } - else - { - result = max; - if (doUse) - { - energyStored -= max; - } - } - } - - validateEnergy(); - - return result; - } - - public void readFromNBT(NBTTagCompound data) - { - readFromNBT(data, "powerProvider"); - } - - public void readFromNBT(NBTTagCompound data, String tag) - { - NBTTagCompound nbt = data.getCompoundTag(tag); - energyStored = nbt.getFloat("storedEnergy"); - } - - public void writeToNBT(NBTTagCompound data) - { - writeToNBT(data, "powerProvider"); - } - - public void writeToNBT(NBTTagCompound data, String tag) - { - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setFloat("storedEnergy", energyStored); - data.setCompoundTag(tag, nbt); - } - - public final class PowerReceiver - { - - private PowerReceiver() - { - } - - public float getMinEnergyReceived() - { - return minEnergyReceived; - } - - public float getMaxEnergyReceived() - { - return maxEnergyReceived; - } - - public float getMaxEnergyStored() - { - return maxEnergyStored; - } - - public float getActivationEnergy() - { - return activationEnergy; - } - - public float getEnergyStored() - { - return energyStored; - } - - public Type getType() - { - return type; - } - - public void update() - { - PowerHandler.this.update(); - } - - /** - * The amount of power that this PowerHandler currently needs. - * - * @return - */ - public float powerRequest() - { - update(); - return Math.min(maxEnergyReceived, maxEnergyStored - energyStored); - } - - /** - * Add power to the PowerReceiver from an external source. - * - * @param quantity - * @param from - * @return the amount of power used - */ - public float receiveEnergy(Type source, final float quantity, ForgeDirection from) - { - float used = quantity; - if (source == Type.ENGINE) - { - if (used < minEnergyReceived) - { - return 0; - } - else if (used > maxEnergyReceived) - { - used = maxEnergyReceived; - } - } - - updateSources(from); - - used = addEnergy(used); - - applyWork(); - - if (source == Type.ENGINE && type.eatsEngineExcess()) - { - return Math.min(quantity, maxEnergyReceived); - } - - return used; - } - } - - /** - * - * @return the amount the power changed by - */ - public float addEnergy(float 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(float 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/APIs/buildcraft/api/transport/FacadeManager.java b/APIs/buildcraft/api/transport/FacadeManager.java deleted file mode 100644 index 28cbdd1ab..000000000 --- a/APIs/buildcraft/api/transport/FacadeManager.java +++ /dev/null @@ -1,25 +0,0 @@ -package buildcraft.api.transport; - -import java.lang.reflect.Method; -import net.minecraft.item.ItemStack; - -/** - * You can use this if you wish, but FML InterModComms are recommended. - * - * SYNTAX: add-facade:id@meta - */ -public class FacadeManager { - private static Method addFacade; - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public static void addFacade(ItemStack is) { - try { - if (addFacade == null) { - Class facade = Class.forName("buildcraft.transport.ItemFacade"); - addFacade = facade.getMethod("addFacade", ItemStack.class); - } - addFacade.invoke(null, is); - } catch (Exception ex) { - } - } -} diff --git a/APIs/buildcraft/api/transport/IExtractionHandler.java b/APIs/buildcraft/api/transport/IExtractionHandler.java deleted file mode 100644 index e912f65be..000000000 --- a/APIs/buildcraft/api/transport/IExtractionHandler.java +++ /dev/null @@ -1,21 +0,0 @@ -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/APIs/buildcraft/api/transport/IPipe.java b/APIs/buildcraft/api/transport/IPipe.java deleted file mode 100644 index 20096b764..000000000 --- a/APIs/buildcraft/api/transport/IPipe.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 - * 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.tileentity.TileEntity; - -public interface IPipe { - - enum DrawingState { - DrawingPipe, DrawingRedWire, DrawingBlueWire, DrawingGreenWire, DrawingYellowWire, DrawingGate - } - - enum WireColor { - Red, Blue, Green, Yellow; - - public WireColor reverse() { - switch (this) { - case Red: - return Yellow; - case Blue: - return Green; - case Green: - return Blue; - default: - return Red; - } - } - } - - public boolean isWired(WireColor color); - - public boolean hasGate(); - - public TileEntity getContainer(); - - public boolean isWireConnectedTo(TileEntity tile, WireColor color); - -} diff --git a/APIs/buildcraft/api/transport/IPipeConnection.java b/APIs/buildcraft/api/transport/IPipeConnection.java deleted file mode 100644 index cbb1d0033..000000000 --- a/APIs/buildcraft/api/transport/IPipeConnection.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 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.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/APIs/buildcraft/api/transport/IPipeTile.java b/APIs/buildcraft/api/transport/IPipeTile.java deleted file mode 100644 index 13aa8d760..000000000 --- a/APIs/buildcraft/api/transport/IPipeTile.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright (c) SpaceToad, 2011 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.ForgeDirection; -import net.minecraftforge.fluids.IFluidHandler; - -public interface IPipeTile extends ISolidSideTile, IFluidHandler { - - public enum PipeType { - - ITEM, FLUID, POWER, STRUCTURE; - } - - @Deprecated - IPipe getPipe(); - - 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); - - boolean isPipeConnected(ForgeDirection with); -} diff --git a/APIs/buildcraft/api/transport/ISolidSideTile.java b/APIs/buildcraft/api/transport/ISolidSideTile.java deleted file mode 100644 index 627b0d883..000000000 --- a/APIs/buildcraft/api/transport/ISolidSideTile.java +++ /dev/null @@ -1,7 +0,0 @@ -package buildcraft.api.transport; - -import net.minecraftforge.common.ForgeDirection; - -public interface ISolidSideTile { - public boolean isSolidOnSide(ForgeDirection side); -} diff --git a/APIs/buildcraft/api/transport/PipeManager.java b/APIs/buildcraft/api/transport/PipeManager.java deleted file mode 100644 index c78c86e23..000000000 --- a/APIs/buildcraft/api/transport/PipeManager.java +++ /dev/null @@ -1,36 +0,0 @@ -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/APIs/dan200/computer/api/ComputerCraftAPI.java b/APIs/dan200/computer/api/ComputerCraftAPI.java deleted file mode 100644 index 9278dd0fe..000000000 --- a/APIs/dan200/computer/api/ComputerCraftAPI.java +++ /dev/null @@ -1,163 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; -import java.lang.reflect.Method; -import net.minecraft.world.World; - -/** - * The static entry point to the ComputerCraft API. - * Members in this class must be called after mod_ComputerCraft has been initialised, - * but may be called before it is fully loaded. - */ -public class ComputerCraftAPI -{ - /** - * Creates a numbered directory in a subfolder of the save directory for a given world, and returns that number.
- * Use in conjuction with createSaveDirMount() to create a unique place for your peripherals or media items to store files.
- * @param world The world for which the save dir should be created. This should be the serverside world object. - * @param parentSubPath The folder path within the save directory where the new directory should be created. eg: "computer/disk" - * @return The numerical value of the name of the new folder, or -1 if the folder could not be created for some reason.
- * eg: if createUniqueNumberedSaveDir( world, "computer/disk" ) was called returns 42, then "computer/disk/42" is now available for writing. - * @see #createSaveDirMount(World, String) - */ - public static int createUniqueNumberedSaveDir( World world, String parentSubPath ) - { - findCC(); - if( computerCraft_createUniqueNumberedSaveDir != null ) - { - try { - return ((Integer)computerCraft_createUniqueNumberedSaveDir.invoke( null, world, parentSubPath )).intValue(); - } catch (Exception e){ - // It failed - } - } - return -1; - } - - /** - * Creates a file system mount that maps to a subfolder of the save directory for a given world, and returns it.
- * Use in conjuction with IComputerAccess.mount() or IComputerAccess.mountWritable() to mount a folder from the - * users save directory onto a computers file system.
- * @param world The world for which the save dir can be found. This should be the serverside world object. - * @param subPath The folder path within the save directory that the mount should map to. eg: "computer/disk/42".
- * Use createUniqueNumberedSaveDir() to create a new numbered folder to use. - * @param capacity The ammount of data that can be stored in the directory before it fills up, in bytes. - * @return The mount, or null if it could be created for some reason. Use IComputerAccess.mount() or IComputerAccess.mountWritable() - * to mount this on a Computers' file system. - * @see #createUniqueNumberedSaveDir(World, String) - * @see IComputerAccess#mount(String, IMount) - * @see IComputerAccess#mountWritable(String, IWritableMount) - * @see IMount - * @see IMountWritable - */ - public static IWritableMount createSaveDirMount( World world, String subPath, long capacity ) - { - findCC(); - if( computerCraft_createSaveDirMount != null ) - { - try { - return (IWritableMount)computerCraft_createSaveDirMount.invoke( null, world, subPath, capacity ); - } catch (Exception e){ - // It failed - } - } - return null; - } - - /** - * Creates a file system mount to a resource folder, and returns it.
- * Use in conjuction with IComputerAccess.mount() or IComputerAccess.mountWritable() to mount a resource folder onto a computers file system.
- * The files in this mount will be a combination of files in the specified mod jar, and resource packs that contain resources with the same domain and path.
- * @param class A class in whose jar to look first for the resources to mount. Using your main mod class is recommended. eg: MyMod.class - * @param domain The domain under which to look for resources. eg: "mymod" - * @param subPath The domain under which to look for resources. eg: "mymod/lua/myfiles" - * @return The mount, or null if it could be created for some reason. Use IComputerAccess.mount() or IComputerAccess.mountWritable() - * to mount this on a Computers' file system. - * @see IComputerAccess#mount(String, IMount) - * @see IComputerAccess#mountWritable(String, IMountWritable) - * @see IMount - */ - public static IMount createResourceMount( Class modClass, String domain, String subPath ) - { - findCC(); - if( computerCraft_createResourceMount != null ) - { - try { - return (IMount)computerCraft_createResourceMount.invoke( null, modClass, domain, subPath ); - } catch (Exception e){ - // It failed - } - } - return null; - } - - /** - * Registers a peripheral handler for a TileEntity that you do not have access to. Only - * use this if you want to expose IPeripheral on a TileEntity from another mod. For your own - * mod, just implement IPeripheral on the TileEntity directly. - * @see IPeripheral - * @see IPeripheralHandler - */ - public static void registerExternalPeripheral( Class clazz, IPeripheralHandler handler ) - { - findCC(); - if (computerCraft_registerExternalPeripheral != null) - { - try { - computerCraft_registerExternalPeripheral.invoke(null, clazz, handler); - } catch (Exception e){ - // It failed - } - } - } - - // The functions below here are private, and are used to interface with the non-API ComputerCraft classes. - // Reflection is used here so you can develop your mod in MCP without decompiling ComputerCraft and including - // it in your solution. - - private static void findCC() - { - if( !ccSearched ) { - try { - computerCraft = Class.forName( "dan200.ComputerCraft" ); - computerCraft_createUniqueNumberedSaveDir = findCCMethod( "createUniqueNumberedSaveDir", new Class[] { - World.class, String.class - } ); - computerCraft_createSaveDirMount = findCCMethod( "createSaveDirMount", new Class[] { - World.class, String.class, Long.TYPE - } ); - computerCraft_createResourceMount = findCCMethod( "createResourceMount", new Class[] { - Class.class, String.class, String.class - } ); - computerCraft_registerExternalPeripheral = findCCMethod( "registerExternalPeripheral", new Class[] { - Class.class, IPeripheralHandler.class - } ); - } catch( Exception e ) { - net.minecraft.server.MinecraftServer.getServer().logInfo( "ComputerCraftAPI: ComputerCraft not found." ); - } finally { - ccSearched = true; - } - } - } - - private static Method findCCMethod( String name, Class[] args ) - { - try { - return computerCraft.getMethod( name, args ); - } catch( NoSuchMethodException e ) { - net.minecraft.server.MinecraftServer.getServer().logInfo( "ComputerCraftAPI: ComputerCraft method " + name + " not found." ); - return null; - } - } - - private static boolean ccSearched = false; - private static Class computerCraft = null; - private static Method computerCraft_createUniqueNumberedSaveDir = null; - private static Method computerCraft_createSaveDirMount = null; - private static Method computerCraft_createResourceMount = null; - private static Method computerCraft_registerExternalPeripheral = null; -} diff --git a/APIs/dan200/computer/api/IComputerAccess.java b/APIs/dan200/computer/api/IComputerAccess.java deleted file mode 100644 index d49643b84..000000000 --- a/APIs/dan200/computer/api/IComputerAccess.java +++ /dev/null @@ -1,109 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -import net.minecraft.world.World; - -/** - * The interface passed to peripherals by computers or turtles, providing methods that they can - * call. This should not be implemented by your classes. Do not interact with computers except via - * this interface. - */ -public interface IComputerAccess -{ - /** - * Mount a mount onto the computers' file system in a read only mode.
- * - * @param desiredLoction The location on the computer's file system where you would like the - * mount to be mounted. - * @param mount The mount object to mount on the computer. These can be obtained by calling - * ComputerCraftAPI.createSaveDirMount(), ComputerCraftAPI.createResourceMount() or by creating - * your own objects that implement the IMount interface. - * @return The location on the computer's file system where you the mount was actually mounted, - * this may be different from desiredLocation if there was already a file in the desired - * location. Store this value if you wish to unmount the mount later. - * @see ComputerCraftAPI#createSaveDirMount(World, String) - * @see ComputerCraftAPI#createResourceMount(Class, String, String) - * @see #mountWritable(String, IWritableMount) - * @see #unmount(String) - * @see IMount - */ - public String mount(String desiredLocation, IMount mount); - - /** - * Mount a mount onto the computers' file system in a writable mode.
- * - * @param desiredLoction The location on the computer's file system where you would like the - * mount to be mounted. - * @param mount The mount object to mount on the computer. These can be obtained by calling - * ComputerCraftAPI.createSaveDirMount() or by creating your own objects that implement the - * IWritableMount interface. - * @return The location on the computer's file system where you the mount was actually mounted, - * this may be different from desiredLocation if there was already a file in the desired - * location. Store this value if you wish to unmount the mount later. - * @see ComputerCraftAPI#createSaveDirMount(World, String) - * @see ComputerCraftAPI#createResourceMount(Class, String, String) - * @see #mount(String, IMount) - * @see #unmount(String) - * @see IMount - */ - public String mountWritable(String desiredLocation, IWritableMount mount); - - /** - * Unmounts a directory previously mounted onto the computers file system by mount() or - * mountWritable().
- * When a directory is unmounted, it will disappear from the computers file system, and the user - * will no longer be able to access it. All directories mounted by a mount or mountWritable are - * automatically unmounted when the peripheral is attached if they have not been explicitly - * unmounted. - * - * @param location The desired location in the computers file system of the directory to - * unmount. This must be the location of a directory previously mounted by mount() or - * mountWritable(), as indicated by their return value. - * @see #mount(String, IMount) - * @see #mountWritable(String, IWritableMount) - */ - public void unmount(String location); - - /** - * Returns the numerical ID of this computer.
- * This is the same number obtained by calling os.getComputerID() or running the "id" program - * from lua, and is guarunteed unique. This number will be positive. - * - * @return The identifier. - */ - public int getID(); - - /** - * Causes an event to be raised on this computer, which the computer can respond to by calling - * os.pullEvent(). This can be used to notify the computer when things happen in the world or to - * this peripheral. - * - * @param event A string identifying the type of event that has occurred, this will be returned - * as the first value from os.pullEvent(). It is recommended that you you choose a name that is - * unique, and recognisable as originating from your peripheral. eg: If your peripheral type is - * "button", a suitable event would be "button_pressed". - * @param arguments In addition to a name, you may pass an array of extra arguments to the - * event, that will be supplied as extra return values to os.pullEvent(). Objects in the array - * will be converted to lua data types in the same fashion as the return values of - * IPeripheral.callMethod().
- * You may supply null to indicate that no arguments are to be supplied. - * @see IPeripheral#callMethod - */ - public void queueEvent(String event, Object[] arguments); - - /** - * Get a string, unique to the computer, by which the computer refers to this peripheral. For - * directly attached peripherals this will be "left","right","front","back",etc, but for - * peripherals attached remotely it will be different. It is good practice to supply this string - * when raising events to the computer, so that the computer knows from which peripheral the - * event came. - * - * @return A string unique to the computer, but not globally. - */ - public String getAttachmentName(); -} diff --git a/APIs/dan200/computer/api/IHostedPeripheral.java b/APIs/dan200/computer/api/IHostedPeripheral.java deleted file mode 100644 index 68cf3fd77..000000000 --- a/APIs/dan200/computer/api/IHostedPeripheral.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; -import dan200.computer.api.IPeripheral; - -/** - * A subclass of IPeripheral specifically for peripherals - * created by ITurtleUpgrade's of type Peripheral. When an - * IHostedPeripheral is created, its IPeripheral methods will be called - * just as if the peripheral was a seperate adjacent block in the world, - * and update() will be called once per tick. - * @see ITurtleUpgrade - */ -public interface IHostedPeripheral extends IPeripheral -{ - /** - * A method called on each hosted peripheral once per tick, on the main thread - * over the lifetime of the turtle or block. May be used to update the state - * of the peripheral, and may interact with IComputerAccess or ITurtleAccess - * however it likes at this time. - */ - public void update(); - - /** - * A method called whenever data is read from the Turtle's NBTTag, - * over the lifetime of the turtle. You should only use this for - * reading data you want to stay with the peripheral. - * @param nbttagcompound The peripheral's NBTTag - */ - public void readFromNBT( net.minecraft.nbt.NBTTagCompound nbttagcompound ); - - /** - * A method called whenever data is written to the Turtle's NBTTag, - * over the lifetime of the turtle. You should only use this for - * writing data you want to stay with the peripheral. - * @param nbttagcompound The peripheral's NBTTag. - * @param ID The turtle's ID. - */ - public void writeToNBT( net.minecraft.nbt.NBTTagCompound nbttagcompound ); -} diff --git a/APIs/dan200/computer/api/ILuaContext.java b/APIs/dan200/computer/api/ILuaContext.java deleted file mode 100644 index b057f7799..000000000 --- a/APIs/dan200/computer/api/ILuaContext.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -/** - * An interface passed to peripherals and ILuaObjects' by computers or turtles, providing methods - * that allow the peripheral call to wait for events before returning, just like in lua. This is - * very useful if you need to signal work to be performed on the main thread, and don't want to - * return until the work has been completed. - */ -public interface ILuaContext -{ - /** - * Wait for an event to occur on the computer, suspending the thread until it arises. This - * method is exactly equivalent to os.pullEvent() in lua. - * - * @param filter A specific event to wait for, or null to wait for any event - * @return An object array containing the name of the event that occurred, and any event - * parameters - * @throws Exception If the user presses CTRL+T to terminate the current program while - * pullEvent() is waiting for an event, a "Terminated" exception will be thrown here. Do not - * attempt to block this exception, unless you wish to prevent termination, which is not - * recommended. - * @throws InterruptedException If the user shuts down or reboots the computer while pullEvent() - * is waiting for an event, InterruptedException will be thrown. This exception must not be - * caught or intercepted, or the computer will leak memory and end up in a broken state. - */ - public Object[] pullEvent(String filter) throws Exception, InterruptedException; - - /** - * The same as pullEvent(), except "terminated" events are ignored. Only use this if you want to - * prevent program termination, which is not recommended. This method is exactly equivalent to - * os.pullEventRaw() in lua. - * - * @param filter A specific event to wait for, or null to wait for any event - * @return An object array containing the name of the event that occurred, and any event - * parameters - * @throws InterruptedException If the user shuts down or reboots the computer while - * pullEventRaw() is waiting for an event, InterruptedException will be thrown. This exception - * must not be caught or intercepted, or the computer will leak memory and end up in a broken - * state. - * @see #pullEvent(String) - */ - public Object[] pullEventRaw(String filter) throws InterruptedException; - - /** - * Yield the current coroutine with some arguments until it is resumed. This method is exactly - * equivalent to coroutine.yield() in lua. Use pullEvent() if you wish to wait for events. - * - * @param arguments An object array containing the arguments to pass to coroutine.yield() - * @return An object array containing the return values from coroutine.yield() - * @throws InterruptedException If the user shuts down or reboots the computer the coroutine is - * suspended, InterruptedException will be thrown. This exception must not be caught or - * intercepted, or the computer will leak memory and end up in a broken state. - * @see #pullEvent(String) - */ - public Object[] yield(Object[] arguments) throws InterruptedException; -} diff --git a/APIs/dan200/computer/api/ILuaObject.java b/APIs/dan200/computer/api/ILuaObject.java deleted file mode 100644 index a063fa5b4..000000000 --- a/APIs/dan200/computer/api/ILuaObject.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -/** - * An interface for representing custom objects returned by IPeripheral.callMethod() calls. - * Return objects implementing this interface to expose objects with methods to lua. - */ -public interface ILuaObject -{ - /** - * Get the names of the methods that this object implements. This works the same as IPeripheral.getMethodNames(). See that method for detailed documentation. - * @see IPeripheral#getMethodNames() - */ - public String[] getMethodNames(); - - /** - * Called when a user calls one of the methods that this object implements. This works the same as IPeripheral.callMethod(). See that method for detailed documentation. - * @see IPeripheral#callMethod(IComputerAccess, ILuaContext, int, Object[]) - */ - public Object[] callMethod( ILuaContext context, int method, Object[] arguments ) throws Exception; -} diff --git a/APIs/dan200/computer/api/IMedia.java b/APIs/dan200/computer/api/IMedia.java deleted file mode 100644 index 52660af03..000000000 --- a/APIs/dan200/computer/api/IMedia.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; -import net.minecraft.world.World; -import net.minecraft.item.ItemStack; - -/** - * Represents an item that can be placed in a disk drive and used by a Computer. - * Implement this interface on your Item class to allow it to be used in the drive. - */ -public interface IMedia -{ - /** - * Get a string representing the label of this item. Will be called vi disk.getLabel() in lua. - * @param stack The itemstack to inspect - * @return The label. ie: "Dan's Programs" - */ - public String getLabel( ItemStack stack ); - - /** - * Set a string representing the label of this item. Will be called vi disk.setLabel() in lua. - * @param stack The itemstack to modify. - * @param label The string to set the label to. - * @return true if the label was updated, false if the label may not be modified. - */ - public boolean setLabel( ItemStack stack, String label ); - - /** - * If this disk represents an item with audio (like a record), get the readable name of the audio track. ie: "Jonathon Coulton - Still Alive" - * @param stack The itemstack to inspect. - * @return The name, or null if this item does not represent an item with audio. - */ - public String getAudioTitle( ItemStack stack ); - - /** - * If this disk represents an item with audio (like a record), get the resource name of the audio track to play. - * @param stack The itemstack to inspect. - * @return The name, or null if this item does not represent an item with audio. - */ - public String getAudioRecordName( ItemStack stack ); - - /** - * If this disk represents an item with data (like a floppy disk), get a mount representing it's contents. This will be mounted onto the filesystem of the computer while the media is in the disk drive. - * @param stack The itemstack to inspect. - * @param world The world in which the item and disk drive reside. - * @return The mount, or null if this item does not represent an item with data. If the IMount returned also implements IWritableMount, it will mounted using mountWritable() - * @see IMount - * @see IWritableMount - * @see ComputerCraftAPI#createSaveDirMount(World, String) - * @see ComputerCraftAPI#createResourceMount(Class, String, String) - */ - public IMount createDataMount( ItemStack stack, World world ); -} diff --git a/APIs/dan200/computer/api/IMount.java b/APIs/dan200/computer/api/IMount.java deleted file mode 100644 index ccf28dfbb..000000000 --- a/APIs/dan200/computer/api/IMount.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -import java.io.IOException; -import java.io.InputStream; -import java.util.List; - -import net.minecraft.world.World; - -/** - * Represents a read only part of a virtual filesystem that can be mounted onto a computer using - * IComputerAccess.mount(). Ready made implementations of this interface can be created using - * ComputerCraftAPI.createSaveDirMount() or ComputerCraftAPI.createResourceMount(), or you're free - * to implement it yourselves! - * - * @see ComputerCraftAPI#createSaveDirMount(World, String) - * @see ComputerCraftAPI#createResourceMount(Class, String, String) - * @see IComputerAccess#mount(String, IMount) - * @see IWritableMount - */ -public interface IMount -{ - /** - * Returns whether a file with a given path exists or not. - * - * @param path A file path in normalised format, relative to the mount location. ie: - * "programs/myprogram" - * @return true if the file exists, false otherwise - */ - public boolean exists(String path) throws IOException; - - /** - * Returns whether a file with a given path is a directory or not. - * - * @param path A file path in normalised format, relative to the mount location. ie: - * "programs/myprograms" - * @return true if the file exists and is a directory, false otherwise - */ - public boolean isDirectory(String path) throws IOException; - - /** - * Returns the file names of all the files in a directory. - * - * @param path A file path in normalised format, relative to the mount location. ie: - * "programs/myprograms" - * @param contents A list of strings. Add all the file names to this list - */ - public void list(String path, List contents) throws IOException; - - /** - * Returns the size of a file with a given path, in bytes - * - * @param path A file path in normalised format, relative to the mount location. ie: - * "programs/myprogram" - * @return the size of the file, in bytes - */ - public long getSize(String path) throws IOException; - - /** - * Opens a file with a given path, and returns an inputstream representing it's contents. - * - * @param path A file path in normalised format, relative to the mount location. ie: - * "programs/myprogram" - * @return a stream representing the contents of the file - */ - public InputStream openForRead(String path) throws IOException; -} diff --git a/APIs/dan200/computer/api/IPeripheral.java b/APIs/dan200/computer/api/IPeripheral.java deleted file mode 100644 index 18e97b6fc..000000000 --- a/APIs/dan200/computer/api/IPeripheral.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -/** - * The interface that defines a peripheral. This should be implemented by the TileEntity of any - * block that you wish to be interacted with by computer or turtle. - */ -public interface IPeripheral -{ - /** - * Should return a string that uniquely identifies this type of peripheral. This can be queried - * from lua by calling peripheral.getType() - * - * @return A string identifying the type of peripheral. - */ - public String getType(); - - /** - * Should return an array of strings that identify the methods that this peripheral exposes to - * Lua. This will be called once before each attachment, and should not change when called - * multiple times. - * - * @return An array of strings representing method names. - * @see #callMethod - */ - public String[] getMethodNames(); - - /** - * This is called when a lua program on an attached computer calls peripheral.call() with one of - * the methods exposed by getMethodNames().
- *
- * Be aware that this will be called from the ComputerCraft Lua thread, and must be thread-safe - * when interacting with minecraft objects. - * - * @param computer The interface to the computer that is making the call. Remember that multiple - * computers can be attached to a peripheral at once. - * @param context The context of the currently running lua thread. This can be used to wait for - * events or otherwise yield. - * @param method An integer identifying which of the methods from getMethodNames() the computer - * wishes to call. The integer indicates the index into the getMethodNames() table that - * corresponds to the string passed into peripheral.call() - * @param arguments An array of objects, representing the arguments passed into - * peripheral.call().
- * Lua values of type "string" will be represented by Object type String.
- * Lua values of type "number" will be represented by Object type Double.
- * Lua values of type "boolean" will be represented by Object type Boolean.
- * Lua values of any other type will be represented by a null object.
- * This array will be empty if no arguments are passed. - * @return An array of objects, representing values you wish to return to the lua program.
- * Integers, Doubles, Floats, Strings, Booleans and null be converted to their corresponding lua - * type.
- * All other types will be converted to nil.
- * You may return null to indicate no values should be returned. - * @throws Exception If you throw any exception from this function, a lua error will be raised - * with the same message as your exception. Use this to throw appropriate errors if the wrong - * arguments are supplied to your method. - * @see #getMethodNames - */ - public Object[] callMethod(IComputerAccess computer, ILuaContext context, int method, Object[] arguments) throws Exception; - - /** - * Is called before the computer attempts to attach to the peripheral, and should return whether - * to allow the attachment. Use this to restrict the number of computers that can attach, or to - * limit attachments to certain world directions.
- * If true is returned, attach() will be called shortly afterwards, and the computer will be - * able to make method calls. If false is returned, attach() will not be called, and the - * peripheral will be invisible to the computer. - * - * @param side The world direction (0=bottom, 1=top, etc) that the computer lies relative to the - * peripheral. - * @return Whether to allow the attachment, as a boolean. - * @see #attach - */ - public boolean canAttachToSide(int side); - - /** - * Is called when canAttachToSide has returned true, and a computer is attaching to the - * peripheral. This will occur when a peripheral is placed next to an active computer, when a - * computer is turned on next to a peripheral, or when a turtle travels into a square next to a - * peripheral. Between calls to attach() and detach(), the attached computer can make method - * calls on the peripheral using peripheral.call(). This method can be used to keep track of - * which computers are attached to the peripheral, or to take action when attachment occurs.
- *
- * Be aware that this will be called from the ComputerCraft Lua thread, and must be thread-safe - * when interacting with minecraft objects. - * - * @param computer The interface to the computer that is being attached. Remember that multiple - * computers can be attached to a peripheral at once. - * @see #canAttachToSide - * @see #detach - */ - public void attach(IComputerAccess computer); - - /** - * Is called when a computer is detaching from the peripheral. This will occur when a computer - * shuts down, when the peripheral is removed while attached to computers, or when a turtle - * moves away from a square attached to a peripheral. This method can be used to keep track of - * which computers are attached to the peripheral, or to take action when detachment occurs.
- *
- * Be aware that this will be called from the ComputerCraft Lua thread, and must be thread-safe - * when interacting with minecraft objects. - * - * @param computer The interface to the computer that is being detached. Remember that multiple - * computers can be attached to a peripheral at once. - * @see #canAttachToSide - * @see #detach - */ - public void detach(IComputerAccess computer); -} diff --git a/APIs/dan200/computer/api/IPeripheralHandler.java b/APIs/dan200/computer/api/IPeripheralHandler.java deleted file mode 100644 index 18487d854..000000000 --- a/APIs/dan200/computer/api/IPeripheralHandler.java +++ /dev/null @@ -1,15 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -/** - * TODO: Document me - */ -public interface IPeripheralHandler -{ - public IHostedPeripheral getPeripheral( net.minecraft.tileentity.TileEntity tile ); -} diff --git a/APIs/dan200/computer/api/IWritableMount.java b/APIs/dan200/computer/api/IWritableMount.java deleted file mode 100644 index aefc12039..000000000 --- a/APIs/dan200/computer/api/IWritableMount.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.computer.api; - -import java.io.IOException; -import java.io.OutputStream; - -import net.minecraft.world.World; - -/** - * Represents a part of a virtual filesystem that can be mounted onto a computer using - * IComputerAccess.mount() or IComputerAccess.mountWritable(), that can also be written to. Ready - * made implementations of this interface can be created using - * ComputerCraftAPI.createSaveDirMount(), or you're free to implement it yourselves! - * - * @see ComputerCraftAPI#createSaveDirMount(World, String) - * @see IComputerAccess#mountWritable(String, IMount) - * @see IMount - */ -public interface IWritableMount extends IMount -{ - /** - * Creates a directory at a given path inside the virtual file system. - * - * @param path A file path in normalised format, relative to the mount location. ie: - * "programs/mynewprograms" - */ - public void makeDirectory(String path) throws IOException; - - /** - * Deletes a directory at a given path inside the virtual file system. - * - * @param path A file path in normalised format, relative to the mount location. ie: - * "programs/myoldprograms" - */ - public void delete(String path) throws IOException; - - /** - * Opens a file with a given path, and returns an outputstream for writing to it. - * - * @param path A file path in normalised format, relative to the mount location. ie: - * "programs/myprogram" - * @return a stream for writing to - */ - public OutputStream openForWrite(String path) throws IOException; - - /** - * Opens a file with a given path, and returns an outputstream for appending to it. - * - * @param path A file path in normalised format, relative to the mount location. ie: - * "programs/myprogram" - * @return a stream for writing to - */ - public OutputStream openForAppend(String path) throws IOException; - - /** - * Get the ammount of free space on the mount, in bytes. You should decrease this value as the - * user writes to the mount, and write operations should fail once it reaches zero. - * - * @return The ammount of free space, in bytes. - */ - public long getRemainingSpace() throws IOException; -} diff --git a/APIs/dan200/turtle/api/ITurtleAccess.java b/APIs/dan200/turtle/api/ITurtleAccess.java deleted file mode 100644 index f996bf47e..000000000 --- a/APIs/dan200/turtle/api/ITurtleAccess.java +++ /dev/null @@ -1,158 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; -import dan200.computer.api.*; - -/** - * The interface passed to upgrades by turtles, providing methods that they can call. - * This should not be implemented by your classes. Do not interact with turtles except via this interface and ITurtleUpgrade. - */ -public interface ITurtleAccess -{ - /** - * Returns the world in which the turtle resides. - * @return the world in which the turtle resides. - */ - public net.minecraft.world.World getWorld(); - - /** - * Returns a vector containing the integer block co-ordinates at which the turtle resides. - * @return a vector containing the integer block co-ordinates at which the turtle resides. - */ - public net.minecraft.util.Vec3 getPosition(); - - /** - * Returns a vector containing the co-ordinates at which the turtle is rendered. - * This will shift when the turtle is moving. - * @param f The subframe fraction - * @return a vector containing the integer block co-ordinates at which the turtle resides. - */ - public net.minecraft.util.Vec3 getVisualPosition( float f ); - - /** - * Returns the world direction the turtle is currently facing. - * @return the world direction the turtle is currently facing. - */ - public int getFacingDir(); - - /** - * Returns the size of the turtles inventory, in number of slots. This will currently always be 16. - * @return the size of the turtles inventory, in number of slots. This will currently always be 16. - */ - public int getInventorySize(); - - /** - * Returns which slot the turtle currently has selected in its inventory using turtle.select(). - * Unlike the 1-based lua representation, this will be between 0 and getInventorySize() - 1. - * @return which slot the turtle currently has selected in its inventory - */ - public int getSelectedSlot(); - - /** - * Returns the item stack that the turtle has in one of its inventory slots. - * @param index which inventory slot to retreive, should be between 0 and getInventorySize() - 1 - * @return the item stack that the turtle has in one of its inventory slots. May be null. - */ - public net.minecraft.item.ItemStack getSlotContents( int index ); - - /** - * Changes the item stack that the turtle has in one of its inventory slots. - * @param index which inventory slot to change, should be between 0 and getInventorySize() - 1 - * @param stack an item stack to put in the slot. May be null. - */ - public void setSlotContents( int index, net.minecraft.item.ItemStack stack ); - - /** - * Tries to store an item stack into the turtles current inventory, starting from the turtles - * currently selected inventory slot. - * @param stack The item stack to try and store. - * @return true if the stack was completely stored in the inventory, false if - * it was only partially stored, or could not fit at all. If false is returned - * and the stack was partially stored, the ItemStack passed into "stack" will now - * represent the stack of items that is left over. - */ - public boolean storeItemStack( net.minecraft.item.ItemStack stack ); - - /** - * Drops an item stack from the turtle onto the floor, or into an inventory is there is one - * adjacent to the turtle in the direction specified. - * @param stack The item stack to drop. - * @param dir The world direction to drop the item - * @return true if the stack was dropped, or completely stored in the adjacent inventory, false if - * it was only partially stored in the adjacent inventory, or could not fit at all. If false is returned - * and the stack was partially stored, the ItemStack passed into "stack" will now - * represent the stack of items that is left over. - */ - public boolean dropItemStack( net.minecraft.item.ItemStack stack, int dir ); - - /** - * "Deploys" an item stack in the direction specified. This simulates a player right clicking, and calls onItemUse() on the Item class. - * Will return true if some kind of deployment happened, and may modify the item stack. For block item types, this can be - * used to place blocks. Some kinds of items (such as shears when facing a sheep) may modify the turtles inventory during this call. - * @param stack The item stack to deploy - * @param dir The world direction to deploy the item - * @return true if the stack was deployed, false if it was not. - */ - public boolean deployWithItemStack( net.minecraft.item.ItemStack stack, int dir ); - - /** - * Tries to "attack" entities with an item stack in the direction specified. This simulates a player left clicking, but will - * not affect blocks. If an entity is attacked and killed during this call, its dropped items will end up in the turtles - * inventory. - * @param stack The item stack to attack with - * @param dir The world direction to attack with the item - * @return true if something was attacked, false if it was not - */ - public boolean attackWithItemStack( net.minecraft.item.ItemStack stack, int dir, float damageMultiplier ); - - /** - * Returns the current fuel level of the turtle, this is the same integer returned by turtle.getFuelLevel(), - * that decreases by 1 every time the turtle moves. Can be used to have your tool or peripheral require or supply - * fuel to the turtle. - * @return the fuel level - */ - public int getFuelLevel(); - - /** - * Tries to increase the fuel level of a turtle by burning an item stack. If the item passed in is a fuel source, fuel - * will increase and true will be returned. Otherwise, nothing will happen and false will be returned. - * @param stack The stack to try to refuel with - * @return Whether the turtle was refueled - */ - public boolean refuelWithItemStack( net.minecraft.item.ItemStack stack ); - - /** - * Removes some fuel from the turtles fuel supply. Negative numbers can be passed in to INCREASE the fuel level of the turtle. - * @return Whether the turtle was able to consume the ammount of fuel specified. Will return false if you supply a number - * greater than the current fuel level of the turtle. - */ - public boolean consumeFuel( int fuel ); - - /** - * Adds a custom command to the turtles command queue. Unlike peripheral methods, these custom commands will be executed - * on the main thread, so are guaranteed to be able to access Minecraft objects safely, and will be queued up - * with the turtles standard movement and tool commands. An issued command will return an unique integer, which will - * be supplied as a parameter to a "turtle_response" event issued to the turtle after the command has completed. Look at the - * lua source code for "rom/apis/turtle" for how to build a lua wrapper around this functionality. - * @param handler an object which will execute the custom command when its point in the queue is reached - * @return the unique command identifier described above - * @see ITurtleCommandHandler - */ - public int issueCommand( ITurtleCommandHandler handler ); - - /** - * Returns the upgrade on the specified side of the turtle, if there is one. - * @return the upgrade on the specified side of the turtle, if there is one. - */ - public ITurtleUpgrade getUpgrade( TurtleSide side ); - - /** - * Returns the peripheral created by the upgrade on the specified side of the turtle, if there is one. - * @return the peripheral created by the upgrade on the specified side of the turtle, if there is one. - */ - public IHostedPeripheral getPeripheral( TurtleSide side ); -} diff --git a/APIs/dan200/turtle/api/ITurtleCommandHandler.java b/APIs/dan200/turtle/api/ITurtleCommandHandler.java deleted file mode 100644 index 255d28e22..000000000 --- a/APIs/dan200/turtle/api/ITurtleCommandHandler.java +++ /dev/null @@ -1,25 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; - -/** - * An interface for objects executing custom turtle commands, used with ITurtleAccess.issueCommand - * @see ITurtleAccess#issueCommand( ITurtleCommandHandler ) - */ -public interface ITurtleCommandHandler -{ - /** - * Will be called by the turtle on the main thread when it is time to execute the custom command. - * The handler should either perform the work of the command, and return true for success, or return - * false to indicate failure if the command cannot be executed at this time. - * @param turtle access to the turtle for whom the command was issued - * @return true for success, false for failure. If true is returned, the turtle will wait 0.4 seconds - * before executing the next command in its queue, as it does for the standard turtle commands. - * @see ITurtleAccess#issueCommand( ITurtleCommandHandler ) - */ - public boolean handleCommand( ITurtleAccess turtle ); -} diff --git a/APIs/dan200/turtle/api/ITurtleUpgrade.java b/APIs/dan200/turtle/api/ITurtleUpgrade.java deleted file mode 100644 index 3af5127b6..000000000 --- a/APIs/dan200/turtle/api/ITurtleUpgrade.java +++ /dev/null @@ -1,92 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; -import net.minecraft.util.Icon; -import dan200.computer.api.*; - -/** - * The primary interface for defining an upgrade for Turtles. A turtle upgrade - * can either be a new tool, or a new peripheral. - * @see TurtleAPI#registerUpgrade( ITurtleUpgrade ) - */ -public interface ITurtleUpgrade -{ - /** - * Gets a unique numerical identifier representing this type of turtle upgrade. - * Like Minecraft block and item IDs, you should strive to make this number unique - * among all turtle upgrades that have been released for ComputerCraft. - * The ID must be in the range 64 to 255, as the ID is stored as an 8-bit value, - * and 0-64 is reserved for future use by ComputerCraft. The upgrade will - * fail registration if an already used ID is specified. - * @see TurtleAPI#registerUpgrade( ITurtleUpgrade ) - */ - public int getUpgradeID(); - - /** - * Return a String to describe this type of upgrade in turtle item names. - * Examples of built-in adjectives are "Wireless", "Mining" and "Crafty". - */ - public String getAdjective(); - - /** - * Return whether this upgrade adds a tool or a peripheral to the turtle. - * Currently, turtle crafting is restricted to one tool & one peripheral per turtle. - * @see TurtleUpgradeType for the differences between the two. - */ - public TurtleUpgradeType getType(); - - /** - * Return an item stack representing the type of item that a turtle must be crafted - * with to create a turtle which holds this upgrade. - * Currently, turtle crafting is restricted to one tool & one peripheral per turtle. - */ - public net.minecraft.item.ItemStack getCraftingItem(); - - /** - * Return whether this turtle upgrade is an easter egg, and should be attempted to be hidden - * from the creative mode inventory and recipe book plugins. - */ - public boolean isSecret(); - - /** - * Will only be called for Peripheral upgrades. Creates a peripheral for a turtle - * being placed using this upgrade. The peripheral created will be stored - * for the lifetime of the turtle, will have update() called once-per-tick, and will be - * attach'd detach'd and have methods called in the same manner as a Computer peripheral. - * @param turtle Access to the turtle that the peripheral is being created for. - * @param side Which side of the turtle (left or right) that the upgrade resides on. - * @returns The newly created peripheral. You may return null if this upgrade is a Tool - * and this method is not expected to be called. - */ - public IHostedPeripheral createPeripheral( ITurtleAccess turtle, TurtleSide side ); - - /** - * Will only be called for Tool upgrades. Called when turtle.dig() or turtle.attack() is called - * by the turtle, and the tool is required to do some work. - * @param turtle Access to the turtle that the tool resides on. - * @param side Which side of the turtle (left or right) the tool resides on. - * @param verb Which action (dig or attack) the turtle is being called on to perform. - * @param direction Which world direction the action should be performed in, relative to the turtles - * position. This will either be up, down, or the direction the turtle is facing, depending on - * whether dig, digUp or digDown was called. - * @return Whether the turtle was able to perform the action, and hence whether the turtle.dig() - * or turtle.attack() lua method should return true. If true is returned, the tool will perform - * a swinging animation. You may return false if this upgrade is a Peripheral - * and this method is not expected to be called. - */ - public boolean useTool( ITurtleAccess turtle, TurtleSide side, TurtleVerb verb, int direction ); - - /** - * Called to obtain the Icon to be used when rendering a turtle peripheral. Needs to be a "block" - * type Icon for now, as there is no way to determine which texture sheet an Icon is from by the - * Icon itself. - * @param turtle Access to the turtle that the peripheral resides on. - * @param side Which side of the turtle (left or right) the peripheral resides on. - * @return The Icon that you wish to be used to render your turtle peripheral. - */ - public Icon getIcon( ITurtleAccess turtle, TurtleSide side ); -} diff --git a/APIs/dan200/turtle/api/TurtleAPI.java b/APIs/dan200/turtle/api/TurtleAPI.java deleted file mode 100644 index 3e3c5c1f2..000000000 --- a/APIs/dan200/turtle/api/TurtleAPI.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; -import java.lang.reflect.Method; - -/** - * The static entry point to the ComputerCraft Turtle Upgrade API. - * Members in this class must be called after mod_CCTurtle has been initialised, - * but may be called before it is fully loaded. - */ -public class TurtleAPI -{ - /** - * Registers a new turtle upgrade for use in ComputerCraft. After calling this, - * users should be able to craft Turtles with your new upgrade. It is recommended to call - * this during the load() method of your mod. - * @throws Exception if you try to register an upgrade with an already used or reserved upgradeID - * @see ITurtleUpgrade - */ - public static void registerUpgrade( ITurtleUpgrade upgrade ) - { - if( upgrade != null ) - { - findCCTurtle(); - if( ccTurtle_registerTurtleUpgrade != null ) - { - try { - ccTurtle_registerTurtleUpgrade.invoke( null, new Object[]{ upgrade } ); - } catch( Exception e ) { - // It failed - } - } - } - } - - // The functions below here are private, and are used to interface with the non-API ComputerCraft classes. - // Reflection is used here so you can develop your mod in MCP without decompiling ComputerCraft and including - // it in your solution. - - private static void findCCTurtle() - { - if( !ccTurtleSearched ) { - // Search for CCTurtle - try { - ccTurtle = Class.forName( "dan200.CCTurtle" ); - ccTurtle_registerTurtleUpgrade = findCCTurtleMethod( "registerTurtleUpgrade", new Class[] { - ITurtleUpgrade.class - } ); - - } catch( ClassNotFoundException e ) { - System.out.println("ComputerCraftAPI: CCTurtle not found."); - - } finally { - ccTurtleSearched = true; - - } - } - } - - private static Method findCCTurtleMethod( String name, Class[] args ) - { - try { - return ccTurtle.getMethod( name, args ); - - } catch( NoSuchMethodException e ) { - System.out.println("ComputerCraftAPI: CCTurtle method " + name + " not found."); - return null; - } - } - - private static boolean ccTurtleSearched = false; - private static Class ccTurtle = null; - private static Method ccTurtle_registerTurtleUpgrade = null; -} diff --git a/APIs/dan200/turtle/api/TurtleSide.java b/APIs/dan200/turtle/api/TurtleSide.java deleted file mode 100644 index 3459d7772..000000000 --- a/APIs/dan200/turtle/api/TurtleSide.java +++ /dev/null @@ -1,23 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; - -/** - * An enum representing the two sides of the turtle that a turtle upgrade might reside. - */ -public enum TurtleSide -{ - /** - * The turtles left side (where the pickaxe usually is on a Wireless Mining Turtle) - */ - Left, - - /** - * The turtles right side (where the modem usually is on a Wireless Mining Turtle) - */ - Right, -} diff --git a/APIs/dan200/turtle/api/TurtleUpgradeType.java b/APIs/dan200/turtle/api/TurtleUpgradeType.java deleted file mode 100644 index a65fed8ac..000000000 --- a/APIs/dan200/turtle/api/TurtleUpgradeType.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; - -/** - * An enum representing the two different types of upgrades that an ITurtleUpgrade - * implementation can add to a turtle. - * @see ITurtleUpgrade - */ -public enum TurtleUpgradeType -{ - /** - * A tool is rendered as an item on the side of the turtle, and responds to the turtle.dig() - * and turtle.attack() methods (Such as pickaxe or sword on Mining and Melee turtles). - */ - Tool, - - /** - * A peripheral adds a special peripheral which is attached to the side of the turtle, - * and can be interacted with the peripheral API (Such as the modem on Wireless Turtles). - */ - Peripheral, -} diff --git a/APIs/dan200/turtle/api/TurtleVerb.java b/APIs/dan200/turtle/api/TurtleVerb.java deleted file mode 100644 index a1b2531af..000000000 --- a/APIs/dan200/turtle/api/TurtleVerb.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This file is part of the public ComputerCraft API - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2013. This API may be redistributed unmodified and in full only. - * For help using the API, and posting your mods, visit the forums at computercraft.info. - */ - -package dan200.turtle.api; - -/** - * An enum representing the two different actions that an ITurtleUpgrade of type - * Tool may be called on to perform by a turtle. - * @see ITurtleUpgrade - * @see ITurtleUpgrade#useTool - */ -public enum TurtleVerb -{ - /** - * The turtle called turtle.dig(), turtle.digUp() or turtle.digDown() - */ - Dig, - - /** - * The turtle called turtle.attack(), turtle.attackUp() or turtle.attackDown() - */ - Attack, -} diff --git a/APIs/ic2/api/energy/event/EnergyTileEvent.java b/APIs/ic2/api/energy/event/EnergyTileEvent.java deleted file mode 100644 index eb245d3b5..000000000 --- a/APIs/ic2/api/energy/event/EnergyTileEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package ic2.api.energy.event; - -import net.minecraft.tileentity.TileEntity; - -import net.minecraftforge.event.world.WorldEvent; - -import ic2.api.energy.tile.IEnergyTile; - -/** - * Base class for energy net events, don't use it directly. - * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. - */ -public class EnergyTileEvent extends WorldEvent { - public final IEnergyTile energyTile; - - public EnergyTileEvent(IEnergyTile energyTile) { - super(((TileEntity) energyTile).worldObj); - - this.energyTile = energyTile; - } -} - diff --git a/APIs/ic2/api/energy/event/EnergyTileLoadEvent.java b/APIs/ic2/api/energy/event/EnergyTileLoadEvent.java deleted file mode 100644 index 6b342d32e..000000000 --- a/APIs/ic2/api/energy/event/EnergyTileLoadEvent.java +++ /dev/null @@ -1,26 +0,0 @@ -package ic2.api.energy.event; - -import ic2.api.energy.tile.IEnergyTile; - -/** - * Event announcing new energy tiles. - * - * This event notifies subscribers of loaded energy tiles, e.g. after getting - * loaded through the chunk they are in or after being placed down by the - * player or another deployer mechanism. - * - * Every energy tile which wants to get connected to the IC2 Energy Network has - * to either post this event or alternatively call EnergyNet.addTileEntity(). - * - * You may use this event to build a static representation of energy tiles for - * your own energy grid implementation if you need to. It's not required if you - * always lookup energy paths on demand. - * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. - */ -public class EnergyTileLoadEvent extends EnergyTileEvent { - public EnergyTileLoadEvent(IEnergyTile energyTile) { - super(energyTile); - } -} - diff --git a/APIs/ic2/api/energy/event/EnergyTileUnloadEvent.java b/APIs/ic2/api/energy/event/EnergyTileUnloadEvent.java deleted file mode 100644 index 58a4a0643..000000000 --- a/APIs/ic2/api/energy/event/EnergyTileUnloadEvent.java +++ /dev/null @@ -1,27 +0,0 @@ -package ic2.api.energy.event; - -import ic2.api.energy.tile.IEnergyTile; - -/** - * Event announcing terminated energy tiles. - * - * This event notifies subscribers of unloaded energy tiles, e.g. after getting - * unloaded through the chunk they are in or after being destroyed by the - * player or another block pick/destruction mechanism. - * - * Every energy tile which wants to get disconnected from the IC2 Energy - * Network has to either post this event or alternatively call - * EnergyNet.removeTileEntity(). - * - * You may use this event to build a static representation of energy tiles for - * your own energy grid implementation if you need to. It's not required if you - * always lookup energy paths on demand. - * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. - */ -public class EnergyTileUnloadEvent extends EnergyTileEvent { - public EnergyTileUnloadEvent(IEnergyTile energyTile) { - super(energyTile); - } -} - diff --git a/APIs/ic2/api/energy/tile/IEnergyAcceptor.java b/APIs/ic2/api/energy/tile/IEnergyAcceptor.java deleted file mode 100644 index 8b1d75e19..000000000 --- a/APIs/ic2/api/energy/tile/IEnergyAcceptor.java +++ /dev/null @@ -1,27 +0,0 @@ -package ic2.api.energy.tile; - -import net.minecraft.tileentity.TileEntity; - -import net.minecraftforge.common.ForgeDirection; - -/** - * For internal/multi-block usage only. - * - * @see IEnergySink - * @see IEnergyConductor - * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. - */ -public interface IEnergyAcceptor extends IEnergyTile { - /** - * Determine if this acceptor can accept current from an adjacent emitter in a direction. - * - * The TileEntity in the emitter parameter is what was originally added to the energy net, - * which may be normal in-world TileEntity, a delegate or an IMetaDelegate. - * - * @param emitter energy emitter - * @param direction direction the energy is being received from - */ - boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction); -} - diff --git a/APIs/ic2/api/energy/tile/IEnergyConductor.java b/APIs/ic2/api/energy/tile/IEnergyConductor.java deleted file mode 100644 index 16965afe1..000000000 --- a/APIs/ic2/api/energy/tile/IEnergyConductor.java +++ /dev/null @@ -1,53 +0,0 @@ -package ic2.api.energy.tile; - -/** - * Tile entities which conduct energy pulses without buffering (mostly cables) have to implement this - * interface. - * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. - */ -public interface IEnergyConductor extends IEnergyAcceptor, IEnergyEmitter { - /** - * Energy loss for the conductor in EU per block. - * - * @return Energy loss - */ - double getConductionLoss(); - - /** - * Amount of energy the insulation will handle before shocking nearby players and mobs. - * - * @return Insulation energy absorption in EU - */ - int getInsulationEnergyAbsorption(); - - /** - * Amount of energy the insulation will handle before it is destroyed. - * Ensure that this value is greater than the insulation energy absorption + 64. - * - * @return Insulation-destroying energy in EU - */ - int getInsulationBreakdownEnergy(); - - /** - * Amount of energy the conductor will handle before it melts. - * - * @return Conductor-destroying energy in EU - */ - int getConductorBreakdownEnergy(); - - /** - * Remove the conductor's insulation if the insulation breakdown energy was exceeded. - * - * @see #getInsulationBreakdownEnergy() - */ - void removeInsulation(); - - /** - * Remove the conductor if the conductor breakdown energy was exceeded. - * - * @see #getConductorBreakdownEnergy() - */ - void removeConductor(); -} - diff --git a/APIs/ic2/api/energy/tile/IEnergyEmitter.java b/APIs/ic2/api/energy/tile/IEnergyEmitter.java deleted file mode 100644 index 2379252c1..000000000 --- a/APIs/ic2/api/energy/tile/IEnergyEmitter.java +++ /dev/null @@ -1,28 +0,0 @@ -package ic2.api.energy.tile; - -import net.minecraft.tileentity.TileEntity; - -import net.minecraftforge.common.ForgeDirection; - -/** - * For internal/multi-block usage only. - * - * @see IEnergySource - * @see IEnergyConductor - * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. - */ -public interface IEnergyEmitter extends IEnergyTile { - /** - * Determine if this emitter can emit energy to an adjacent receiver. - * - * The TileEntity in the receiver parameter is what was originally added to the energy net, - * which may be normal in-world TileEntity, a delegate or an IMetaDelegate. - * - * @param receiver receiver, may be an IMetaDelegate - * @param direction direction the receiver is from the emitter - * @return Whether energy should be emitted - */ - boolean emitsEnergyTo(TileEntity receiver, ForgeDirection direction); -} - diff --git a/APIs/ic2/api/energy/tile/IEnergySink.java b/APIs/ic2/api/energy/tile/IEnergySink.java deleted file mode 100644 index 9826d54e0..000000000 --- a/APIs/ic2/api/energy/tile/IEnergySink.java +++ /dev/null @@ -1,46 +0,0 @@ -package ic2.api.energy.tile; - -import net.minecraftforge.common.ForgeDirection; - -/** - * Allows a tile entity (mostly a machine) to receive energy. - * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. - */ -public interface IEnergySink extends IEnergyAcceptor { - /** - * Determine how much energy the sink accepts. - * - * This value is unrelated to getMaxSafeInput(). - * - * Make sure that injectEnergy() does accepts energy if demandsEnergy() returns anything > 0. - * - * @return max accepted input in eu - */ - double demandedEnergyUnits(); - - /** - * Transfer energy to the sink. - * - * It's highly recommended to accept all energy by letting the internal buffer overflow to - * increase the performance and accuracy of the distribution simulation. - * - * @param directionFrom direction from which the energy comes from - * @param amount energy to be transferred - * @return Energy not consumed (leftover) - */ - double injectEnergyUnits(ForgeDirection directionFrom, double amount); - - /** - * Determine the amount of eu which can be safely injected into the specific energy sink without exploding. - * - * Typical values are 32 for LV, 128 for MV, 512 for HV and 2048 for EV. A value of Integer.MAX_VALUE indicates no - * limit. - * - * This value is unrelated to demandsEnergy(). - * - * @return max safe input in eu - */ - int getMaxSafeInput(); -} - diff --git a/APIs/ic2/api/energy/tile/IEnergySource.java b/APIs/ic2/api/energy/tile/IEnergySource.java deleted file mode 100644 index 1a8bc0a5f..000000000 --- a/APIs/ic2/api/energy/tile/IEnergySource.java +++ /dev/null @@ -1,26 +0,0 @@ -package ic2.api.energy.tile; - -/** - * Allows a tile entity (mostly a generator) to emit energy. - * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. - */ -public interface IEnergySource extends IEnergyEmitter { - /** - * Energy output provided by the source this tick. - * This is typically Math.min(stored energy, max output/tick). - * - * @return Energy offered this tick - */ - double getOfferedEnergy(); - - /** - * Draw energy from this source's buffer. - * - * If the source doesn't have a buffer, this is a no-op. - * - * @param amount amount of EU to draw, may be negative - */ - void drawEnergy(double amount); -} - diff --git a/APIs/ic2/api/energy/tile/IEnergyTile.java b/APIs/ic2/api/energy/tile/IEnergyTile.java deleted file mode 100644 index 932847f85..000000000 --- a/APIs/ic2/api/energy/tile/IEnergyTile.java +++ /dev/null @@ -1,14 +0,0 @@ -package ic2.api.energy.tile; - -/** - * For internal usage only, base class for all energy tiles. - * - * @see IEnergySink - * @see IEnergySource - * @see IEnergyConductor - * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. - */ -public interface IEnergyTile { -} - diff --git a/APIs/ic2/api/energy/tile/IMetaDelegate.java b/APIs/ic2/api/energy/tile/IMetaDelegate.java deleted file mode 100644 index 0cb1a34dd..000000000 --- a/APIs/ic2/api/energy/tile/IMetaDelegate.java +++ /dev/null @@ -1,32 +0,0 @@ -package ic2.api.energy.tile; - -import java.util.List; - -import net.minecraft.tileentity.TileEntity; - -/** - * Interface for grouping multi-block structures to a single energy net delegate. - * - * The energy net uses TileEntity to refer to a specific xyz+world position. If multiple of those - * positions should belong to the same functional structure, i.e. they consume or produce energy - * only once for the whole multi-block instead of once per every single block, this interface - * allows to do so. - * - * The tile entity implementing IMetaDelegate has to be added/removed to/from the energy net - * instead of every single sub-TileEntity. The energy net interaction will be handled by the - * IMetaDelegate TileEntity as well. - * - * The sub tile array TileEntity[] just provides optional connectivity (IEnergyAcceptor, - * IEnergyEmitter) and mandatory position (x, y, z, World) data. - * If the connectivity data on the sub tile is missing, the meta delegate is queried instead. - * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. - */ -public interface IMetaDelegate extends IEnergyTile { - /** - * Get the sub-TileEntities belonging to this Meta TileEntity. - * - * @return sub-TileEntity array - */ - List getSubTiles(); -} diff --git a/APIs/ic2/api/item/ElectricItem.java b/APIs/ic2/api/item/ElectricItem.java deleted file mode 100644 index 511220fd8..000000000 --- a/APIs/ic2/api/item/ElectricItem.java +++ /dev/null @@ -1,108 +0,0 @@ -package ic2.api.item; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -/** - * Allows for charging, discharging and using electric items (IElectricItem). - * - * The charge or remaining capacity of an item can be determined by calling charge/discharge with - * ignoreTransferLimit and simulate set to true. - */ -public final class ElectricItem { - /** - * IElectricItemManager to use for interacting with IElectricItem ItemStacks. - * - * This manager will act as a gateway and delegate the tasks to the final implementation - * (rawManager or a custom one) as necessary. - */ - public static IElectricItemManager manager; - - /** - * Standard IElectricItemManager implementation, only call it directly from another - * IElectricItemManager. Use manager instead. - */ - public static IElectricItemManager rawManager; - - /** - * Charge an item with a specified amount of energy - * - * @param itemStack electric item's stack - * @param amount amount of energy to charge in EU - * @param tier tier of the charging device, has to be at least as high as the item to charge - * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() - * @param simulate don't actually change the item, just determine the return value - * @return Energy transferred into the electric item - * - * @deprecated use manager.charge() instead - */ - @Deprecated - public static int charge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate) { - return manager.charge(itemStack, amount, tier, ignoreTransferLimit, simulate); - } - - /** - * Discharge an item by a specified amount of energy - * - * @param itemStack electric item's stack - * @param amount amount of energy to charge in EU - * @param tier tier of the discharging device, has to be at least as high as the item to discharge - * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() - * @param simulate don't actually discharge the item, just determine the return value - * @return Energy retrieved from the electric item - * - * @deprecated use manager.discharge() instead - */ - @Deprecated - public static int discharge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate) { - return manager.discharge(itemStack, amount, tier, ignoreTransferLimit, simulate); - } - - /** - * Determine if the specified electric item has at least a specific amount of EU. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * BatPacks are not taken into account. - * - * @param itemStack electric item's stack - * @param amount minimum amount of energy required - * @return true if there's enough energy - * - * @deprecated use manager.canUse() instead - */ - @Deprecated - public static boolean canUse(ItemStack itemStack, int amount) { - return manager.canUse(itemStack, amount); - } - - /** - * Try to retrieve a specific amount of energy from an Item, and if applicable, a BatPack. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * - * @param itemStack electric item's stack - * @param amount amount of energy to discharge in EU - * @param player player holding the item - * @return true if the operation succeeded - * - * @deprecated use manager.use() instead - */ - @Deprecated - public static boolean use(ItemStack itemStack, int amount, EntityPlayer player) { - return manager.use(itemStack, amount, player); - } - - /** - * Charge an item from the BatPack a player is wearing. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * use() already contains this functionality. - * - * @param itemStack electric item's stack - * @param player player holding the item - * - * @deprecated use manager.chargeFromArmor() instead - */ - @Deprecated - public static void chargeFromArmor(ItemStack itemStack, EntityPlayer player) { - manager.chargeFromArmor(itemStack, player); - } -} - diff --git a/APIs/ic2/api/item/IBoxable.java b/APIs/ic2/api/item/IBoxable.java deleted file mode 100644 index bca2cc0dc..000000000 --- a/APIs/ic2/api/item/IBoxable.java +++ /dev/null @@ -1,14 +0,0 @@ -package ic2.api.item; - -import net.minecraft.item.ItemStack; - - -public interface IBoxable { - /** - * Determine whether an item can be stored in a toolbox or not. - * - * @param itemstack item to be stored - * @return Whether to store the item in the toolbox or not - */ - public abstract boolean canBeStoredInToolbox(ItemStack itemstack); -} diff --git a/APIs/ic2/api/item/ICustomElectricItem.java b/APIs/ic2/api/item/ICustomElectricItem.java deleted file mode 100644 index 9f4b1a684..000000000 --- a/APIs/ic2/api/item/ICustomElectricItem.java +++ /dev/null @@ -1,67 +0,0 @@ -package ic2.api.item; - -import net.minecraft.item.ItemStack; - -/** - * Provides the ability to store energy on the implementing item. - * - * This interface is a special version of IElectricItem which delegates the implementation of - * charge(), discharge() and canUse() to the implementing Item. - * - * The default implementation (when not using ICustomElectricItem) does the following: - * - store and retrieve the charge - * - handle charging, taking amount, tier, transfer limit, canProvideEnergy and simulate into account - * - replace item IDs if appropriate (getChargedItemId() and getEmptyItemId()) - * - update and manage the damage value for the visual charge indicator - * - * @note ICustomElectricItem must not call the ElectricItem methods charge, discharge or canUse - * - * @deprecated Use ISpecialElectricItem instead. - */ -@Deprecated -public interface ICustomElectricItem extends IElectricItem { - /** - * Charge an item with a specified amount of energy - * - * @param itemStack electric item's stack - * @param amount amount of energy to charge in EU - * @param tier tier of the charging device, has to be at least as high as the item to charge - * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() - * @param simulate don't actually change the item, just determine the return value - * @return Energy transferred into the electric item - */ - public int charge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate); - - /** - * Discharge an item by a specified amount of energy - * - * @param itemStack electric item's stack - * @param amount amount of energy to charge in EU - * @param tier tier of the discharging device, has to be at least as high as the item to discharge - * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() - * @param simulate don't actually discharge the item, just determine the return value - * @return Energy retrieved from the electric item - */ - public int discharge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate); - - /** - * Determine if the specified electric item has at least a specific amount of EU. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * BatPacks are not taken into account. - * - * @param itemStack electric item's stack - * @param amount minimum amount of energy required - * @return true if there's enough energy - */ - public boolean canUse(ItemStack itemStack, int amount); - - /** - * Determine whether to show the charge tool tip with NEI or other means. - * - * Return false if IC2's handler is incompatible, you want to implement your own or you don't - * want to display the charge at all. - * - * @return true to show the tool tip (x/y EU) - */ - public boolean canShowChargeToolTip(ItemStack itemStack); -} diff --git a/APIs/ic2/api/item/IDebuggable.java b/APIs/ic2/api/item/IDebuggable.java deleted file mode 100644 index b1fa66bc3..000000000 --- a/APIs/ic2/api/item/IDebuggable.java +++ /dev/null @@ -1,23 +0,0 @@ -package ic2.api.item; - - - -/** - * Allows a tile entity to output a debug message when the debugItem is used on it. - * Suggestions by Myrathi - */ -public abstract interface IDebuggable { - /** - * Checks if the tile entity is in a state that can be debugged. - * - * @return True if the tile entity can be debugged - */ - public abstract boolean isDebuggable(); - - /** - * Gets the debug text for the tile entity. - * - * @return The text that the debugItem should show - */ - public abstract String getDebugText(); -} diff --git a/APIs/ic2/api/item/IElectricItem.java b/APIs/ic2/api/item/IElectricItem.java deleted file mode 100644 index adaf3b76d..000000000 --- a/APIs/ic2/api/item/IElectricItem.java +++ /dev/null @@ -1,54 +0,0 @@ -package ic2.api.item; - -import net.minecraft.item.ItemStack; - -/** - * Provides the ability to store energy on the implementing item. - * - * The item should have a maximum damage of 13. - */ -public interface IElectricItem { - /** - * Determine if the item can be used in a machine or as an armor part to supply energy. - * - * @return Whether the item can supply energy - */ - boolean canProvideEnergy(ItemStack itemStack); - - /** - * Get the item ID to use for a charge energy greater than 0. - * - * @return Item ID to use - */ - int getChargedItemId(ItemStack itemStack); - - /** - * Get the item ID to use for a charge energy of 0. - * - * @return Item ID to use - */ - int getEmptyItemId(ItemStack itemStack); - - /** - * Get the item's maximum charge energy in EU. - * - * @return Maximum charge energy - */ - int getMaxCharge(ItemStack itemStack); - - /** - * Get the item's tier, lower tiers can't send energy to higher ones. - * Batteries are Tier 1, Energy Crystals are Tier 2, Lapotron Crystals are Tier 3. - * - * @return Item's tier - */ - int getTier(ItemStack itemStack); - - /** - * Get the item's transfer limit in EU per transfer operation. - * - * @return Transfer limit - */ - int getTransferLimit(ItemStack itemStack); -} - diff --git a/APIs/ic2/api/item/IElectricItemManager.java b/APIs/ic2/api/item/IElectricItemManager.java deleted file mode 100644 index 88eab750b..000000000 --- a/APIs/ic2/api/item/IElectricItemManager.java +++ /dev/null @@ -1,92 +0,0 @@ -package ic2.api.item; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; - -/** - * This interface specifies a manager to handle the various tasks for electric items. - * - * The default implementation does the following: - * - store and retrieve the charge - * - handle charging, taking amount, tier, transfer limit, canProvideEnergy and simulate into account - * - replace item IDs if appropriate (getChargedItemId() and getEmptyItemId()) - * - update and manage the damage value for the visual charge indicator - * - * @note If you're implementing your own variant (ISpecialElectricItem), you can delegate to the - * default implementations through ElectricItem.rawManager. The default implementation is designed - * to minimize its dependency on its own constraints/structure and delegates most work back to the - * more atomic features in the gateway manager. - */ -public interface IElectricItemManager { - /** - * Charge an item with a specified amount of energy - * - * @param itemStack electric item's stack - * @param amount amount of energy to charge in EU - * @param tier tier of the charging device, has to be at least as high as the item to charge - * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() - * @param simulate don't actually change the item, just determine the return value - * @return Energy transferred into the electric item - */ - int charge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate); - - /** - * Discharge an item by a specified amount of energy - * - * @param itemStack electric item's stack - * @param amount amount of energy to charge in EU - * @param tier tier of the discharging device, has to be at least as high as the item to discharge - * @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit() - * @param simulate don't actually discharge the item, just determine the return value - * @return Energy retrieved from the electric item - */ - int discharge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate); - - /** - * Determine the charge level for the specified item - * - * @param itemStack ItemStack containing the electric item - * @return charge level in EU - */ - int getCharge(ItemStack itemStack); - - /** - * Determine if the specified electric item has at least a specific amount of EU. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * BatPacks are not taken into account. - * - * @param itemStack electric item's stack - * @param amount minimum amount of energy required - * @return true if there's enough energy - */ - boolean canUse(ItemStack itemStack, int amount); - - /** - * Try to retrieve a specific amount of energy from an Item, and if applicable, a BatPack. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * - * @param itemStack electric item's stack - * @param amount amount of energy to discharge in EU - * @param entity entity holding the item - * @return true if the operation succeeded - */ - boolean use(ItemStack itemStack, int amount, EntityLivingBase entity); - - /** - * Charge an item from the BatPack a player is wearing. - * This is supposed to be used in the item code during operation, for example if you want to implement your own electric item. - * use() already contains this functionality. - * - * @param itemStack electric item's stack - * @param entity entity holding the item - */ - void chargeFromArmor(ItemStack itemStack, EntityLivingBase entity); - - /** - * Get the tool tip to display for electric items. - * - * @param itemStack ItemStack to determine the tooltip for - * @return tool tip string or null for none - */ - String getToolTip(ItemStack itemStack); -} diff --git a/APIs/ic2/api/item/IItemHudInfo.java b/APIs/ic2/api/item/IItemHudInfo.java deleted file mode 100644 index e2b8610da..000000000 --- a/APIs/ic2/api/item/IItemHudInfo.java +++ /dev/null @@ -1,27 +0,0 @@ -package ic2.api.item; - -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface IItemHudInfo { - -/* - Add Info to Nano- and Quantum-Suit Helm Hud - for itemStack - - @Override - public List getHudInfo(ItemStack itemStack) { - List info = new LinkedList(); - info.add("i am a Cool Item"); - info.add("and have Cool info"); - return info; - } - - - */ - - public List getHudInfo(ItemStack itemStack); - -} diff --git a/APIs/ic2/api/item/IMetalArmor.java b/APIs/ic2/api/item/IMetalArmor.java deleted file mode 100644 index 16ffd24e5..000000000 --- a/APIs/ic2/api/item/IMetalArmor.java +++ /dev/null @@ -1,20 +0,0 @@ -package ic2.api.item; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -/** - * Armor items implementing this can be considered metal armor. - * - * Currently used for determining which boots can be used to slide up a magnetic pole. - */ -public interface IMetalArmor { - /** - * Determine if the given armor piece is metal armor. - * - * @param itemstack Armor piece as worn by the player - * @param player The player - * @return Whether the armor piece is metal armor - */ - public boolean isMetalArmor(ItemStack itemstack, EntityPlayer player); -} diff --git a/APIs/ic2/api/item/ISpecialElectricItem.java b/APIs/ic2/api/item/ISpecialElectricItem.java deleted file mode 100644 index a7302f530..000000000 --- a/APIs/ic2/api/item/ISpecialElectricItem.java +++ /dev/null @@ -1,13 +0,0 @@ -package ic2.api.item; - -import net.minecraft.item.ItemStack; - -public interface ISpecialElectricItem extends IElectricItem { - /** - * Supply a custom IElectricItemManager. - * - * @param itemStack ItemStack to get the manager for - * @return IElectricItemManager instance - */ - IElectricItemManager getManager(ItemStack itemStack); -} diff --git a/APIs/ic2/api/item/ITerraformingBP.java b/APIs/ic2/api/item/ITerraformingBP.java deleted file mode 100644 index 58f7e2fe7..000000000 --- a/APIs/ic2/api/item/ITerraformingBP.java +++ /dev/null @@ -1,35 +0,0 @@ -package ic2.api.item; - -import net.minecraft.world.World; - -/** - * Allows an item to act as a terraformer blueprint. - */ -public interface ITerraformingBP -{ - /** - * Get the energy consumption per operation of the blueprint. - * - * @return Energy consumption in EU - */ - public abstract int getConsume(); - - /** - * Get the maximum range of the blueprint. - * Should be a divisor of 5. - * - * @return Maximum range in blocks - */ - public abstract int getRange(); - - /** - * Perform the terraforming operation. - * - * @param world world to terraform - * @param x X position to terraform - * @param z Z position to terraform - * @param yCoord Y position of the terraformer - * @return Whether the operation was successful and the terraformer should consume energy. - */ - public abstract boolean terraform(World world, int x, int z, int yCoord); -} diff --git a/APIs/ic2/api/item/ItemWrapper.java b/APIs/ic2/api/item/ItemWrapper.java deleted file mode 100644 index 58f807340..000000000 --- a/APIs/ic2/api/item/ItemWrapper.java +++ /dev/null @@ -1,50 +0,0 @@ -package ic2.api.item; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Multimap; - -/** - * Wrapper for inserting interfaces into items you don't own. - * - * @author Richard - */ -public class ItemWrapper { - private static final Multimap boxableItems = ArrayListMultimap.create(); - private static final Multimap metalArmorItems = ArrayListMultimap.create(); - - public static void registerBoxable(Item item, IBoxable boxable) { - boxableItems.put(item, boxable); - } - - public static boolean canBeStoredInToolbox(ItemStack stack) { - Item item = stack.getItem(); - // use customs first to allow for overriding behavior - for (IBoxable boxable : boxableItems.get(item)) { - if (boxable.canBeStoredInToolbox(stack)) return true; - } - - if (item instanceof IBoxable && ((IBoxable) item).canBeStoredInToolbox(stack)) return true; - - return false; - } - - public static void registerMetalArmor(Item item, IMetalArmor armor) { - metalArmorItems.put(item, armor); - } - - public static boolean isMetalArmor(ItemStack stack, EntityPlayer player) { - Item item = stack.getItem(); - // use customs first to allow for overriding behavior - for (IMetalArmor metalArmor : metalArmorItems.get(item)) { - if (metalArmor.isMetalArmor(stack, player)) return true; - } - - if (item instanceof IMetalArmor && ((IMetalArmor) item).isMetalArmor(stack, player)) return true; - - return false; - } -} diff --git a/APIs/ic2/api/item/Items.java b/APIs/ic2/api/item/Items.java deleted file mode 100644 index 0d3f75343..000000000 --- a/APIs/ic2/api/item/Items.java +++ /dev/null @@ -1,407 +0,0 @@ -package ic2.api.item; - -import net.minecraft.item.ItemStack; - -/** - * Provides access to IC2 blocks and items. - * - * Some items can be acquired through the ore dictionary which is the recommended way. - * The items are initialized while IC2 is being loaded - try to use ModsLoaded() or load your mod after IC2. - * Some blocks/items can be disabled by a config setting, so it's recommended to check if they're null first. - * - * Getting the associated Block/Item for an ItemStack x: - * Blocks: Block.blocksList[x.itemID] - * Items: x.getItem() - */ -public final class Items { - /** - * Get an ItemStack for a specific item name, example: Items.getItem("resin") - * See the list below for item names. - * Make sure to copy() the ItemStack if you want to modify it. - * - * @param name item name - * @return The item or null if the item does not exist or an error occurred - */ - public static ItemStack getItem(String name) { - try { - if (Ic2Items == null) Ic2Items = Class.forName(getPackage() + ".core.Ic2Items"); - - Object ret = Ic2Items.getField(name).get(null); - - if (ret instanceof ItemStack) { - return (ItemStack) ret; - } else { - return null; - } - } catch (Exception e) { - System.out.println("IC2 API: Call getItem failed for "+name); - - return null; - } - } - - /* Possible values: - - ----- blocks ----- - - ores - copperOre Copper Ore block, currently not meta sensitive, meta in ItemStack set to 0, ore dictionary: oreCopper, null with enableWorldGenOreCopper=false - tinOre Tin Ore block, currently not meta sensitive, meta in ItemStack set to 0, ore dictionary: oreTin, null with enableWorldGenOreTin=false - uraniumOre Tin Ore block, currently not meta sensitive, meta in ItemStack set to 0, ore dictionary: oreUranium, null with enableWorldGenOreUranium=false - - rubber related - Rubber wood block, meta reflects the state, meta in ItemStack set to 0, ore dictionary: woodRubber (with meta 0), null with enableWorldGenTreeRubber=false - dropped (as an item) -> metadata 0 - block, no resin spot -> metadata 0 or 1 - block, wet resin spot -> metadata 2-5 (according to the side) - block, dry resin spot -> metadata 8-11 (wet state + 6) - - rubberWood - rubberLeaves Rubber Leaves block, currently not meta sensitive, meta in ItemStack set to 0, null with enableWorldGenTreeRubber=false - rubberSapling Rubber Sapling block, currently not meta sensitive, meta in ItemStack set to 0, null with enableWorldGenTreeRubber=false - resinSheet Resin Sheet block, currently not meta sensitive - rubberTrampoline Rubber Trampoline block, meta reflects internal state, meta in ItemStack set to 0 - - building/storage - ironFence Iron Fence block, currently not meta sensitive - - reinforcedStone Reinforced Stone block, currently not meta sensitive - reinforcedGlass Reinforced Glass block, currently not meta sensitive - reinforcedDoorBlock Reinforced Door block, meta reflects the state (see vanilla doors), meta in ItemStack set to 0 - - constructionFoam Construction Foam block, currently not meta sensitive - constructionFoamWall Construction Foam Wall block, meta = color, implements IPaintableBlock - scaffold Scaffold block, meta reflects internal physical model data - - bronzeBlock Bronze block, meta sensitive - copperBlock Copper block, meta sensitive - tinBlock Tin block, meta sensitive - uraniumBlock Uranium block, meta sensitive - - cables (when placed as a block, inventory items are different TE implements IEnergyConductor) - copperCableBlock Copper Cable block, meta sensitive - insulatedCopperCableBlock Insulated Copper Cable block, meta sensitive - - goldCableBlock Gold Cable block, meta sensitive - insulatedGoldCableBlock Insulated Gold Cable block, meta sensitive - doubleInsulatedGoldCableBlock Double Insulated Gold Cable block, meta sensitive - - ironCableBlock Iron Cable block, meta sensitive - insulatedIronCableBlock Insulated Iron Cable block, meta sensitive - doubleInsulatedIronCableBlock Double Insulated Iron Cable block, meta sensitive - trippleInsulatedIronCableBlock Tripple Insulated Iron Cable block, meta sensitive - - glassFiberCableBlock Glass Fiber Cable block, meta sensitive - - tinCableBlock Tin Cable block, meta sensitive - - detectorCableBlock Detector Cable block, meta sensitive - splitterCableBlock Splitter Cable block, meta sensitive - - generators + related (TE implements IEnergySource ex. reactorChamber) - generator Generator block, meta sensitive - geothermalGenerator Geothermal Generator block, meta sensitive - waterMill Water Mill block, meta sensitive - solarPanel Solar Panel block, meta sensitive - windMill Wind Mill block, meta sensitive - nuclearReactor Nuclear Reactor block, meta sensitive - reactorChamber Reactor Chamber block, currently not meta sensitive - - energy storages (TE implements IEnergySource and IEnergyConductor) - batBox BatBox block, meta sensitive - mfeUnit MFE Unit block, meta sensitive - mfsUnit MFS Unit block, meta sensitive - - transformers (TE implements IEnergySource and IEnergyConductor) - lvTransformer LV Transformer block, meta sensitive - mvTransformer MV Transformer block, meta sensitive - hvTransformer HV Transformer block, meta sensitive - - machines + related (TE implements IEnergySink ex. machine, miningPipe, miningPipeTip) - machine Machine block, meta sensitive - advancedMachine Advanced Machine block, meta sensitive - - ironFurnace Iron Furnace block, meta sensitive - electroFurnace Electro Furnace block, meta sensitive - macerator Macerator block, meta sensitive - extractor Extractor block, meta sensitive - compressor Compressor block, meta sensitive - canner Canner block, meta sensitive - miner Miner block, meta sensitive - pump Pump block, meta sensitive - magnetizer Magnetizer block, meta sensitive - electrolyzer Electrolyzer block, meta sensitive - recycler Recycler block, meta sensitive - inductionFurnace Induction Furnace block, meta sensitive - massFabricator Mass Fabricator block, meta sensitive - terraformer Terraformer block, meta sensitive - teleporter Teleporter block, meta sensitive - teslaCoil Tesla Coil block, meta sensitive - luminator Passive (dark) Luminator block, meta = facing - activeLuminator Active (bright) Luminator block, meta = facing - - miningPipe Mining Pipe block, currently not meta sensitive, meta in ItemStack set to 0 - miningPipeTip Mining Pipe Tip block, currently not meta sensitive, meta in ItemStack set to 0 - - personal blocks - personalSafe Personal Safe block, meta sensitive - tradeOMat Trade-O-Mat block, meta sensitive - energyOMat Energy-O-Mat block, meta sensitive - - explosives - industrialTnt Industrial TNT block, currently not meta sensitive - nuke Nuke block, currently not meta sensitive - dynamiteStick Dynamite Stick block, meta = placement, meta in ItemStack set to 0 - dynamiteStickWithRemote Dynamite Stick with Remote block, meta = placement, meta in ItemStack set to 0 - - Agriculture Stuff - crop Crop Block, empty, not meta sensitive - - - ----- items ----- - - rubber + related - resin Resin item, currently not meta sensitive - rubber Rubber item, currently not meta sensitive, ore dictionary: itemRubber - - ore drops - uraniumDrop Uranium Drop item, currently not meta sensitive, ore dictionary: itemDropUranium - - dusts - bronzeDust Bronze Dust item, currently not meta sensitive - clayDust Clay Dust item, currently not meta sensitive - coalDust Coal Dust item, currently not meta sensitive - copperDust Copper Dust item, currently not meta sensitive - goldDust Gold Dust item, currently not meta sensitive - ironDust Iron Dust item, currently not meta sensitive - silverDust Silver Dust item, currently not meta sensitive - smallIronDust Small Iron Dust item, currently not meta sensitive - tinDust Tin Dust item, currently not meta sensitive - hydratedCoalDust Hydrated Coal Dust item, currently not meta sensitive - - ingots - refinedIronIngot Refined Iron Ingot item, currently not meta sensitive, ore dictionary: ingotRefinedIron - copperIngot Copper Ingot item, currently not meta sensitive, ore dictionary: ingotCopper - tinIngot Tin Ingot item, currently not meta sensitive, ore dictionary: ingotTin - bronzeIngot Bronze Ingot item, currently not meta sensitive, ore dictionary: ingotBronze - mixedMetalIngot Mixed Metal Ingot item, currently not meta sensitive - uraniumIngot Uranium Ingot item, currently not meta sensitive, ore dictionary: ingotUranium - - tools/weapons (without electric tools) - treetap Treetap item, meta = damage value - wrench Wrench item, meta = damage value - cutter Insulation Cutter item, meta = damage value - constructionFoamSprayer Construction Foam Sprayer item, meta = charges (as of v1.45) - - bronzePickaxe Bronze Pickaxe item, meta = damage value - bronzeAxe Bronze Axe item, meta = damage value - bronzeSword Bronze Sword item, meta = damage value - bronzeShovel Bronze Shovel item, meta = damage value - bronzeHoe Bronze Hoe item, meta = damage value - - el. tools/devices/weapons - miningDrill Mining Drill item, meta = visual charge indicator, implements IElectricItem - diamondDrill Diamond Tipped Mining Drill item, meta = visual charge indicator, implements IElectricItem - chainsaw Chainsaw item, meta = visual charge indicator, implements IElectricItem - electricWrench Electric Wrench item, meta = visual charge indicator, implements IElectricItem - electricTreetap Electric Treetap item, meta = visual charge indicator, implements IElectricItem - miningLaser Mining Laser item, meta = visual charge indicator, implements IElectricItem - - ecMeter EC-Mater item, currently not meta sensitive - odScanner Ore Density Scanner item, meta = damage value for charge level, implements IElectricItem - ovScanner Ore Value Scanner item, meta = visual charge indicator, implements IElectricItem - - frequencyTransmitter Frequency Transmitter item, currently not meta sensitive - - nanoSaber Idle Nano Saber item, meta = visual charge indicator, implements IElectricItem - enabledNanoSaber Enabled Nano Saber item, meta = visual charge indicator, implements IElectricItem - - armor/wearable - rubberBoots Rubber Boots item, meta = damage value - - bronzeHelmet Bronze Helmet Armor item, meta = damage value - bronzeChestplate Bronze Chestplate Armor item, meta = damage value - bronzeLeggings Bronze Leggings Armor item, meta = damage value - bronzeBoots Bronze Boots Armor item, meta = damage value - - compositeArmor Composite Armor item, meta = damage value for charge level - - nanoHelmet Nano Helmet Armor item, meta = visual charge indicator, implements IElectricItem - nanoBodyarmor Nano Bodyarmor item, meta = visual charge indicator, implements IElectricItem - nanoLeggings Nano Leggings Armor item, meta = visual charge indicator, implements IElectricItem - nanoBoots Nano Boots Armor item, meta = visual charge indicator, implements IElectricItem - - quantumHelmet Quantum Helmet Armor item, meta = visual charge indicator, implements IElectricItem - quantumBodyarmor Quantum Bodyarmor item, meta = visual charge indicator, implements IElectricItem - quantumLeggings Quantum Leggings Armor item, meta = visual charge indicator, implements IElectricItem - quantumBoots Quantum Boots Armor item, meta = visual charge indicator, implements IElectricItem - - jetpack Jetpack item, meta = damage value for fuel level - electricJetpack Electric Jetpack item, meta = visual charge indicator, implements IElectricItem - - batPack BatPack item, meta = visual charge indicator, implements IElectricItem, can provide energy - lapPack LapPack item, meta = visual charge indicator, implements IElectricItem, can provide energy - - cfPack CF Pack item, meta = charges (as of v1.45) - - solarHelmet Solar Helmet item, currently not meta sensitive - staticBoots Static Boots item, currently not meta sensitive - - batteries - reBattery Empty RE Battery item, currently not meta sensitive, implements IElectricItem - chargedReBattery RE Battery item, meta = visual charge indicator, implements IElectricItem, can provide energy - energyCrystal Energy Crystal item, meta = visual charge indicator, implements IElectricItem, can provide energy - lapotronCrystal Lapotron Crystal item, meta = visual charge indicator, implements IElectricItem, can provide energy - suBattery SU Battery item, currently not meta sensitive - - cables - copperCableItem Copper Cable item, meta sensitive - insulatedCopperCableItem Insulated Copper Cable item, meta sensitive - - goldCableItem Gold Cable item, meta sensitive - insulatedGoldCableItem Insulated Gold Cable item, meta sensitive - doubleInsulatedGoldCableItem Double Insulated Gold Cable item, meta sensitive - - ironCableItem Iron Cable item, meta sensitive - insulatedIronCableItem Insulated Iron Cable item, meta sensitive - doubleInsulatedIronCableItem Double Insulated Iron Cable item, meta sensitive - trippleInsulatedIronCableItem Tripple Insulated Iron Cable item, meta sensitive - - glassFiberCableItem Glass Fiber Cable item, meta sensitive - - tinCableItem Tin Cable item, meta sensitive - - detectorCableItem Detector Cable item, meta sensitive - splitterCableItem Splitter Cable item, meta sensitive - - cells/containers (without reactor components) - cell Empty Cell item, currently not meta sensitive - lavaCell Lava Cell item, currently not meta sensitive - hydratedCoalCell Hydrated Coal Cell item, currently not meta sensitive - bioCell Bio Cell item, currently not meta sensitive - coalfuelCell Coalfuel Cell item, currently not meta sensitive - biofuelCell Biofuel Cell item, currently not meta sensitive - waterCell Water Cell item, currently not meta sensitive - electrolyzedWaterCell Electrolyzed Water Cell item, currently not meta sensitive - - fuelCan Empty Fuel Can item, currently not meta sensitive - filledFuelCan Fuel Can item, meta = fuel value (as of v1.45) - - tinCan Empty Tin Can item, currently not meta sensitive - filledTinCan Filled Tin Can item, currently not meta sensitive - - reactor components - uraniumCell Uranium Cell item, meta = damage value - coolingCell Cooling Cell item, meta = damage value - - depletedIsotopeCell Depleted Isotope Cell item, meta = damage value - reEnrichedUraniumCell Re-Enriched Uranium Cell item, currently not meta sensitive - nearDepletedUraniumCell Near-Depleted Uranium Cell item, currently not meta sensitive - - integratedReactorPlating Integrated Reactor Plating item, meta = damage value - integratedHeatDisperser Integrated Heat Disperser item, meta = damage value - - terraformer blueprints - terraformerBlueprint Empty Terraformer Blueprint item, currently not meta sensitive - cultivationTerraformerBlueprint Cultivation Terraformer Blueprint item, currently not meta sensitive - irrigationTerraformerBlueprint Irrigation Terraformer Blueprint item, currently not meta sensitive - chillingTerraformerBlueprint Chilling Terraformer Blueprint item, currently not meta sensitive - desertificationTerraformerBlueprint Desertification Terraformer Blueprint item, currently not meta sensitive - flatificatorTerraformerBlueprint Flatificator Terraformer Blueprint item, currently not meta sensitive - mushroomTerraformerBlueprint Mushroom Terraformer Blueprint item, currently not meta sensitive - - diamond chain - coalBall Coal Ball item, currently not meta sensitive - compressedCoalBall Compressed Coal Ball item, currently not meta sensitive - coalChunk Coal Chunk item, currently not meta sensitive - industrialDiamond Industrial Diamond item, currently not meta sensitive, DEPRECATED - - recycler chain - scrap Scrap item, currently not meta sensitive - scrapBox Scrap Box item, currently not meta sensitive - - fuel production chain - hydratedCoalClump Hydrated Coal Clump item, currently not meta sensitive - plantBall Plant Ball item, currently not meta sensitive - compressedPlantBall Compressed Plant Ball item, currently not meta sensitive - - painting - painter Painter item, currently not meta sensitive - - blackPainter Black Painter item, meta = damage value - redPainter Red Painter item, meta = damage value - greenPainter Green Painter item, meta = damage value - brownPainter Brown Painter item, meta = damage value - bluePainter Blue Painter item, meta = damage value - purplePainter Purple Painter item, meta = damage value - cyanPainter Cyan Painter item, meta = damage value - lightGreyPainter Light Grey Painter item, meta = damage value - darkGreyPainter Dark Grey Painter item, meta = damage value - pinkPainter Pink Painter item, meta = damage value - limePainter Lime Painter item, meta = damage value - yellowPainter Yellow Painter item, meta = damage value - cloudPainter Cloud Painter item, meta = damage value - magentaPainter Magenta Painter item, meta = damage value - orangePainter Orange Painter item, meta = damage value - whitePainter White Painter item, meta = damage value - - explosives + related - dynamite Throwable Dynamite item, currently not meta sensitive - stickyDynamite Throwable Sticky Dynamite item, currently not meta sensitive - - remote Dynamite Remote item, currently not meta sensitive - - misc intermediate recipe ingredients - electronicCircuit Electronic Circuit item, currently not meta sensitive - advancedCircuit Advanced Circuit item, currently not meta sensitive - - advancedAlloy Advanced Alloy item, currently not meta sensitive - - carbonFiber Raw Carbon Fiber item, currently not meta sensitive - carbonMesh Raw Carbon Mesh item, currently not meta sensitive - carbonPlate Carbon Plate item, currently not meta sensitive - - matter UU-Matter item, currently not meta sensitive - iridiumOre Iridium Ore item, currently not meta sensitive - iridiumPlate Iridium Plate item, currently not meta sensitive - - upgrade modules - overclockerUpgrade overclocker upgrade item, meta sensitive - transformerUpgrade transformer upgrade item, meta sensitive - energyStorageUpgrade energy storage upgrade item, meta sensitive - - misc - coin Coin item, currently not meta sensitive - reinforcedDoor Reinforced Door item, currently not meta sensitive - constructionFoamPellet Construction Foam Pellet item, currently not meta sensitive - cropSeed Crop seeds, stuff stored in NBT, don't use for crafting recipes! - cropnalyzer Cropnalyzer handheld device - fertilizer Basic IC2Item, used to provide nutrients toCropBlocks - hydratingCell Cell used to hydrate Crops, meta = Content, 0 = Full, 9999 = Near empty - electricHoe Electric Hoe, meta = charge level - solarHelmet Solar Helmet item, currently not meta sensitive - terraWart Terra Wart item, cures potion effects - weedEx Weed-EX can, meta = uses left - - */ - - /** - * Get the base IC2 package name, used internally. - * - * @return IC2 package name, if unable to be determined defaults to ic2 - */ - private static String getPackage() { - Package pkg = Items.class.getPackage(); - - if (pkg != null) { - String packageName = pkg.getName(); - - return packageName.substring(0, packageName.length() - ".api.item".length()); - } - - return "ic2"; - } - - private static Class Ic2Items; -} - diff --git a/APIs/thermalexpansion/api/item/IChargeableItem.java b/APIs/thermalexpansion/api/item/IChargeableItem.java deleted file mode 100644 index 6c6386975..000000000 --- a/APIs/thermalexpansion/api/item/IChargeableItem.java +++ /dev/null @@ -1,46 +0,0 @@ -package thermalexpansion.api.item; - -import net.minecraft.item.ItemStack; - -/** - * Implement this interface on Item classes that support external manipulation of their internal - * energy storages. This interface does not provide methods for the underlying internal energy - * usage. - */ - -public interface IChargeableItem -{ - - /** - * Adds energy to an item. Returns the quantity of energy that was accepted. This should always - * return 0 if the item cannot be externally charged. - * - * @param theItem ItemStack to be charged. - * @param energy Maximum amount of energy to be sent into the item. - * @param doReceive If false, the charge will only be simulated. - * @return Amount of energy that was accepted by the item. - */ - public float receiveEnergy(ItemStack theItem, float energy, boolean doReceive); - - /** - * Removes energy from an item. Returns the quantity of energy that was removed. This should - * always return 0 if the item cannot be externally discharged. - * - * @param theItem ItemStack to be discharged. - * @param energy Maximum amount of energy to be removed from the item. - * @param doTransfer If false, the discharge will only be simulated. - * @return Amount of energy that was removed from the item. - */ - public float transferEnergy(ItemStack theItem, float energy, boolean doTransfer); - - /** - * Get the amount of energy currently stored in the item. - */ - public float getEnergyStored(ItemStack theItem); - - /** - * Get the max amount of energy that can be stored in the item. - */ - public float getMaxEnergyStored(ItemStack theItem); - -} diff --git a/APIs/universalelectricity/compatibility/Compatibility.java b/APIs/universalelectricity/compatibility/Compatibility.java deleted file mode 100644 index 60df3d5cd..000000000 --- a/APIs/universalelectricity/compatibility/Compatibility.java +++ /dev/null @@ -1,80 +0,0 @@ -package universalelectricity.compatibility; - -import universalelectricity.core.UniversalElectricity; -import universalelectricity.core.electricity.NetworkLoader; -import cpw.mods.fml.common.Loader; - -/** - * The Universal Electricity compatibility module allows your mod to be compatible with most major - * power systems in Minecraft. - * - * @author Calclavia, Micdoodle - */ -public class Compatibility -{ - /** Version of build craft api compiled with */ - public static String BCx_VERSION = "@BCxVersion@"; - /** Version of industrial craft api compiled with */ - public static String ICx_VERSION = "@ICxVersion@"; - /** Version of thermal expansion api compiled with */ - public static String TEx_VERSION = "@TExVersion@"; - - /** Has the initiate method been called */ - public static boolean INIT = false; - - /** Ratio of Build craft(MJ) power to UE power(KW). Multiply BC3 power by this to convert to UE */ - public static float BC3_RATIO = 1; - /** - * Ratio of Industrial craft(EU) power to UE power(KW). Multiply IC2 power by this to convert to - * UE - */ - public static float IC2_RATIO = 0.04f; - - /** - * Ratio of UE power(KW) to Industrial craft(EU) power. Multiply UE power by this to convert it - * to IC2 power - */ - public static float TO_IC2_RATIO = 1 / IC2_RATIO; - /** - * Ratio of UE power(KW) to Build craft(MJ) power. Multiply UE power by this to convert it to - * BC3 power - */ - public static float TO_BC_RATIO = 1 / BC3_RATIO; - - /** You must call this function to enable the Universal Network module. */ - public static void initiate() - { - if (!INIT) - { - /** Outputs basic version information */ - System.out.println("[UniversalElectricity] Loading compatibility API version " + UniversalElectricity.VERSION); - System.out.println("[UniversalElectricity] Compiled with IndustrialCraft API version " + Compatibility.ICx_VERSION); - System.out.println("[UniversalElectricity] Compiled with BuildCraft API version " + Compatibility.BCx_VERSION); - System.out.println("[UniversalElectricity] Compiled with ThermalExpansion API version " + Compatibility.TEx_VERSION); - - /** Loads the configuration and sets all the values. */ - UniversalElectricity.CONFIGURATION.load(); - IC2_RATIO = (float) UniversalElectricity.CONFIGURATION.get("Compatiblity", "IndustrialCraft Conversion Ratio", IC2_RATIO).getDouble(IC2_RATIO); - BC3_RATIO = (float) UniversalElectricity.CONFIGURATION.get("Compatiblity", "BuildCraft Conversion Ratio", BC3_RATIO).getDouble(BC3_RATIO); - TO_IC2_RATIO = 1 / IC2_RATIO; - TO_BC_RATIO = 1 / BC3_RATIO; - UniversalElectricity.CONFIGURATION.save(); - - NetworkLoader.setNetworkClass(UniversalNetwork.class); - } - } - - /** Checks using the FML loader too see if IC2 is loaded */ - public static boolean isIndustrialCraft2Loaded() - { - return Loader.isModLoaded("IC2"); - } - - /** Checks using the FML loader too see if BC3 is loaded */ - public static boolean isBuildcraftLoaded() - { - return Loader.isModLoaded("BuildCraft|Energy"); - } - - // TODO add Thermal expansion isLoaded check -} diff --git a/APIs/universalelectricity/compatibility/ItemUniversalElectric.java b/APIs/universalelectricity/compatibility/ItemUniversalElectric.java deleted file mode 100644 index 19fb4a474..000000000 --- a/APIs/universalelectricity/compatibility/ItemUniversalElectric.java +++ /dev/null @@ -1,150 +0,0 @@ -package universalelectricity.compatibility; - -import ic2.api.item.IElectricItemManager; -import ic2.api.item.ISpecialElectricItem; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import thermalexpansion.api.item.IChargeableItem; -import universalelectricity.core.item.IItemElectric; -import universalelectricity.core.item.ItemElectric; - -public abstract class ItemUniversalElectric extends ItemElectric implements ISpecialElectricItem, IChargeableItem -{ - public static final float CHARGE_RATE = 0.005f; - - public ItemUniversalElectric(int id) - { - super(id); - } - - /** - * IC2 - */ - @Override - public int getChargedItemId(ItemStack itemStack) - { - return this.itemID; - } - - @Override - public int getEmptyItemId(ItemStack itemStack) - { - return this.itemID; - } - - @Override - public int getMaxCharge(ItemStack itemStack) - { - return (int) (this.getMaxElectricityStored(itemStack) * Compatibility.TO_IC2_RATIO); - } - - @Override - public int getTier(ItemStack itemStack) - { - return 1; - } - - @Override - public int getTransferLimit(ItemStack itemStack) - { - return (int) ((this.getMaxElectricityStored(itemStack) * CHARGE_RATE) * Compatibility.TO_IC2_RATIO); - } - - @Override - public IElectricItemManager getManager(ItemStack itemStack) - { - return IC2ElectricItemManager.MANAGER; - } - - @Override - public boolean canProvideEnergy(ItemStack itemStack) - { - return this.recharge(itemStack, 1, false) > 0; - } - - /** - * Thermal Expansion - */ - @Override - public float receiveEnergy(ItemStack theItem, float energy, boolean doReceive) - { - return this.recharge(theItem, energy * Compatibility.BC3_RATIO, doReceive) * Compatibility.TO_BC_RATIO; - } - - @Override - public float transferEnergy(ItemStack theItem, float energy, boolean doTransfer) - { - return this.discharge(theItem, energy * Compatibility.BC3_RATIO, doTransfer) * Compatibility.TO_BC_RATIO; - } - - @Override - public float getEnergyStored(ItemStack theItem) - { - return this.getElectricityStored(theItem) * Compatibility.TO_BC_RATIO; - } - - @Override - public float getMaxEnergyStored(ItemStack theItem) - { - return this.getMaxElectricityStored(theItem) * Compatibility.TO_BC_RATIO; - } - - public static class IC2ElectricItemManager implements IElectricItemManager - { - public static final IElectricItemManager MANAGER = new IC2ElectricItemManager(); - - private IItemElectric getElectricItem(ItemStack itemStack) - { - if (itemStack.getItem() instanceof IItemElectric) - { - return ((IItemElectric) itemStack.getItem()); - } - return null; - } - - @Override - public int charge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate) - { - float inputElectricity = amount * Compatibility.IC2_RATIO; - return (int) (getElectricItem(itemStack).recharge(itemStack, inputElectricity, !simulate) * Compatibility.TO_IC2_RATIO); - } - - @Override - public int discharge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate) - { - float outputElectricity = amount * Compatibility.IC2_RATIO; - return (int) (getElectricItem(itemStack).discharge(itemStack, outputElectricity, !simulate) * Compatibility.TO_IC2_RATIO); - } - - @Override - public boolean canUse(ItemStack itemStack, int amount) - { - return false; - } - - @Override - public int getCharge(ItemStack itemStack) - { - return 0; - } - - @Override - public boolean use(ItemStack itemStack, int amount, EntityLivingBase entity) - { - return false; - } - - @Override - public void chargeFromArmor(ItemStack itemStack, EntityLivingBase entity) - { - - } - - @Override - public String getToolTip(ItemStack itemStack) - { - return null; - } - - } -} diff --git a/APIs/universalelectricity/compatibility/TileEntityUniversalConductor.java b/APIs/universalelectricity/compatibility/TileEntityUniversalConductor.java deleted file mode 100644 index 59b5b7e28..000000000 --- a/APIs/universalelectricity/compatibility/TileEntityUniversalConductor.java +++ /dev/null @@ -1,217 +0,0 @@ -package universalelectricity.compatibility; - -import ic2.api.energy.event.EnergyTileLoadEvent; -import ic2.api.energy.event.EnergyTileUnloadEvent; -import ic2.api.energy.tile.IEnergyAcceptor; -import ic2.api.energy.tile.IEnergyEmitter; -import ic2.api.energy.tile.IEnergySink; -import ic2.api.energy.tile.IEnergyTile; - -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.MinecraftForge; -import universalelectricity.core.block.IConnector; -import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.core.vector.Vector3; -import universalelectricity.core.vector.VectorHelper; -import universalelectricity.prefab.tile.TileEntityConductor; -import buildcraft.api.power.IPowerReceptor; -import buildcraft.api.power.PowerHandler; -import buildcraft.api.power.PowerHandler.PowerReceiver; -import buildcraft.api.power.PowerHandler.Type; - -/** - * A universal conductor class. - * - * Extend this class or use as a reference for your own implementation of compatible conductor - * tiles. - * - * @author Calclavia, micdoodle8 - * - */ -public abstract class TileEntityUniversalConductor extends TileEntityConductor implements IEnergySink, IPowerReceptor -{ - protected boolean isAddedToEnergyNet; - public PowerHandler powerHandler; - public float buildcraftBuffer = Compatibility.BC3_RATIO * 50; - - public TileEntityUniversalConductor() - { - this.powerHandler = new PowerHandler(this, Type.PIPE); - this.powerHandler.configure(0, this.buildcraftBuffer, this.buildcraftBuffer, this.buildcraftBuffer * 2); - this.powerHandler.configurePowerPerdition(0, 0); - } - - @Override - public TileEntity[] getAdjacentConnections() - { - if (this.adjacentConnections == null) - { - this.adjacentConnections = new TileEntity[6]; - - for (byte i = 0; i < 6; i++) - { - ForgeDirection side = ForgeDirection.getOrientation(i); - TileEntity tileEntity = VectorHelper.getTileEntityFromSide(this.worldObj, new Vector3(this), side); - - if (tileEntity instanceof IConnector) - { - if (((IConnector) tileEntity).canConnect(side.getOpposite())) - { - this.adjacentConnections[i] = tileEntity; - } - } - else if (Compatibility.isIndustrialCraft2Loaded() && tileEntity instanceof IEnergyTile) - { - if (tileEntity instanceof IEnergyAcceptor) - { - if (((IEnergyAcceptor) tileEntity).acceptsEnergyFrom(this, side.getOpposite())) - { - this.adjacentConnections[i] = tileEntity; - continue; - } - } - - if (tileEntity instanceof IEnergyEmitter) - { - if (((IEnergyEmitter) tileEntity).emitsEnergyTo(tileEntity, side.getOpposite())) - { - this.adjacentConnections[i] = tileEntity; - continue; - } - } - - this.adjacentConnections[i] = tileEntity; - } - else if (Compatibility.isBuildcraftLoaded() && tileEntity instanceof IPowerReceptor) - { - if (((IPowerReceptor) tileEntity).getPowerReceiver(side.getOpposite()) != null) - { - this.adjacentConnections[i] = tileEntity; - } - } - } - } - - return this.adjacentConnections; - } - - /* - * @Override public boolean canUpdate() { return !this.isAddedToEnergyNet; } - */ - - @Override - public void updateEntity() - { - if (!this.worldObj.isRemote) - { - if (!this.isAddedToEnergyNet) - { - this.initIC(); - } - } - } - - @Override - public void invalidate() - { - this.unloadTileIC2(); - super.invalidate(); - } - - @Override - public void onChunkUnload() - { - this.unloadTileIC2(); - super.onChunkUnload(); - } - - protected void initIC() - { - if (Compatibility.isIndustrialCraft2Loaded()) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); - } - - this.isAddedToEnergyNet = true; - } - - private void unloadTileIC2() - { - if (this.isAddedToEnergyNet && this.worldObj != null) - { - if (Compatibility.isIndustrialCraft2Loaded()) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); - } - - this.isAddedToEnergyNet = false; - } - } - - @Override - public double demandedEnergyUnits() - { - if (this.getNetwork() == null) - { - return 0.0; - } - - return this.getNetwork().getRequest(this).getWatts() * Compatibility.TO_IC2_RATIO; - } - - @Override - public double injectEnergyUnits(ForgeDirection directionFrom, double amount) - { - TileEntity tile = VectorHelper.getTileEntityFromSide(this.worldObj, new Vector3(this), directionFrom); - ElectricityPack pack = ElectricityPack.getFromWatts((float) (amount * Compatibility.IC2_RATIO), 120); - return this.getNetwork().produce(pack, this, tile) * Compatibility.TO_IC2_RATIO; - } - - @Override - public int getMaxSafeInput() - { - return Integer.MAX_VALUE; - } - - @Override - public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) - { - return true; - } - - /** - * BuildCraft functions - */ - @Override - public PowerReceiver getPowerReceiver(ForgeDirection side) - { - return this.powerHandler.getPowerReceiver(); - } - - @Override - public void doWork(PowerHandler workProvider) - { - Set ignoreTiles = new HashSet(); - ignoreTiles.add(this); - - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tile = new Vector3(this).modifyPositionFromSide(direction).getTileEntity(this.worldObj); - ignoreTiles.add(tile); - } - - ElectricityPack pack = ElectricityPack.getFromWatts(workProvider.useEnergy(0, this.getNetwork().getRequest(this).getWatts() * Compatibility.TO_BC_RATIO, true) * Compatibility.BC3_RATIO, 120); - this.getNetwork().produce(pack, ignoreTiles.toArray(new TileEntity[0])); - } - - @Override - public World getWorld() - { - return this.getWorldObj(); - } -} diff --git a/APIs/universalelectricity/compatibility/TileEntityUniversalElectrical.java b/APIs/universalelectricity/compatibility/TileEntityUniversalElectrical.java deleted file mode 100644 index 0811e3bbb..000000000 --- a/APIs/universalelectricity/compatibility/TileEntityUniversalElectrical.java +++ /dev/null @@ -1,317 +0,0 @@ -package universalelectricity.compatibility; - -import ic2.api.energy.event.EnergyTileLoadEvent; -import ic2.api.energy.event.EnergyTileUnloadEvent; -import ic2.api.energy.tile.IEnergySink; -import ic2.api.energy.tile.IEnergySource; -import ic2.api.energy.tile.IEnergyTile; -import ic2.api.item.IElectricItemManager; -import ic2.api.item.ISpecialElectricItem; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.MinecraftForge; -import thermalexpansion.api.item.IChargeableItem; -import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.core.item.IItemElectric; -import universalelectricity.core.vector.Vector3; -import universalelectricity.prefab.tile.TileEntityElectrical; -import buildcraft.api.power.IPowerReceptor; -import buildcraft.api.power.PowerHandler; -import buildcraft.api.power.PowerHandler.PowerReceiver; -import buildcraft.api.power.PowerHandler.Type; - -/** - * A universal electricity tile used for tiles that consume or produce electricity. - * - * Extend this class or use as a reference for your own implementation of compatible electrical - * tiles. - * - * @author micdoodle8, Calclavia - * - */ -public abstract class TileEntityUniversalElectrical extends TileEntityElectrical implements IEnergySink, IEnergySource, IPowerReceptor -{ - protected boolean isAddedToEnergyNet; - public PowerHandler bcPowerHandler; - public Type bcBlockType = Type.MACHINE; - public float maxInputEnergy = 100; - - /** - * Recharges electric item. - */ - @Override - public void recharge(ItemStack itemStack) - { - if (itemStack != null) - { - if (itemStack.getItem() instanceof IItemElectric) - { - super.recharge(itemStack); - } - else if (itemStack.getItem() instanceof ISpecialElectricItem) - { - ISpecialElectricItem electricItem = (ISpecialElectricItem) itemStack.getItem(); - IElectricItemManager manager = electricItem.getManager(itemStack); - float energy = Math.max(this.getProvide(ForgeDirection.UNKNOWN) * Compatibility.IC2_RATIO, 0); - energy = manager.charge(itemStack, (int) (energy * Compatibility.TO_IC2_RATIO), 0, false, false) * Compatibility.IC2_RATIO; - this.provideElectricity(energy, true); - } - else if (itemStack.getItem() instanceof IChargeableItem) - { - float accepted = ((IChargeableItem) itemStack.getItem()).receiveEnergy(itemStack, this.getProvide(ForgeDirection.UNKNOWN) * Compatibility.BC3_RATIO, true); - this.provideElectricity(accepted, true); - } - } - } - - /** - * Discharges electric item. - */ - @Override - public void discharge(ItemStack itemStack) - { - if (itemStack != null) - { - if (itemStack.getItem() instanceof IItemElectric) - { - super.discharge(itemStack); - } - else if (itemStack.getItem() instanceof ISpecialElectricItem) - { - ISpecialElectricItem electricItem = (ISpecialElectricItem) itemStack.getItem(); - - if (electricItem.canProvideEnergy(itemStack)) - { - IElectricItemManager manager = electricItem.getManager(itemStack); - float energy = Math.max(this.getRequest(ForgeDirection.UNKNOWN) * Compatibility.IC2_RATIO, 0); - energy = manager.discharge(itemStack, (int) (energy * Compatibility.TO_IC2_RATIO), 0, false, false); - this.receiveElectricity(energy, true); - } - } - else if (itemStack.getItem() instanceof IChargeableItem) - { - float given = ((IChargeableItem) itemStack.getItem()).transferEnergy(itemStack, this.getRequest(ForgeDirection.UNKNOWN) * Compatibility.BC3_RATIO, true); - this.receiveElectricity(given, true); - } - } - } - - @Override - public void initiate() - { - super.initiate(); - this.initBuildCraft(); - } - - @Override - public void updateEntity() - { - super.updateEntity(); - - // Register to the IC2 Network - if (!this.worldObj.isRemote) - { - if (!this.isAddedToEnergyNet) - { - this.initIC(); - } - - if (this.bcPowerHandler == null) - { - this.initBuildCraft(); - } - - if (Compatibility.isBuildcraftLoaded()) - { - if (this.bcPowerHandler.getEnergyStored() > 0) - { - /** - * Cheat BuildCraft powerHandler and always empty energy inside of it. - */ - this.receiveElectricity(this.bcPowerHandler.getEnergyStored() * Compatibility.BC3_RATIO, true); - this.bcPowerHandler.setEnergy(0); - } - } - } - } - - @Override - public void produce() - { - if (!this.worldObj.isRemote) - { - for (ForgeDirection outputDirection : this.getOutputDirections()) - { - if (outputDirection != ForgeDirection.UNKNOWN) - { - if (!this.produceUE(outputDirection)) - { - this.produceBuildCraft(outputDirection); - } - - } - } - } - } - - public boolean produceBuildCraft(ForgeDirection outputDirection) - { - if (!this.worldObj.isRemote && outputDirection != null && outputDirection != ForgeDirection.UNKNOWN) - { - float provide = this.getProvide(outputDirection); - - if (this.getEnergyStored() >= provide && provide > 0) - { - if (Compatibility.isBuildcraftLoaded()) - { - TileEntity tileEntity = new Vector3(this).modifyPositionFromSide(outputDirection).getTileEntity(this.worldObj); - - if (tileEntity instanceof IPowerReceptor) - { - PowerReceiver receiver = ((IPowerReceptor) tileEntity).getPowerReceiver(outputDirection.getOpposite()); - - if (receiver != null) - { - if (receiver.powerRequest() > 0) - { - float bc3Provide = provide * Compatibility.TO_BC_RATIO; - float energyUsed = Math.min(receiver.receiveEnergy(this.bcBlockType, bc3Provide, outputDirection.getOpposite()), bc3Provide); - this.provideElectricity(energyUsed * Compatibility.TO_BC_RATIO, true); - } - } - - return true; - } - } - } - } - - return false; - } - - /** - * IC2 Methods - */ - @Override - public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) - { - return this.getInputDirections().contains(direction); - } - - @Override - public double getOfferedEnergy() - { - return this.getProvide(ForgeDirection.UNKNOWN) * Compatibility.TO_IC2_RATIO; - } - - @Override - public void drawEnergy(double amount) - { - this.provideElectricity((float) amount * Compatibility.IC2_RATIO, true); - } - - @Override - public void invalidate() - { - this.unloadTileIC2(); - super.invalidate(); - } - - @Override - public void onChunkUnload() - { - this.unloadTileIC2(); - super.onChunkUnload(); - } - - protected void initIC() - { - if (Compatibility.isIndustrialCraft2Loaded()) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); - } - - this.isAddedToEnergyNet = true; - } - - private void unloadTileIC2() - { - if (this.isAddedToEnergyNet && this.worldObj != null) - { - if (Compatibility.isIndustrialCraft2Loaded()) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); - } - - this.isAddedToEnergyNet = false; - } - } - - @Override - public double demandedEnergyUnits() - { - return Math.ceil(this.getRequest(ForgeDirection.UNKNOWN) * Compatibility.TO_IC2_RATIO); - } - - @Override - public double injectEnergyUnits(ForgeDirection direction, double amount) - { - if (this.getInputDirections().contains(direction)) - { - float convertedEnergy = (float) (amount * Compatibility.IC2_RATIO); - ElectricityPack toSend = ElectricityPack.getFromWatts(convertedEnergy, this.getVoltage()); - float receive = this.receiveElectricity(direction, toSend, true); - - // Return the difference, since injectEnergy returns left over energy, and - // receiveElectricity returns energy used. - return Math.round(amount - (receive * Compatibility.TO_IC2_RATIO)); - } - - return amount; - } - - @Override - public boolean emitsEnergyTo(TileEntity receiver, ForgeDirection direction) - { - return receiver instanceof IEnergyTile && this.getOutputDirections().contains(direction); - } - - @Override - public int getMaxSafeInput() - { - return Integer.MAX_VALUE; - } - - /** - * BuildCraft power support - */ - public void initBuildCraft() - { - if (this.bcPowerHandler == null) - { - this.bcPowerHandler = new PowerHandler(this, this.bcBlockType); - } - this.bcPowerHandler.configure(0, this.maxInputEnergy, 0, (int) Math.ceil(this.getMaxEnergyStored() * Compatibility.BC3_RATIO)); - } - - @Override - public PowerReceiver getPowerReceiver(ForgeDirection side) - { - this.initBuildCraft(); - return this.bcPowerHandler.getPowerReceiver(); - } - - @Override - public void doWork(PowerHandler workProvider) - { - - } - - @Override - public World getWorld() - { - return this.getWorldObj(); - } -} diff --git a/APIs/universalelectricity/compatibility/UniversalNetwork.java b/APIs/universalelectricity/compatibility/UniversalNetwork.java deleted file mode 100644 index c89e34d0e..000000000 --- a/APIs/universalelectricity/compatibility/UniversalNetwork.java +++ /dev/null @@ -1,434 +0,0 @@ -package universalelectricity.compatibility; - -import ic2.api.energy.tile.IEnergyAcceptor; -import ic2.api.energy.tile.IEnergySink; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.MinecraftForge; -import universalelectricity.core.block.IConductor; -import universalelectricity.core.block.IElectrical; -import universalelectricity.core.block.INetworkConnection; -import universalelectricity.core.block.INetworkProvider; -import universalelectricity.core.electricity.ElectricalEvent.ElectricityProductionEvent; -import universalelectricity.core.electricity.ElectricalEvent.ElectricityRequestEvent; -import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.core.grid.ElectricityNetwork; -import universalelectricity.core.grid.IElectricityNetwork; -import universalelectricity.core.path.Pathfinder; -import universalelectricity.core.path.PathfinderChecker; -import universalelectricity.core.vector.Vector3; -import universalelectricity.core.vector.VectorHelper; -import buildcraft.api.power.IPowerReceptor; -import buildcraft.api.power.PowerHandler.PowerReceiver; -import buildcraft.api.power.PowerHandler.Type; -import cpw.mods.fml.common.FMLLog; - -/** - * A universal network that words with multiple energy systems. - * - * @author micdoodle8, Calclavia, Aidancbrady - * - */ -public class UniversalNetwork extends ElectricityNetwork -{ - @Override - public float produce(ElectricityPack electricity, TileEntity... ignoreTiles) - { - ElectricityProductionEvent evt = new ElectricityProductionEvent(this, electricity, ignoreTiles); - MinecraftForge.EVENT_BUS.post(evt); - - float totalEnergy = electricity.getWatts(); - float networkResistance = getTotalResistance(); - float proportionWasted = getTotalResistance() / (getTotalResistance() + acceptorResistance); - float energyWasted = totalEnergy * proportionWasted; - float totalUsableEnergy = totalEnergy - energyWasted; - float remainingUsableEnergy = totalUsableEnergy; - float voltage = electricity.voltage; - - if (!evt.isCanceled()) - { - Set avaliableEnergyTiles = this.getAcceptors(); - - if (!avaliableEnergyTiles.isEmpty()) - { - final float totalEnergyRequest = this.getRequest(ignoreTiles).getWatts(); - - if (totalEnergyRequest > 0) - { - boolean markRefresh = false; - - for (TileEntity tileEntity : avaliableEnergyTiles) - { - if (tileEntity != null && !tileEntity.isInvalid()) - { - if (remainingUsableEnergy > 0 && !Arrays.asList(ignoreTiles).contains(tileEntity)) - { - if (tileEntity instanceof IElectrical) - { - IElectrical electricalTile = (IElectrical) tileEntity; - - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - if (electricalTile.canConnect(direction) && this.getConductors().contains(VectorHelper.getConnectorFromSide(tileEntity.worldObj, new Vector3(tileEntity), direction))) - { - float energyToSend = totalUsableEnergy * (Math.min(electricalTile.getRequest(direction), totalEnergyRequest) / totalEnergyRequest); - - if (energyToSend > 0) - { - ElectricityPack electricityToSend = ElectricityPack.getFromWatts(energyToSend, voltage); - remainingUsableEnergy -= electricalTile.receiveElectricity(direction, electricityToSend, true); - } - } - } - } - else if (Compatibility.isIndustrialCraft2Loaded() && tileEntity instanceof IEnergySink) - { - IEnergySink electricalTile = (IEnergySink) tileEntity; - - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity conductor = VectorHelper.getConnectorFromSide(tileEntity.worldObj, new Vector3(tileEntity), direction); - - if (this.getConductors().contains(conductor) && electricalTile.acceptsEnergyFrom(conductor, direction)) - { - float energyToSend = (float) Math.min(totalUsableEnergy * ((electricalTile.demandedEnergyUnits() * Compatibility.IC2_RATIO) / totalEnergyRequest), electricalTile.getMaxSafeInput() * Compatibility.IC2_RATIO); - - if (energyToSend > 0) - { - remainingUsableEnergy -= electricalTile.injectEnergyUnits(direction, energyToSend * Compatibility.TO_IC2_RATIO); - } - } - } - } - else if (Compatibility.isBuildcraftLoaded() && tileEntity instanceof IPowerReceptor) - { - IPowerReceptor electricalTile = (IPowerReceptor) tileEntity; - - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity conductor = VectorHelper.getConnectorFromSide(tileEntity.worldObj, new Vector3(tileEntity), direction); - PowerReceiver receiver = electricalTile.getPowerReceiver(direction); - - if (receiver != null) - { - if (this.getConductors().contains(conductor)) - { - float energyToSend = totalUsableEnergy * ((receiver.powerRequest() * Compatibility.TO_BC_RATIO) / totalEnergyRequest); - - if (energyToSend > 0) - { - remainingUsableEnergy -= receiver.receiveEnergy(Type.PIPE, energyToSend * Compatibility.TO_BC_RATIO, direction); - } - } - } - } - } - } - } - else - { - markRefresh = true; - } - } - - if(markRefresh) - { - this.refresh(); - } - } - } - } - - return remainingUsableEnergy; - } - - @Override - public ElectricityPack getRequest(TileEntity... ignoreTiles) - { - List requests = new ArrayList(); - - Iterator it = this.getAcceptors().iterator(); - - while (it.hasNext()) - { - TileEntity tileEntity = it.next(); - - if (Arrays.asList(ignoreTiles).contains(tileEntity)) - { - continue; - } - - if (tileEntity != null && !tileEntity.isInvalid()) - { - if (tileEntity.worldObj.getBlockTileEntity(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord) == tileEntity) - { - if (tileEntity instanceof IElectrical) - { - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - if (((IElectrical) tileEntity).canConnect(direction) && this.getConductors().contains(VectorHelper.getConnectorFromSide(tileEntity.worldObj, new Vector3(tileEntity), direction))) - { - requests.add(ElectricityPack.getFromWatts(((IElectrical) tileEntity).getRequest(direction), ((IElectrical) tileEntity).getVoltage())); - } - } - continue; - } - - if (Compatibility.isIndustrialCraft2Loaded() && tileEntity instanceof IEnergySink) - { - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - if (((IEnergySink) tileEntity).acceptsEnergyFrom(VectorHelper.getTileEntityFromSide(tileEntity.worldObj, new Vector3(tileEntity), direction), direction) && this.getConductors().contains(VectorHelper.getConnectorFromSide(tileEntity.worldObj, new Vector3(tileEntity), direction))) - { - ElectricityPack pack = ElectricityPack.getFromWatts((float) (Math.min(((IEnergySink) tileEntity).demandedEnergyUnits(), ((IEnergySink) tileEntity).getMaxSafeInput()) * Compatibility.IC2_RATIO), 1); - - if (pack.getWatts() > 0) - { - requests.add(pack); - } - } - } - - continue; - } - - if (Compatibility.isBuildcraftLoaded() && tileEntity instanceof IPowerReceptor) - { - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - if (((IPowerReceptor) tileEntity).getPowerReceiver(direction) != null) - { - ElectricityPack pack = ElectricityPack.getFromWatts(((IPowerReceptor) tileEntity).getPowerReceiver(direction).powerRequest() * Compatibility.BC3_RATIO, 1); - - if (pack.getWatts() > 0) - { - requests.add(pack); - break; - } - } - } - - continue; - - } - } - } - } - - ElectricityPack mergedPack = ElectricityPack.merge(requests); - ElectricityRequestEvent evt = new ElectricityRequestEvent(this, mergedPack, ignoreTiles); - MinecraftForge.EVENT_BUS.post(evt); - return mergedPack; - } - - @Override - public void refresh() - { - this.electricalTiles.clear(); - - try - { - Iterator it = this.getConductors().iterator(); - - while (it.hasNext()) - { - IConductor conductor = it.next(); - - if (conductor == null) - { - it.remove(); - } - else if (((TileEntity) conductor).isInvalid()) - { - it.remove(); - } - else - { - conductor.setNetwork(this); - } - - for (int i = 0; i < conductor.getAdjacentConnections().length; i++) - { - TileEntity acceptor = conductor.getAdjacentConnections()[i]; - - if (!(acceptor instanceof IConductor)) - { - if (acceptor instanceof IElectrical) - { - ArrayList possibleDirections = null; - - if (this.electricalTiles.containsKey(acceptor)) - { - possibleDirections = this.electricalTiles.get(acceptor); - } - else - { - possibleDirections = new ArrayList(); - } - - if (((IElectrical) acceptor).canConnect(ForgeDirection.getOrientation(i)) && this.getConductors().contains(VectorHelper.getConnectorFromSide(acceptor.worldObj, new Vector3(acceptor), ForgeDirection.getOrientation(i)))) - { - possibleDirections.add(ForgeDirection.getOrientation(i)); - } - - this.electricalTiles.put(acceptor, possibleDirections); - continue; - } - - if (Compatibility.isIndustrialCraft2Loaded() && acceptor instanceof IEnergyAcceptor) - { - ArrayList possibleDirections = null; - - if (this.electricalTiles.containsKey(acceptor)) - { - possibleDirections = this.electricalTiles.get(acceptor); - } - else - { - possibleDirections = new ArrayList(); - } - - if (((IEnergyAcceptor) acceptor).acceptsEnergyFrom(VectorHelper.getTileEntityFromSide(acceptor.worldObj, new Vector3(acceptor), ForgeDirection.getOrientation(i)), ForgeDirection.getOrientation(i)) && this.getConductors().contains(VectorHelper.getConnectorFromSide(acceptor.worldObj, new Vector3(acceptor), ForgeDirection.getOrientation(i)))) - { - possibleDirections.add(ForgeDirection.getOrientation(i)); - } - - this.electricalTiles.put(acceptor, possibleDirections); - continue; - } - - if (Compatibility.isBuildcraftLoaded() && acceptor instanceof IPowerReceptor) - { - ArrayList possibleDirections = null; - - if (this.electricalTiles.containsKey(acceptor)) - { - possibleDirections = this.electricalTiles.get(acceptor); - } - else - { - possibleDirections = new ArrayList(); - } - - if (this.getConductors().contains(VectorHelper.getConnectorFromSide(acceptor.worldObj, new Vector3(acceptor), ForgeDirection.getOrientation(i)))) - { - possibleDirections.add(ForgeDirection.getOrientation(i)); - } - - this.electricalTiles.put(acceptor, possibleDirections); - continue; - } - } - } - } - } - catch (Exception e) - { - FMLLog.severe("Universal Electricity: Failed to refresh conductor."); - e.printStackTrace(); - } - } - - @Override - public void merge(IElectricityNetwork network) - { - if (network != null && network != this) - { - UniversalNetwork newNetwork = new UniversalNetwork(); - newNetwork.getConductors().addAll(this.getConductors()); - newNetwork.getConductors().addAll(network.getConductors()); - newNetwork.refresh(); - } - } - - @Override - public void split(IConductor splitPoint) - { - if (splitPoint instanceof TileEntity) - { - this.getConductors().remove(splitPoint); - - /** - * Loop through the connected blocks and attempt to see if there are connections between - * the two points elsewhere. - */ - TileEntity[] connectedBlocks = splitPoint.getAdjacentConnections(); - - for (int i = 0; i < connectedBlocks.length; i++) - { - TileEntity connectedBlockA = connectedBlocks[i]; - - if (connectedBlockA instanceof INetworkConnection) - { - for (int ii = 0; ii < connectedBlocks.length; ii++) - { - final TileEntity connectedBlockB = connectedBlocks[ii]; - - if (connectedBlockA != connectedBlockB && connectedBlockB instanceof INetworkConnection) - { - Pathfinder finder = new PathfinderChecker(((TileEntity) splitPoint).worldObj, (INetworkConnection) connectedBlockB, splitPoint); - finder.init(new Vector3(connectedBlockA)); - - if (finder.results.size() > 0) - { - /** - * The connections A and B are still intact elsewhere. Set all - * references of wire connection into one network. - */ - - for (Vector3 node : finder.closedSet) - { - TileEntity nodeTile = node.getTileEntity(((TileEntity) splitPoint).worldObj); - - if (nodeTile instanceof INetworkProvider) - { - if (nodeTile != splitPoint) - { - ((INetworkProvider) nodeTile).setNetwork(this); - } - } - } - } - else - { - /** - * The connections A and B are not connected anymore. Give both of - * them a new network. - */ - IElectricityNetwork newNetwork = new UniversalNetwork(); - - for (Vector3 node : finder.closedSet) - { - TileEntity nodeTile = node.getTileEntity(((TileEntity) splitPoint).worldObj); - - if (nodeTile instanceof INetworkProvider) - { - if (nodeTile != splitPoint) - { - newNetwork.getConductors().add((IConductor) nodeTile); - } - } - } - - newNetwork.refresh(); - } - } - } - } - } - } - } - - @Override - public String toString() - { - return "UniversalNetwork[" + this.hashCode() + "|Wires:" + this.getConductors().size() + "|Acceptors:" + this.electricalTiles.size() + "]"; - } -} diff --git a/APIs/universalelectricity/core/UniversalElectricity.java b/APIs/universalelectricity/core/UniversalElectricity.java deleted file mode 100644 index cb430a6a6..000000000 --- a/APIs/universalelectricity/core/UniversalElectricity.java +++ /dev/null @@ -1,86 +0,0 @@ -package universalelectricity.core; - -import java.io.File; - -import net.minecraft.block.material.MapColor; -import net.minecraft.block.material.Material; -import net.minecraftforge.common.Configuration; -import net.minecraftforge.common.MinecraftForge; -import cpw.mods.fml.common.Loader; - -/** - * General Universal Electricity class. - * - * @author Calclavia - * - */ -public class UniversalElectricity -{ - /** - * The version of the Universal Electricity API. - */ - public static final String MAJOR_VERSION = "@MAJOR@"; - public static final String MINOR_VERSION = "@MINOR@"; - public static final String REVISION_VERSION = "@REVIS@"; - public static final String BUILD_VERSION = "@BUILD@"; - public static final String VERSION = MAJOR_VERSION + "." + MINOR_VERSION + "." + REVISION_VERSION; - - /** - * The Universal Electricity configuration file. - */ - public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), "UniversalElectricity.cfg")); - - /** - * Is Universal Electricity currently being voltage sensitive? If so, all machines should - * explode under high voltage and react to different amounts of voltage differently. - */ - public static boolean isVoltageSensitive = false; - - //TODO: Enable this next major MC version - //public static float DEFAULT_VOLTAGE = 1; - - /** - * Set this value to true if your mod contains and has the ability to transfer electricity via - * the ElectricityNetwork. Examples would be a mod that adds any sort of wire. This value will - * be true as long as there is a way to conduct electricity. - */ - @Deprecated - public static boolean isNetworkActive = false; - - /** - * A general material that can be used by machines. Breakable by hand, suitable for machines. - */ - public static final Material machine = new Material(MapColor.ironColor); - - private static boolean INIT = false; - - static - { - initiate(); - } - - public static void initiate() - { - if (!INIT) - { - /** - * Loads the configuration and sets all the values. - */ - CONFIGURATION.load(); - isVoltageSensitive = CONFIGURATION.get("Compatiblity", "Is Voltage Sensitive", isVoltageSensitive).getBoolean(isVoltageSensitive); - isNetworkActive = CONFIGURATION.get("Compatiblity", "Is Network Active", isNetworkActive).getBoolean(isNetworkActive); - CONFIGURATION.save(); - - try - { - MinecraftForge.EVENT_BUS.register(Class.forName("universalelectricity.core.electricity.ElectricityHelper").newInstance()); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - INIT = true; - } -} diff --git a/APIs/universalelectricity/core/block/IConductor.java b/APIs/universalelectricity/core/block/IConductor.java deleted file mode 100644 index 3adc83a1f..000000000 --- a/APIs/universalelectricity/core/block/IConductor.java +++ /dev/null @@ -1,17 +0,0 @@ -package universalelectricity.core.block; - -public interface IConductor extends INetworkProvider, INetworkConnection -{ - /** - * Gets the resistance of the conductor. Used to calculate energy loss. A higher resistance - * means a higher energy loss. - * - * @return The amount of resistance in Ohms. - */ - public float getResistance(); - - /** - * @return The maximum amount of amps this conductor can handle before melting down. - */ - public float getCurrentCapacity(); -} diff --git a/APIs/universalelectricity/core/block/IConnector.java b/APIs/universalelectricity/core/block/IConnector.java deleted file mode 100644 index c2f8f8baf..000000000 --- a/APIs/universalelectricity/core/block/IConnector.java +++ /dev/null @@ -1,18 +0,0 @@ -package universalelectricity.core.block; - -import net.minecraftforge.common.ForgeDirection; - -/** - * Applied to TileEntities that can connect to an electrical network. - * - * @author Calclavia - * - */ -public interface IConnector -{ - - /** - * @return If the connection is possible. - */ - public boolean canConnect(ForgeDirection direction); -} diff --git a/APIs/universalelectricity/core/block/IElectrical.java b/APIs/universalelectricity/core/block/IElectrical.java deleted file mode 100644 index 7c4fe75c1..000000000 --- a/APIs/universalelectricity/core/block/IElectrical.java +++ /dev/null @@ -1,53 +0,0 @@ -package universalelectricity.core.block; - -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.electricity.ElectricityPack; - -/** - * Applied to all TileEntities that can interact with electricity. - * - * @author Calclavia, King_Lemming - * - */ -public interface IElectrical extends IConnector -{ - /** - * Adds electricity to an block. Returns the quantity of electricity that was accepted. This - * should always return 0 if the block cannot be externally charged. - * - * @param from Orientation the electricity is sent in from. - * @param receive Maximum amount of electricity to be sent into the block. - * @param doReceive If false, the charge will only be simulated. - * @return Amount of energy that was accepted by the block. - */ - public float receiveElectricity(ForgeDirection from, ElectricityPack receive, boolean doReceive); - - /** - * Adds electricity to an block. Returns the ElectricityPack, the electricity provided. This - * should always return null if the block cannot be externally discharged. - * - * @param from Orientation the electricity is requested from. - * @param energy Maximum amount of energy to be sent into the block. - * @param doReceive If false, the charge will only be simulated. - * @return Amount of energy that was given out by the block. - */ - public ElectricityPack provideElectricity(ForgeDirection from, ElectricityPack request, boolean doProvide); - - /** - * @return How much energy does this TileEntity want? - */ - public float getRequest(ForgeDirection direction); - - /** - * @return How much energy does this TileEntity want to provide? - */ - public float getProvide(ForgeDirection direction); - - /** - * Gets the voltage of this TileEntity. - * - * @return The amount of volts. E.g 120v or 240v - */ - public float getVoltage(); - -} diff --git a/APIs/universalelectricity/core/block/IElectricalStorage.java b/APIs/universalelectricity/core/block/IElectricalStorage.java deleted file mode 100644 index 758c34dba..000000000 --- a/APIs/universalelectricity/core/block/IElectricalStorage.java +++ /dev/null @@ -1,24 +0,0 @@ -package universalelectricity.core.block; - -/** - * This interface is to be applied to all TileEntities which stores electricity within them. - * - * @author Calclavia - */ -public interface IElectricalStorage -{ - /** - * Sets the amount of joules this unit has stored. - */ - public void setEnergyStored(float energy); - - /** - * * @return Get the amount of energy currently stored in the block. - */ - public float getEnergyStored(); - - /** - * @return Get the max amount of energy that can be stored in the block. - */ - public float getMaxEnergyStored(); -} diff --git a/APIs/universalelectricity/core/block/INetworkConnection.java b/APIs/universalelectricity/core/block/INetworkConnection.java deleted file mode 100644 index e20669e4a..000000000 --- a/APIs/universalelectricity/core/block/INetworkConnection.java +++ /dev/null @@ -1,26 +0,0 @@ -package universalelectricity.core.block; - -import net.minecraft.tileentity.TileEntity; - -/** - * Applied to TileEntities. - * - * @author Calclavia - * - */ -public interface INetworkConnection extends IConnector -{ - - /** - * Gets a list of all the connected TileEntities that this conductor is connected to. The - * array's length should be always the 6 adjacent wires. - * - * @return - */ - public TileEntity[] getAdjacentConnections(); - - /** - * Refreshes the conductor - */ - public void refresh(); -} diff --git a/APIs/universalelectricity/core/block/INetworkProvider.java b/APIs/universalelectricity/core/block/INetworkProvider.java deleted file mode 100644 index 1e2a6c443..000000000 --- a/APIs/universalelectricity/core/block/INetworkProvider.java +++ /dev/null @@ -1,16 +0,0 @@ -package universalelectricity.core.block; - -import universalelectricity.core.grid.IElectricityNetwork; - -/** - * Applied to TileEntities that has an instance of an electricity network. - * - * @author Calclavia - * - */ -public interface INetworkProvider -{ - public IElectricityNetwork getNetwork(); - - public void setNetwork(IElectricityNetwork network); -} diff --git a/APIs/universalelectricity/core/electricity/ElectricalEvent.java b/APIs/universalelectricity/core/electricity/ElectricalEvent.java deleted file mode 100644 index c71a5ea27..000000000 --- a/APIs/universalelectricity/core/electricity/ElectricalEvent.java +++ /dev/null @@ -1,68 +0,0 @@ -package universalelectricity.core.electricity; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.event.Cancelable; -import net.minecraftforge.event.Event; -import universalelectricity.core.block.IElectrical; -import universalelectricity.core.grid.IElectricityNetwork; - -public class ElectricalEvent extends Event -{ - /** - * Call this to have your TileEntity produce power into the network. - * - * @author Calclavia - * - */ - @Cancelable - public static class ElectricityProduceEvent extends ElectricalEvent - { - public World world; - public IElectrical tileEntity; - - public ElectricityProduceEvent(IElectrical tileEntity) - { - this.tileEntity = tileEntity; - this.world = ((TileEntity) this.tileEntity).worldObj; - } - } - - public static class NetworkEvent extends ElectricalEvent - { - public final IElectricityNetwork network; - public ElectricityPack electricityPack; - public TileEntity[] ignoreTiles; - - public NetworkEvent(IElectricityNetwork network, ElectricityPack electricityPack, TileEntity... ignoreTiles) - { - this.network = network; - this.electricityPack = electricityPack; - this.ignoreTiles = ignoreTiles; - } - } - - /** - * Internal Events. These events are fired when something happens in the network. - * - * @author Calclavia - * - */ - @Cancelable - public static class ElectricityProductionEvent extends NetworkEvent - { - public ElectricityProductionEvent(IElectricityNetwork network, ElectricityPack electricityPack, TileEntity... ignoreTiles) - { - super(network, electricityPack, ignoreTiles); - } - } - - public static class ElectricityRequestEvent extends NetworkEvent - { - public ElectricityRequestEvent(IElectricityNetwork network, ElectricityPack electricityPack, TileEntity... ignoreTiles) - { - super(network, electricityPack, ignoreTiles); - } - } - -} diff --git a/APIs/universalelectricity/core/electricity/ElectricityDisplay.java b/APIs/universalelectricity/core/electricity/ElectricityDisplay.java deleted file mode 100644 index f3e5221d5..000000000 --- a/APIs/universalelectricity/core/electricity/ElectricityDisplay.java +++ /dev/null @@ -1,199 +0,0 @@ -package universalelectricity.core.electricity; - -/** - * An easy way to display information on electricity for the client. - * - * @author Calclavia - */ -public class ElectricityDisplay -{ - /** - * Universal Electricity's units are in KILOJOULES, KILOWATTS and KILOVOLTS. Try to make your - * energy ratio as close to real life as possible. - */ - public static enum ElectricUnit - { - AMPERE("Amp", "I"), AMP_HOUR("Amp Hour", "Ah"), VOLTAGE("Volt", "V"), WATT("Watt", "W"), - WATT_HOUR("Watt Hour", "Wh"), RESISTANCE("Ohm", "R"), CONDUCTANCE("Siemen", "S"), - JOULES("Joule", "J"); - - public String name; - public String symbol; - - private ElectricUnit(String name, String symbol) - { - this.name = name; - this.symbol = symbol; - } - - public String getPlural() - { - return this.name + "s"; - } - } - - /** Metric system of measurement. */ - public static enum MeasurementUnit - { - MICRO("Micro", "u", 0.000001f), MILLI("Milli", "m", 0.001f), BASE("", "", 1), - KILO("Kilo", "k", 1000f), MEGA("Mega", "M", 1000000f), GIGA("Giga", "G", 1000000000f), - TERA("Tera", "T", 1000000000000f), PETA("Peta", "P", 1000000000000000f), - EXA("Exa", "E", 1000000000000000000f), ZETTA("Zetta", "Z", 1000000000000000000000f), - YOTTA("Yotta", "Y", 1000000000000000000000000f); - - /** long name for the unit */ - public String name; - /** short unit version of the unit */ - public String symbol; - /** Point by which a number is consider to be of this unit */ - public float value; - - private MeasurementUnit(String name, String symbol, float value) - { - this.name = name; - this.symbol = symbol; - this.value = value; - } - - public String getName(boolean getShort) - { - if (getShort) - { - return symbol; - } - else - { - return name; - } - } - - /** Divides the value by the unit value start */ - public double process(double value) - { - return value / this.value; - } - - /** Checks if a value is above the unit value start */ - public boolean isAbove(float value) - { - return value > this.value; - } - - /** Checks if a value is lower than the unit value start */ - public boolean isBellow(float value) - { - return value < this.value; - } - } - - /** By default, mods should store energy in Kilo-Joules, hence a multiplier of 1/1000. */ - public static String getDisplay(float value, ElectricUnit unit, int decimalPlaces, boolean isShort) - { - return getDisplay(value, unit, decimalPlaces, isShort, 1000); - } - - /** - * Displays the unit as text. Does handle negative numbers, and will place a negative sign in - * front of the output string showing this. Use string.replace to remove the negative sign if - * unwanted - */ - public static String getDisplay(float value, ElectricUnit unit, int decimalPlaces, boolean isShort, float multiplier) - { - String unitName = unit.name; - String prefix = ""; - if (value < 0) - { - value = Math.abs(value); - prefix = "-"; - } - value *= multiplier; - - if (isShort) - { - unitName = unit.symbol; - } - else if (value > 1) - { - unitName = unit.getPlural(); - } - - if (value == 0) - { - return value + " " + unitName; - } - else - { - for (int i = 0; i < MeasurementUnit.values().length; i++) - { - MeasurementUnit lowerMeasure = MeasurementUnit.values()[i]; - if (lowerMeasure.isBellow(value) && lowerMeasure.ordinal() == 0) - { - return prefix + roundDecimals(lowerMeasure.process(value), decimalPlaces) + " " + lowerMeasure.getName(isShort) + unitName; - } - if (lowerMeasure.ordinal() + 1 >= MeasurementUnit.values().length) - { - return prefix + roundDecimals(lowerMeasure.process(value), decimalPlaces) + " " + lowerMeasure.getName(isShort) + unitName; - } - MeasurementUnit upperMeasure = MeasurementUnit.values()[i + 1]; - if ((lowerMeasure.isAbove(value) && upperMeasure.isBellow(value)) || lowerMeasure.value == value) - { - return prefix + roundDecimals(lowerMeasure.process(value), decimalPlaces) + " " + lowerMeasure.getName(isShort) + unitName; - } - } - } - - return prefix + roundDecimals(value, decimalPlaces) + " " + unitName; - } - - public static String getDisplay(float value, ElectricUnit unit) - { - return getDisplay(value, unit, 2, false); - } - - public static String getDisplayShort(float value, ElectricUnit unit) - { - return getDisplay(value, unit, 2, true); - } - - public static String getDisplayShort(float value, ElectricUnit unit, int decimalPlaces) - { - return getDisplay(value, unit, decimalPlaces, true); - } - - public static String getDisplaySimple(float value, ElectricUnit unit, int decimalPlaces) - { - if (value > 1) - { - if (decimalPlaces < 1) - { - return (int) value + " " + unit.getPlural(); - } - - return roundDecimals(value, decimalPlaces) + " " + unit.getPlural(); - } - - if (decimalPlaces < 1) - { - return (int) value + " " + unit.name; - } - - return roundDecimals(value, decimalPlaces) + " " + unit.name; - } - - /** - * Rounds a number to a specific number place places - * - * @param The number - * @return The rounded number - */ - public static double roundDecimals(double d, int decimalPlaces) - { - int j = (int) (d * Math.pow(10, decimalPlaces)); - return j / Math.pow(10, decimalPlaces); - } - - public static double roundDecimals(double d) - { - return roundDecimals(d, 2); - } -} diff --git a/APIs/universalelectricity/core/electricity/ElectricityHelper.java b/APIs/universalelectricity/core/electricity/ElectricityHelper.java deleted file mode 100644 index d1c7e5929..000000000 --- a/APIs/universalelectricity/core/electricity/ElectricityHelper.java +++ /dev/null @@ -1,152 +0,0 @@ -package universalelectricity.core.electricity; - -import java.util.EnumSet; -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.block.IConnector; -import universalelectricity.core.block.INetworkProvider; -import universalelectricity.core.grid.IElectricityNetwork; -import universalelectricity.core.vector.Vector3; - -/** - * A helper class that provides additional useful functions to interact with the ElectricityNetwork - * - * @author Calclavia - * - */ -public class ElectricityHelper -{ - public static EnumSet getDirections(TileEntity tileEntity) - { - EnumSet possibleSides = EnumSet.noneOf(ForgeDirection.class); - - if (tileEntity instanceof IConnector) - { - for (int i = 0; i < 6; i++) - { - ForgeDirection direction = ForgeDirection.getOrientation(i); - if (((IConnector) tileEntity).canConnect(direction)) - { - possibleSides.add(direction); - } - } - } - - return possibleSides; - } - - @Deprecated - public static ElectricityPack produceFromMultipleSides(TileEntity tileEntity, ElectricityPack electricityPack) - { - return ElectricityHelper.produceFromMultipleSides(tileEntity, getDirections(tileEntity), electricityPack); - } - - /** - * Produces electricity from all specified sides. Use this as a simple helper function. - * - * @param tileEntity - The TileEntity consuming the electricity. - * @param approachDirection - The sides in which you can connect to. - * @param producePack - The amount of electricity to be produced. - * @return What remained in the electricity pack. - */ - @Deprecated - public static ElectricityPack produceFromMultipleSides(TileEntity tileEntity, EnumSet approachingDirection, ElectricityPack producingPack) - { - ElectricityPack remainingElectricity = producingPack.clone(); - - if (tileEntity != null && approachingDirection != null) - { - final Set connectedNetworks = ElectricityHelper.getNetworksFromMultipleSides(tileEntity, approachingDirection); - - if (connectedNetworks.size() > 0) - { - /** - * Requests an even amount of electricity from all sides. - */ - float wattsPerSide = (producingPack.getWatts() / connectedNetworks.size()); - float voltage = producingPack.voltage; - - for (IElectricityNetwork network : connectedNetworks) - { - if (wattsPerSide > 0 && producingPack.getWatts() > 0) - { - float amperes = Math.min(wattsPerSide / voltage, network.getRequest(tileEntity).getWatts() / voltage); - - if (amperes > 0) - { - network.produce(new ElectricityPack(amperes, voltage)); - remainingElectricity.amperes -= amperes; - } - } - } - } - } - - return remainingElectricity; - } - - /** - * @param tileEntity - The TileEntity's sides. - * @param approachingDirection - The directions that can be connected. - * @return A list of networks from all specified sides. There will be no repeated - * ElectricityNetworks and it will never return null. - */ - public static Set getNetworksFromMultipleSides(TileEntity tileEntity, EnumSet approachingDirection) - { - final Set connectedNetworks = new HashSet(); - - for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) - { - if (approachingDirection.contains(side)) - { - Vector3 position = new Vector3(tileEntity); - position.modifyPositionFromSide(side); - - TileEntity outputConductor = position.getTileEntity(tileEntity.worldObj); - IElectricityNetwork electricityNetwork = ElectricityHelper.getNetworkFromTileEntity(outputConductor, side); - - if (electricityNetwork != null) - { - connectedNetworks.add(electricityNetwork); - } - } - } - - return connectedNetworks; - } - - /** - * Tries to find the electricity network based in a tile entity and checks to see if it is a - * conductor. All machines should use this function to search for a connecting conductor around - * it. - * - * @param conductor - The TileEntity conductor - * @param approachDirection - The direction you are approaching this wire from. - * @return The ElectricityNetwork or null if not found. - */ - public static IElectricityNetwork getNetworkFromTileEntity(TileEntity tileEntity, ForgeDirection approachDirection) - { - if (tileEntity != null) - { - if (tileEntity instanceof INetworkProvider) - { - if (tileEntity instanceof IConnector) - { - if (((IConnector) tileEntity).canConnect(approachDirection.getOpposite())) - { - return ((INetworkProvider) tileEntity).getNetwork(); - } - } - else - { - return ((INetworkProvider) tileEntity).getNetwork(); - } - } - } - - return null; - } -} diff --git a/APIs/universalelectricity/core/electricity/ElectricityPack.java b/APIs/universalelectricity/core/electricity/ElectricityPack.java deleted file mode 100644 index 4b7a933fb..000000000 --- a/APIs/universalelectricity/core/electricity/ElectricityPack.java +++ /dev/null @@ -1,198 +0,0 @@ -package universalelectricity.core.electricity; - -import java.util.List; - -/** - * A simple way to store electrical data. - * - * @author Calclavia - * - */ -public class ElectricityPack implements Cloneable -{ - public float amperes; - public float voltage; - - public ElectricityPack(float amperes, float voltage) - { - this.amperes = amperes; - this.voltage = voltage; - } - - public ElectricityPack() - { - this(0, 0); - } - - public static ElectricityPack getFromWatts(float watts, float voltage) - { - return new ElectricityPack(watts / voltage, voltage); - } - - /** - * Merges multiple ElectricityPacks together to form one with an average voltage. - */ - public static ElectricityPack merge(ElectricityPack... packs) - { - float totalEnergy = 0; - float totalVoltage = 0; - - for (ElectricityPack pack : packs) - { - totalEnergy += pack.getWatts(); - totalVoltage += pack.voltage; - } - - if (totalEnergy <= 0 || totalVoltage <= 0) - { - return new ElectricityPack(); - } - - return ElectricityPack.getFromWatts(totalEnergy, totalVoltage / packs.length); - } - - public static ElectricityPack merge(List providedPacks) - { - return merge(providedPacks.toArray(new ElectricityPack[0])); - } - - /** - * @return Returns the ElectricityPack with the largest amount of energy. - */ - public static ElectricityPack max(ElectricityPack... packs) - { - ElectricityPack optimalPack = null; - - for (ElectricityPack pack : packs) - { - if (optimalPack == null || (optimalPack != null && pack.getWatts() > optimalPack.getWatts())) - { - optimalPack = pack; - } - } - - return optimalPack; - } - - /** - * @return Returns the ElectricityPack with the smallest amount of energy. - */ - public static ElectricityPack min(ElectricityPack... packs) - { - ElectricityPack optimalPack = null; - - for (ElectricityPack pack : packs) - { - if (optimalPack == null || (optimalPack != null && pack.getWatts() < optimalPack.getWatts())) - { - optimalPack = pack; - } - } - - return optimalPack; - } - - public float getWatts() - { - return getWatts(amperes, voltage); - } - - public float getConductance() - { - return getConductance(amperes, voltage); - } - - public float getResistance() - { - return getResistance(amperes, voltage); - } - - public static float getJoules(float watts, float seconds) - { - return watts * seconds; - } - - public static float getJoules(float amps, float voltage, float seconds) - { - return amps * voltage * seconds; - } - - public static float getWattsFromJoules(float joules, float seconds) - { - return joules / seconds; - } - - public static float getAmps(float watts, float voltage) - { - return watts / voltage; - } - - public static float getAmps(float ampHours) - { - return ampHours * 3600; - } - - public static float getAmpsFromWattHours(float wattHours, float voltage) - { - return getWatts(wattHours) / voltage; - } - - public static float getWattHoursFromAmpHours(float ampHours, float voltage) - { - return ampHours * voltage; - } - - public static float getAmpHours(float amps) - { - return amps / 3600; - } - - public static float getWatts(float amps, float voltage) - { - return amps * voltage; - } - - public static float getWatts(float wattHours) - { - return wattHours * 3600; - } - - public static float getWattHours(float watts) - { - return watts / 3600; - } - - public static float getWattHours(float amps, float voltage) - { - return getWattHours(getWatts(amps, voltage)); - } - - public static float getResistance(float amps, float voltage) - { - return voltage / amps; - } - - public static float getConductance(float amps, float voltage) - { - return amps / voltage; - } - - @Override - public String toString() - { - return "ElectricityPack [Amps:" + this.amperes + " Volts:" + this.voltage + "]"; - } - - @Override - public ElectricityPack clone() - { - return new ElectricityPack(this.amperes, this.voltage); - } - - public boolean isEqual(ElectricityPack electricityPack) - { - return this.amperes == electricityPack.amperes && this.voltage == electricityPack.voltage; - } - - -} diff --git a/APIs/universalelectricity/core/electricity/NetworkLoader.java b/APIs/universalelectricity/core/electricity/NetworkLoader.java deleted file mode 100644 index 08560cfc7..000000000 --- a/APIs/universalelectricity/core/electricity/NetworkLoader.java +++ /dev/null @@ -1,64 +0,0 @@ -package universalelectricity.core.electricity; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - -import universalelectricity.core.block.IConductor; -import universalelectricity.core.grid.IElectricityNetwork; -import cpw.mods.fml.common.FMLLog; - -@SuppressWarnings("unchecked") -public class NetworkLoader -{ - /** - * The default IElectricityNetwork used for primary electrical networks. - */ - public static Class NETWORK_CLASS; - public static final Set> NETWORK_CLASS_REGISTRY = new HashSet>(); - - static - { - setNetworkClass("universalelectricity.core.grid.ElectricityNetwork"); - } - - public static void setNetworkClass(Class networkClass) - { - NETWORK_CLASS_REGISTRY.add(networkClass); - NETWORK_CLASS = networkClass; - } - - public static void setNetworkClass(String className) - { - try - { - setNetworkClass((Class) Class.forName(className)); - } - catch (Exception e) - { - FMLLog.severe("Universal Electricity: Failed to set network class with name " + className); - e.printStackTrace(); - } - } - - public static IElectricityNetwork getNewNetwork(IConductor... conductors) - { - try - { - IElectricityNetwork network = NETWORK_CLASS.newInstance(); - network.getConductors().addAll(Arrays.asList(conductors)); - return network; - } - catch (InstantiationException e) - { - e.printStackTrace(); - } - catch (IllegalAccessException e) - { - e.printStackTrace(); - } - - return null; - } - -} \ No newline at end of file diff --git a/APIs/universalelectricity/core/grid/ElectricityNetwork.java b/APIs/universalelectricity/core/grid/ElectricityNetwork.java deleted file mode 100644 index b73fe7b8d..000000000 --- a/APIs/universalelectricity/core/grid/ElectricityNetwork.java +++ /dev/null @@ -1,356 +0,0 @@ -package universalelectricity.core.grid; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.MinecraftForge; -import universalelectricity.core.block.IConductor; -import universalelectricity.core.block.IConnector; -import universalelectricity.core.block.IElectrical; -import universalelectricity.core.block.INetworkConnection; -import universalelectricity.core.block.INetworkProvider; -import universalelectricity.core.electricity.ElectricalEvent.ElectricityProductionEvent; -import universalelectricity.core.electricity.ElectricalEvent.ElectricityRequestEvent; -import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.core.path.Pathfinder; -import universalelectricity.core.path.PathfinderChecker; -import universalelectricity.core.vector.Vector3; -import universalelectricity.core.vector.VectorHelper; -import cpw.mods.fml.common.FMLLog; - -/** - * An Electrical Network specifies a wire connection. Each wire connection line will have its own - * electrical network. - * - * !! Do not include this class if you do not intend to have custom wires in your mod. This will - * increase future compatibility. !! - * - * @author Calclavia - * - */ -public class ElectricityNetwork implements IElectricityNetwork -{ - public Map> electricalTiles = new HashMap>(); - - private final Set conductors = new HashSet(); - - public float acceptorResistance = 500; - - @Override - public float produce(ElectricityPack electricity, TileEntity... ignoreTiles) - { - ElectricityProductionEvent evt = new ElectricityProductionEvent(this, electricity, ignoreTiles); - MinecraftForge.EVENT_BUS.post(evt); - - float totalEnergy = electricity.getWatts(); - float networkResistance = getTotalResistance(); - float proportionWasted = getTotalResistance() / (getTotalResistance() + acceptorResistance); - float energyWasted = totalEnergy * proportionWasted; - float totalUsableEnergy = totalEnergy - energyWasted; - float remainingUsableEnergy = totalUsableEnergy; - float voltage = electricity.voltage; - - if (!evt.isCanceled()) - { - Set avaliableEnergyTiles = this.getAcceptors(); - - if (!avaliableEnergyTiles.isEmpty()) - { - final float totalEnergyRequest = this.getRequest(ignoreTiles).getWatts(); - - if (totalEnergyRequest > 0) - { - for (TileEntity tileEntity : avaliableEnergyTiles) - { - if (!Arrays.asList(ignoreTiles).contains(tileEntity)) - { - if (tileEntity instanceof IElectrical) - { - IElectrical electricalTile = (IElectrical) tileEntity; - - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - if (electricalTile.canConnect(direction) && this.getConductors().contains(VectorHelper.getConnectorFromSide(tileEntity.worldObj, new Vector3(tileEntity), direction))) - { - float energyToSend = totalUsableEnergy * (electricalTile.getRequest(direction) / totalEnergyRequest); - - if (energyToSend > 0) - { - ElectricityPack electricityToSend = ElectricityPack.getFromWatts(energyToSend, voltage); - - remainingUsableEnergy -= ((IElectrical) tileEntity).receiveElectricity(direction, electricityToSend, true); - } - } - } - } - } - } - } - } - } - - return remainingUsableEnergy; - } - - /** - * @return How much electricity this network needs. - */ - @Override - public ElectricityPack getRequest(TileEntity... ignoreTiles) - { - List requests = new ArrayList(); - - Iterator it = this.getAcceptors().iterator(); - - while (it.hasNext()) - { - TileEntity tileEntity = it.next(); - - if (Arrays.asList(ignoreTiles).contains(tileEntity)) - { - continue; - } - - if (tileEntity instanceof IElectrical) - { - if (!tileEntity.isInvalid()) - { - if (tileEntity.worldObj.getBlockTileEntity(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord) == tileEntity) - { - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - if (((IElectrical) tileEntity).canConnect(direction) && this.getConductors().contains(VectorHelper.getConnectorFromSide(tileEntity.worldObj, new Vector3(tileEntity), direction))) - { - requests.add(ElectricityPack.getFromWatts(((IElectrical) tileEntity).getRequest(direction), ((IElectrical) tileEntity).getVoltage())); - continue; - } - } - } - } - } - } - - ElectricityPack mergedPack = ElectricityPack.merge(requests); - ElectricityRequestEvent evt = new ElectricityRequestEvent(this, mergedPack, ignoreTiles); - MinecraftForge.EVENT_BUS.post(evt); - return mergedPack; - } - - /** - * @return Returns all producers in this electricity network. - */ - @Override - public Set getAcceptors() - { - return this.electricalTiles.keySet(); - } - - /** - * @param tile The tile to get connections for - * @return The list of directions that can be connected to for the provided tile - */ - @Override - public ArrayList getPossibleDirections(TileEntity tile) - { - return this.electricalTiles.containsKey(tile) ? this.electricalTiles.get(tile) : null; - } - - /** - * This function is called to refresh all conductors in this network - */ - @Override - public void refresh() - { - this.electricalTiles.clear(); - - try - { - Iterator it = this.conductors.iterator(); - - while (it.hasNext()) - { - IConductor conductor = it.next(); - - if (conductor == null) - { - it.remove(); - } - else if (((TileEntity) conductor).isInvalid()) - { - it.remove(); - } - else - { - conductor.setNetwork(this); - } - - for (int i = 0; i < conductor.getAdjacentConnections().length; i++) - { - TileEntity acceptor = conductor.getAdjacentConnections()[i]; - - if (!(acceptor instanceof IConductor) && acceptor instanceof IConnector) - { - ArrayList possibleDirections = null; - - if (this.electricalTiles.containsKey(acceptor)) - { - possibleDirections = this.electricalTiles.get(acceptor); - } - else - { - possibleDirections = new ArrayList(); - } - - possibleDirections.add(ForgeDirection.getOrientation(i)); - - this.electricalTiles.put(acceptor, possibleDirections); - } - } - } - } - catch (Exception e) - { - FMLLog.severe("Universal Electricity: Failed to refresh conductor."); - e.printStackTrace(); - } - } - - @Override - public float getTotalResistance() - { - float resistance = 0; - - for (IConductor conductor : this.conductors) - { - resistance += conductor.getResistance(); - } - - return resistance; - } - - @Override - public float getLowestCurrentCapacity() - { - float lowestAmperage = 0; - - for (IConductor conductor : this.conductors) - { - if (lowestAmperage == 0 || conductor.getCurrentCapacity() < lowestAmperage) - { - lowestAmperage = conductor.getCurrentCapacity(); - } - } - - return lowestAmperage; - } - - @Override - public Set getConductors() - { - return this.conductors; - } - - @Override - public void merge(IElectricityNetwork network) - { - if (network != null && network != this) - { - ElectricityNetwork newNetwork = new ElectricityNetwork(); - newNetwork.getConductors().addAll(this.getConductors()); - newNetwork.getConductors().addAll(network.getConductors()); - newNetwork.refresh(); - } - } - - @Override - public void split(IConductor splitPoint) - { - if (splitPoint instanceof TileEntity) - { - this.getConductors().remove(splitPoint); - - /** - * Loop through the connected blocks and attempt to see if there are connections between - * the two points elsewhere. - */ - TileEntity[] connectedBlocks = splitPoint.getAdjacentConnections(); - - for (int i = 0; i < connectedBlocks.length; i++) - { - TileEntity connectedBlockA = connectedBlocks[i]; - - if (connectedBlockA instanceof INetworkConnection) - { - for (int ii = 0; ii < connectedBlocks.length; ii++) - { - final TileEntity connectedBlockB = connectedBlocks[ii]; - - if (connectedBlockA != connectedBlockB && connectedBlockB instanceof INetworkConnection) - { - Pathfinder finder = new PathfinderChecker(((TileEntity) splitPoint).worldObj, (INetworkConnection) connectedBlockB, splitPoint); - finder.init(new Vector3(connectedBlockA)); - - if (finder.results.size() > 0) - { - /** - * The connections A and B are still intact elsewhere. Set all - * references of wire connection into one network. - */ - - for (Vector3 node : finder.closedSet) - { - TileEntity nodeTile = node.getTileEntity(((TileEntity) splitPoint).worldObj); - - if (nodeTile instanceof INetworkProvider) - { - if (nodeTile != splitPoint) - { - ((INetworkProvider) nodeTile).setNetwork(this); - } - } - } - } - else - { - /** - * The connections A and B are not connected anymore. Give both of - * them a new network. - */ - IElectricityNetwork newNetwork = new ElectricityNetwork(); - - for (Vector3 node : finder.closedSet) - { - TileEntity nodeTile = node.getTileEntity(((TileEntity) splitPoint).worldObj); - - if (nodeTile instanceof INetworkProvider) - { - if (nodeTile != splitPoint) - { - newNetwork.getConductors().add((IConductor) nodeTile); - } - } - } - - newNetwork.refresh(); - } - } - } - } - } - } - } - - @Override - public String toString() - { - return "ElectricityNetwork[" + this.hashCode() + "|Wires:" + this.conductors.size() + "|Acceptors:" + this.electricalTiles.size() + "]"; - } -} diff --git a/APIs/universalelectricity/core/grid/IElectricityNetwork.java b/APIs/universalelectricity/core/grid/IElectricityNetwork.java deleted file mode 100644 index 3f6f30050..000000000 --- a/APIs/universalelectricity/core/grid/IElectricityNetwork.java +++ /dev/null @@ -1,38 +0,0 @@ -package universalelectricity.core.grid; - -import net.minecraft.tileentity.TileEntity; -import universalelectricity.core.block.IConductor; -import universalelectricity.core.electricity.ElectricityPack; - -/** - * The Electrical Network in interface form. - * - * @author Calclavia - * - */ -public interface IElectricityNetwork extends IGridNetwork -{ - /** - * Produces electricity in this electrical network. - * - * @return Rejected energy in Joules. - */ - public float produce(ElectricityPack electricityPack, TileEntity... ignoreTiles); - - /** - * Gets the total amount of electricity requested/needed in the electricity network. - * - * @param ignoreTiles The TileEntities to ignore during this calculation (optional). - */ - public ElectricityPack getRequest(TileEntity... ignoreTiles); - - /** - * @return The total amount of resistance of this electrical network. In Ohms. - */ - public float getTotalResistance(); - - /** - * @return The lowest amount of current (amperage) that this electrical network can tolerate. - */ - public float getLowestCurrentCapacity(); -} diff --git a/APIs/universalelectricity/core/grid/IGridNetwork.java b/APIs/universalelectricity/core/grid/IGridNetwork.java deleted file mode 100644 index 26d55a8e4..000000000 --- a/APIs/universalelectricity/core/grid/IGridNetwork.java +++ /dev/null @@ -1,66 +0,0 @@ -package universalelectricity.core.grid; - -import java.util.ArrayList; -import java.util.Set; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; - -/** - * Implement this in your network class/interface if you plan to have your own network defined by - * specific conductors and acceptors. - * - * @author aidancbrady - * - * @param - the class/interface Type value in which you implement this - * @param - the class/interface Type which makes up the network's conductor Set - * @param - the class/interface Type which makes up the network's acceptor Set - */ -public interface IGridNetwork -{ - /** - * Refreshes and cleans up conductor references of this network, as well as updating the - * acceptor set. - */ - public void refresh(); - - /** - * Gets the Set of conductors that make up this network. - * - * @return conductor set - */ - public Set getConductors(); - - /** - * Gets the Set of AVAILABLE acceptors in this network. Make sure this doesn't include any stray - * acceptors which cannot accept resources. - * - * @return available acceptor set - */ - public Set getAcceptors(); - - /** - * Gets the list of possible connection directions for the provided TileEntity. Tile must be in - * this network. - * - * @param tile The tile to get connections for - * @return The list of directions that can be connected to for the provided tile - */ - public ArrayList getPossibleDirections(TileEntity tile); - - /** - * Creates a new network that makes up the current network and the network defined in the - * parameters. Be sure to refresh the new network inside this method. - * - * @param network - network to merge - */ - public void merge(N network); - - /** - * Splits a network by the conductor referenced in the parameters. It will then create and - * refresh the new independent networks possibly created by this operation. - * - * @param connection - */ - public void split(C connection); -} diff --git a/APIs/universalelectricity/core/item/ElectricItemHelper.java b/APIs/universalelectricity/core/item/ElectricItemHelper.java deleted file mode 100644 index ef0d9657e..000000000 --- a/APIs/universalelectricity/core/item/ElectricItemHelper.java +++ /dev/null @@ -1,92 +0,0 @@ -package universalelectricity.core.item; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -/** - * Some helper functions for electric items. - * - * @author Calclavia - * - */ -public class ElectricItemHelper -{ - /** - * Recharges an electric item. - * - * @param joules - The joules being provided to the electric item - * @return The total amount of joules provided by the provider. - */ - public static float chargeItem(ItemStack itemStack, float joules) - { - if (itemStack != null) - { - if (itemStack.getItem() instanceof IItemElectric) - { - return ((IItemElectric) itemStack.getItem()).recharge(itemStack, Math.min(((IItemElectric) itemStack.getItem()).getTransfer(itemStack), joules), true); - } - } - - return 0; - } - - /** - * Decharges an electric item. - * - * @param joules - The joules being withdrawn from the electric item - * @return The total amount of joules the provider received. - */ - public static float dischargeItem(ItemStack itemStack, float joules) - { - if (itemStack != null) - { - if (itemStack.getItem() instanceof IItemElectric) - { - return ((IItemElectric) itemStack.getItem()).discharge(itemStack, Math.min(((IItemElectric) itemStack.getItem()).getMaxElectricityStored(itemStack), joules), true); - } - } - - return 0; - } - - /** - * Returns an uncharged version of the electric item. Use this if you want the crafting recipe - * to use a charged version of the electric item instead of an empty version of the electric - * item - * - * @return An electrical ItemStack with a specific charge. - */ - public static ItemStack getWithCharge(ItemStack itemStack, float joules) - { - if (itemStack != null) - { - if (itemStack.getItem() instanceof IItemElectric) - { - ((IItemElectric) itemStack.getItem()).setElectricity(itemStack, joules); - return itemStack; - } - } - - return itemStack; - } - - public static ItemStack getWithCharge(Item item, float joules) - { - return getWithCharge(new ItemStack(item), joules); - } - - public static ItemStack getCloneWithCharge(ItemStack itemStack, float joules) - { - return getWithCharge(itemStack.copy(), joules); - } - - public static ItemStack getUncharged(ItemStack itemStack) - { - return getWithCharge(itemStack, 0); - } - - public static ItemStack getUncharged(Item item) - { - return getUncharged(new ItemStack(item)); - } -} diff --git a/APIs/universalelectricity/core/item/IItemElectric.java b/APIs/universalelectricity/core/item/IItemElectric.java deleted file mode 100644 index cf3b1cf34..000000000 --- a/APIs/universalelectricity/core/item/IItemElectric.java +++ /dev/null @@ -1,56 +0,0 @@ -package universalelectricity.core.item; - -import net.minecraft.item.ItemStack; - -public interface IItemElectric -{ - /** - * Adds energy to an item. Returns the quantity of energy that was accepted. This should always - * return 0 if the item cannot be externally charged. - * - * @param itemStack ItemStack to be charged. - * @param energy Maximum amount of energy to be sent into the item. - * @param doRecharge If false, the charge will only be simulated. - * @return Amount of energy that was accepted by the item. - */ - public float recharge(ItemStack itemStack, float energy, boolean doRecharge); - - /** - * Removes energy from an item. Returns the quantity of energy that was removed. This should - * always return 0 if the item cannot be externally discharged. - * - * @param itemStack ItemStack to be discharged. - * @param energy Maximum amount of energy to be removed from the item. - * @param doDischarge If false, the discharge will only be simulated. - * @return Amount of energy that was removed from the item. - */ - public float discharge(ItemStack itemStack, float energy, boolean doDischarge); - - /** - * Get the amount of energy currently stored in the item. - */ - public float getElectricityStored(ItemStack theItem); - - /** - * Get the max amount of energy that can be stored in the item. - */ - public float getMaxElectricityStored(ItemStack theItem); - - /** - * Sets the amount of energy in the ItemStack. - * - * @param itemStack - the ItemStack. - * @param joules - Amount of electrical energy. - */ - public void setElectricity(ItemStack itemStack, float joules); - - /** - * @return the energy request this ItemStack demands. - */ - public float getTransfer(ItemStack itemStack); - - /** - * @return The voltage in which this item runs on. - */ - public float getVoltage(ItemStack itemStack); -} diff --git a/APIs/universalelectricity/core/item/ItemElectric.java b/APIs/universalelectricity/core/item/ItemElectric.java deleted file mode 100644 index a281c465d..000000000 --- a/APIs/universalelectricity/core/item/ItemElectric.java +++ /dev/null @@ -1,149 +0,0 @@ -package universalelectricity.core.item; - -import java.util.List; - -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTBase; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagDouble; -import net.minecraft.nbt.NBTTagFloat; -import net.minecraft.world.World; -import universalelectricity.core.electricity.ElectricityDisplay; -import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; - -/** Extend from this class if your item requires electricity or to be charged. Optionally, you can - * implement IItemElectric instead. - * - * @author Calclavia */ -public abstract class ItemElectric extends Item implements IItemElectric -{ - public ItemElectric(int id) - { - super(id); - this.setMaxStackSize(1); - this.setMaxDamage(100); - this.setNoRepair(); - } - - @Override - public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4) - { - String color = ""; - float joules = this.getElectricityStored(itemStack); - - if (joules <= this.getMaxElectricityStored(itemStack) / 3) - { - color = "\u00a74"; - } - else if (joules > this.getMaxElectricityStored(itemStack) * 2 / 3) - { - color = "\u00a72"; - } - else - { - color = "\u00a76"; - } - - list.add(color + ElectricityDisplay.getDisplayShort(joules, ElectricUnit.JOULES) + "/" + ElectricityDisplay.getDisplayShort(this.getMaxElectricityStored(itemStack), ElectricUnit.JOULES)); - } - - /** Makes sure the item is uncharged when it is crafted and not charged. Change this if you do - * not want this to happen! */ - @Override - public void onCreated(ItemStack itemStack, World par2World, EntityPlayer par3EntityPlayer) - { - this.setElectricity(itemStack, 0); - } - - @Override - public float recharge(ItemStack itemStack, float energy, boolean doReceive) - { - float rejectedElectricity = Math.max((this.getElectricityStored(itemStack) + energy) - this.getMaxElectricityStored(itemStack), 0); - float energyToReceive = energy - rejectedElectricity; - - if (doReceive) - { - this.setElectricity(itemStack, this.getElectricityStored(itemStack) + energyToReceive); - } - - return energyToReceive; - } - - @Override - public float discharge(ItemStack itemStack, float energy, boolean doTransfer) - { - float energyToTransfer = Math.min(this.getElectricityStored(itemStack), energy); - - if (doTransfer) - { - this.setElectricity(itemStack, this.getElectricityStored(itemStack) - energyToTransfer); - } - - return energyToTransfer; - } - - @Override - public float getVoltage(ItemStack itemStack) - { - return 0.120f; - } - - @Override - public void setElectricity(ItemStack itemStack, float joules) - { - // Saves the frequency in the ItemStack - if (itemStack.getTagCompound() == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - float electricityStored = Math.max(Math.min(joules, this.getMaxElectricityStored(itemStack)), 0); - itemStack.getTagCompound().setFloat("electricity", electricityStored); - - /** Sets the damage as a percentage to render the bar properly. */ - itemStack.setItemDamage((int) (100 - (electricityStored / getMaxElectricityStored(itemStack)) * 100)); - } - - @Override - public float getTransfer(ItemStack itemStack) - { - return this.getMaxElectricityStored(itemStack) - this.getElectricityStored(itemStack); - } - - /** Gets the energy stored in the item. Energy is stored using item NBT */ - @Override - public float getElectricityStored(ItemStack itemStack) - { - if (itemStack.getTagCompound() == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - float energyStored = 0f; - if (itemStack.getTagCompound().hasKey("electricity")) - { - NBTBase obj = itemStack.getTagCompound().getTag("electricity"); - if (obj instanceof NBTTagDouble) - { - energyStored = (float) ((NBTTagDouble) obj).data; - } - else if (obj instanceof NBTTagFloat) - { - energyStored = ((NBTTagFloat) obj).data; - } - } - - /** Sets the damage as a percentage to render the bar properly. */ - itemStack.setItemDamage((int) (100 - (energyStored / getMaxElectricityStored(itemStack)) * 100)); - return energyStored; - } - - @Override - public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) - { - par3List.add(ElectricItemHelper.getUncharged(new ItemStack(this))); - par3List.add(ElectricItemHelper.getWithCharge(new ItemStack(this), this.getMaxElectricityStored(new ItemStack(this)))); - } -} diff --git a/APIs/universalelectricity/core/path/IPathCallBack.java b/APIs/universalelectricity/core/path/IPathCallBack.java deleted file mode 100644 index c696cdc3a..000000000 --- a/APIs/universalelectricity/core/path/IPathCallBack.java +++ /dev/null @@ -1,25 +0,0 @@ -package universalelectricity.core.path; - -import java.util.Set; - -import universalelectricity.core.vector.Vector3; - -public interface IPathCallBack -{ - /** - * @param finder - The Pathfinder object. - * @param currentNode - The node being iterated through. - * @return A set of nodes connected to the currentNode. Essentially one should return a set of - * neighboring nodes. - */ - public Set getConnectedNodes(Pathfinder finder, Vector3 currentNode); - - /** - * Called when looping through nodes. - * - * @param finder - The Pathfinder. - * @param node - The node being searched. - * @return True to stop the path finding operation. - */ - public boolean onSearch(Pathfinder finder, Vector3 node); -} \ No newline at end of file diff --git a/APIs/universalelectricity/core/path/Pathfinder.java b/APIs/universalelectricity/core/path/Pathfinder.java deleted file mode 100644 index 1bd572416..000000000 --- a/APIs/universalelectricity/core/path/Pathfinder.java +++ /dev/null @@ -1,79 +0,0 @@ -package universalelectricity.core.path; - -import java.util.HashSet; -import java.util.Set; - -import universalelectricity.core.vector.Vector3; - -/** - * A class that allows flexible pathfinding for different positions. Compared to AStar pathfinding, - * this version is faster but does not calculated the most optimal path. - * - * @author Calclavia - * - */ -public class Pathfinder -{ - /** - * A pathfinding call back interface used to call back on paths. - */ - public IPathCallBack callBackCheck; - - /** - * A list of nodes that the pathfinder already went through. - */ - public Set closedSet; - - /** - * The resulted path found by the pathfinder. Could be null if no path was found. - */ - public Set results; - - public Pathfinder(IPathCallBack callBack) - { - this.callBackCheck = callBack; - this.reset(); - } - - /** - * @return True on success finding, false on failure. - */ - public boolean findNodes(Vector3 currentNode) - { - this.closedSet.add(currentNode); - - if (this.callBackCheck.onSearch(this, currentNode)) - { - return false; - } - - for (Vector3 node : this.callBackCheck.getConnectedNodes(this, currentNode)) - { - if (!this.closedSet.contains(node)) - { - if (this.findNodes(node)) - { - return true; - } - } - } - - return false; - } - - /** - * Called to execute the pathfinding operation. - */ - public Pathfinder init(Vector3 startNode) - { - this.findNodes(startNode); - return this; - } - - public Pathfinder reset() - { - this.closedSet = new HashSet(); - this.results = new HashSet(); - return this; - } -} diff --git a/APIs/universalelectricity/core/path/PathfinderAStar.java b/APIs/universalelectricity/core/path/PathfinderAStar.java deleted file mode 100644 index 825d81eaf..000000000 --- a/APIs/universalelectricity/core/path/PathfinderAStar.java +++ /dev/null @@ -1,175 +0,0 @@ -package universalelectricity.core.path; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Set; - -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.vector.Vector3; - -/** - * An advanced version of pathfinding to find the shortest path between two points. Uses the A* - * Pathfinding algorithm. - * - * @author Calclavia - * - */ -public class PathfinderAStar extends Pathfinder -{ - /** - * A pathfinding call back interface used to call back on paths. - */ - public IPathCallBack callBackCheck; - - /** - * The set of tentative nodes to be evaluated, initially containing the start node - */ - public Set openSet; - - /** - * The map of navigated nodes storing the data of which position came from which in the format - * of: X came from Y. - */ - public HashMap navigationMap; - - /** - * Score values, used to determine the score for a path to evaluate how optimal the path is. - * G-Score is the cost along the best known path while F-Score is the total cost. - */ - public HashMap gScore, fScore; - - /** - * The node in which the pathfinder is trying to reach. - */ - public Vector3 goal; - - public PathfinderAStar(IPathCallBack callBack, Vector3 goal) - { - super(callBack); - this.goal = goal; - } - - @Override - public boolean findNodes(Vector3 start) - { - this.openSet.add(start); - this.gScore.put(start, 0d); - this.fScore.put(start, this.gScore.get(start) + getHeuristicEstimatedCost(start, this.goal)); - - while (!this.openSet.isEmpty()) - { - // Current is the node in openset having the lowest f_score[] value - Vector3 currentNode = null; - - double lowestFScore = 0; - - for (Vector3 node : this.openSet) - { - if (currentNode == null || this.fScore.get(node) < lowestFScore) - { - currentNode = node; - lowestFScore = this.fScore.get(node); - } - } - - if (currentNode == null) - { - break; - } - - if (this.callBackCheck.onSearch(this, currentNode)) - { - return false; - } - - if (currentNode.equals(this.goal)) - { - this.results = reconstructPath(this.navigationMap, goal); - return true; - } - - this.openSet.remove(currentNode); - this.closedSet.add(currentNode); - - for (Vector3 neighbor : getNeighborNodes(currentNode)) - { - double tentativeGScore = this.gScore.get(currentNode) + currentNode.distanceTo(neighbor); - - if (this.closedSet.contains(neighbor)) - { - if (tentativeGScore >= this.gScore.get(neighbor)) - { - continue; - } - } - - if (!this.openSet.contains(neighbor) || tentativeGScore < this.gScore.get(neighbor)) - { - this.navigationMap.put(neighbor, currentNode); - this.gScore.put(neighbor, tentativeGScore); - this.fScore.put(neighbor, gScore.get(neighbor) + getHeuristicEstimatedCost(neighbor, goal)); - this.openSet.add(neighbor); - } - } - } - - return false; - } - - @Override - public Pathfinder reset() - { - this.openSet = new HashSet(); - this.navigationMap = new HashMap(); - return super.reset(); - } - - /** - * A recursive function to back track and find the path in which we have analyzed. - */ - public Set reconstructPath(HashMap nagivationMap, Vector3 current_node) - { - Set path = new HashSet(); - path.add(current_node); - - if (nagivationMap.containsKey(current_node)) - { - path.addAll(reconstructPath(nagivationMap, nagivationMap.get(current_node))); - return path; - } - else - { - return path; - } - } - - /** - * @return An estimated cost between two points. - */ - public double getHeuristicEstimatedCost(Vector3 start, Vector3 goal) - { - return start.distanceTo(goal); - } - - /** - * @return A Set of neighboring Vector3 positions. - */ - public Set getNeighborNodes(Vector3 vector) - { - if (this.callBackCheck != null) - { - return this.callBackCheck.getConnectedNodes(this, vector); - } - else - { - Set neighbors = new HashSet(); - - for (int i = 0; i < 6; i++) - { - neighbors.add(vector.clone().modifyPositionFromSide(ForgeDirection.getOrientation(i))); - } - - return neighbors; - } - } -} diff --git a/APIs/universalelectricity/core/path/PathfinderChecker.java b/APIs/universalelectricity/core/path/PathfinderChecker.java deleted file mode 100644 index ca242cb4c..000000000 --- a/APIs/universalelectricity/core/path/PathfinderChecker.java +++ /dev/null @@ -1,62 +0,0 @@ -package universalelectricity.core.path; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.block.IConductor; -import universalelectricity.core.block.INetworkConnection; -import universalelectricity.core.vector.Vector3; - -/** - * Check if a conductor connects with another. - * - * @author Calclavia - * - */ -public class PathfinderChecker extends Pathfinder -{ - public PathfinderChecker(final World world, final INetworkConnection targetConnector, final INetworkConnection... ignoreConnector) - { - super(new IPathCallBack() - { - @Override - public Set getConnectedNodes(Pathfinder finder, Vector3 currentNode) - { - Set neighbors = new HashSet(); - - for (int i = 0; i < 6; i++) - { - ForgeDirection direction = ForgeDirection.getOrientation(i); - Vector3 position = currentNode.clone().modifyPositionFromSide(direction); - TileEntity connectedBlock = position.getTileEntity(world); - - if (connectedBlock instanceof IConductor && !Arrays.asList(ignoreConnector).contains(connectedBlock)) - { - if (((IConductor) connectedBlock).canConnect(direction.getOpposite())) - { - neighbors.add(position); - } - } - } - - return neighbors; - } - - @Override - public boolean onSearch(Pathfinder finder, Vector3 node) - { - if (node.getTileEntity(world) == targetConnector) - { - finder.results.add(node); - return true; - } - - return false; - } - }); - } -} diff --git a/APIs/universalelectricity/core/vector/Quaternion.java b/APIs/universalelectricity/core/vector/Quaternion.java deleted file mode 100644 index 170a39704..000000000 --- a/APIs/universalelectricity/core/vector/Quaternion.java +++ /dev/null @@ -1,213 +0,0 @@ -package universalelectricity.core.vector; - -/** - * Quaternion class designed to be used for the rotation of objects. - * - * Do not use in MC 1.6.4, subject to change! - * - * @author DarkGuardsman, Calclavia - */ -public class Quaternion implements Cloneable -{ - public static final float TOLERANCE = 0.00001f; - public double x, y, z, w; - - public Quaternion() - { - this(0, 0, 0, 1); - } - - public Quaternion(Quaternion copy) - { - this(copy.x, copy.y, copy.z, copy.w); - } - - public Quaternion(double x, double y, double z, double w) - { - this.x = x; - this.y = y; - this.z = z; - this.w = w; - } - - /** - * Convert from Euler Angles. Basically we create 3 Quaternions, one for pitch, one for yaw, one - * for roll and multiply those together. the calculation below does the same, just shorter - */ - public Quaternion(float pitch, float yaw, float roll) - { - float p = (float) (pitch * (Math.PI / 180) / 2.0); - float y = (float) (yaw * (Math.PI / 180) / 2.0); - float r = (float) (roll * (Math.PI / 180) / 2.0); - - float sinp = (float) Math.sin(p); - float siny = (float) Math.sin(y); - float sinr = (float) Math.sin(r); - float cosp = (float) Math.cos(p); - float cosy = (float) Math.cos(y); - float cosr = (float) Math.cos(r); - - this.x = sinr * cosp * cosy - cosr * sinp * siny; - this.y = cosr * sinp * cosy + sinr * cosp * siny; - this.z = cosr * cosp * siny - sinr * sinp * cosy; - this.w = cosr * cosp * cosy + sinr * sinp * siny; - - this.normalize(); - } - - public Quaternion(Vector3 vector, double w) - { - this(vector.x, vector.y, vector.z, w); - } - - public static Quaternion IDENTITY() - { - return new Quaternion(); - } - - public Quaternion set(Quaternion quaternion) - { - this.w = quaternion.w; - this.x = quaternion.x; - this.y = quaternion.y; - this.z = quaternion.z; - return this; - } - - public Quaternion set(double x, double y, double z, double w) - { - return this.set(new Quaternion(x, y, z, w)); - } - - public Quaternion normalize() - { - double magnitude = this.magnitude(); - this.x /= magnitude; - this.y /= magnitude; - this.z /= magnitude; - this.w /= magnitude; - return this; - } - - public double magnitude() - { - return Math.sqrt(this.magnitudeSquared()); - } - - public double magnitudeSquared() - { - return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; - } - - public Quaternion inverse() - { - double d = this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; - return new Quaternion(this.x / d, -this.y / d, -this.z / d, -this.w / d); - } - - /** - * Gets the conjugate of this Quaternion - */ - public Quaternion getConjugate() - { - return this.clone().conjugate(); - } - - public Quaternion conjugate() - { - this.y = -this.y; - this.z = -this.z; - this.w = -this.w; - return this; - } - - /** - * Let the current quaternion be "a". Multiplying the a with b applies the rotation a to b. - */ - public Quaternion getMultiply(Quaternion b) - { - return this.clone().multiply(b); - } - - public Quaternion multiply(Quaternion b) - { - Quaternion a = this; - double newX = a.x * b.x - a.y * b.y - a.z * b.z - a.w * b.w; - double newY = a.x * b.y + a.y * b.x + a.z * b.w - a.w * b.z; - double newZ = a.x * b.z - a.y * b.w + a.z * b.x + a.w * b.y; - double newW = a.x * b.w + a.y * b.z - a.z * b.y + a.w * b.x; - this.set(newX, newY, newZ, newW); - return this; - } - - public Quaternion divide(Quaternion b) - { - Quaternion a = this; - return a.inverse().multiply(b); - } - - /** Multi a vector against this in other words applying rotation */ - public Vector3 multi(Vector3 vec) - { - Vector3 vn = vec.clone(); - - Quaternion vecQuat = new Quaternion(0, 0, 0, 1), resQuat; - vecQuat.x = (float) vn.x; - vecQuat.y = (float) vn.y; - vecQuat.z = (float) vn.z; - vecQuat.w = 0.0f; - - resQuat = vecQuat.multiply(this.getConjugate()); - resQuat = this.multiply(resQuat); - - return new Vector3(resQuat.x, resQuat.y, resQuat.z); - } - - public static Quaternion fromAxis(Vector3 vector, double angle) - { - angle *= 0.5f; - Vector3 vn = vector.clone().normalize(); - float sinAngle = (float) Math.sin(angle); - return new Quaternion(vn.x * sinAngle, vn.y * sinAngle, vn.z * sinAngle, Math.cos(angle)); - } - - /* - * Convert to Matrix public Matrix4 getMatrix() { float x2 = (float) (x * x); float y2 = (float) - * (y * y); float z2 = (float) (z * z); float xy = (float) (x * y); float xz = (float) (x * z); - * float yz = (float) (y * z); float wx = (float) (w * x); float wy = (float) (w * y); float wz - * = (float) (w * z); - * - * // This calculation would be a lot more complicated for non-unit length quaternions // Note: - * The constructor of Matrix4 expects the Matrix in column-major format like expected // by // - * OpenGL return new Matrix4(1.0f - 2.0f * (y2 + z2), 2.0f * (xy - wz), 2.0f * (xz + wy), 0.0f, - * 2.0f * (xy + wz), 1.0f - 2.0f * (x2 + z2), 2.0f * (yz - wx), 0.0f, 2.0f * (xz - wy), 2.0f * - * (yz + wx), 1.0f - 2.0f * (x2 + y2), 0.0f, 0.0f, 0.0f, 0.0f, 1.0f); } - */ - - /** - * Convert to Axis/Angles - * - * @param axis - The axis of rotation - * @param angle - The angle of rotation - */ - public void getAxisAngle(Vector3 axis, float angle) - { - float scale = (float) axis.getMagnitude(); - this.x = this.x / scale; - this.y = this.y / scale; - this.z = this.z / scale; - angle = (float) (Math.acos(this.w) * 2.0f); - } - - @Override - public Quaternion clone() - { - return new Quaternion(this); - } - - @Override - public String toString() - { - return "Quaternion [" + x + ", " + y + ", " + z + ", " + w + "]"; - } -} diff --git a/APIs/universalelectricity/core/vector/Vector2.java b/APIs/universalelectricity/core/vector/Vector2.java deleted file mode 100644 index 1f130d4c0..000000000 --- a/APIs/universalelectricity/core/vector/Vector2.java +++ /dev/null @@ -1,135 +0,0 @@ -package universalelectricity.core.vector; - -/** - * Vector2 Class is used for defining objects in a 2D space. - * - * @author Calclavia - */ - -public class Vector2 implements Cloneable -{ - public double x; - public double y; - - public Vector2() - { - this(0, 0); - } - - public Vector2(double x, double y) - { - this.x = x; - this.y = y; - } - - /** - * Returns the integer floor value. - * - * @return - */ - public int intX() - { - return (int) Math.floor(this.x); - } - - public int intY() - { - return (int) Math.floor(this.y); - } - - /** - * Makes a new copy of this Vector. Prevents variable referencing problems. - */ - @Override - public Vector2 clone() - { - return new Vector2(this.x, this.y); - } - - public static double distance(Vector2 point1, Vector2 point2) - { - double xDifference = point1.x - point2.x; - double yDiference = point1.y - point2.y; - return Math.sqrt(xDifference * xDifference + yDiference * yDiference); - } - - public static double slope(Vector2 point1, Vector2 point2) - { - double xDifference = point1.x - point2.x; - double yDiference = point1.y - point2.y; - return yDiference / xDifference; - } - - public double distanceTo(Vector2 target) - { - double xDifference = this.x - target.x; - double yDifference = this.y - target.y; - return Math.sqrt(xDifference * xDifference + yDifference * yDifference); - } - - public Vector2 add(Vector2 par1) - { - this.x += par1.x; - this.y += par1.y; - return this; - } - - public Vector2 add(double par1) - { - this.x += par1; - this.y += par1; - return this; - } - - public Vector2 invert() - { - this.multiply(-1); - return this; - } - - public Vector2 multiply(double amount) - { - this.x *= amount; - this.y *= amount; - return this; - } - - public Vector2 round() - { - return new Vector2(Math.round(this.x), Math.round(this.y)); - } - - public Vector2 ceil() - { - return new Vector2(Math.ceil(this.x), Math.ceil(this.y)); - } - - public Vector2 floor() - { - return new Vector2(Math.floor(this.x), Math.floor(this.y)); - } - - @Override - public int hashCode() - { - return ("X:" + this.x + "Y:" + this.y).hashCode(); - } - - @Override - public boolean equals(Object o) - { - if (o instanceof Vector2) - { - Vector2 vector = (Vector2) o; - return this.x == vector.x && this.y == vector.y; - } - - return false; - } - - @Override - public String toString() - { - return "Vector2 [" + this.x + "," + this.y + "]"; - } -} \ No newline at end of file diff --git a/APIs/universalelectricity/core/vector/Vector3.java b/APIs/universalelectricity/core/vector/Vector3.java deleted file mode 100644 index 65361a439..000000000 --- a/APIs/universalelectricity/core/vector/Vector3.java +++ /dev/null @@ -1,849 +0,0 @@ -package universalelectricity.core.vector; - -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; - -/** - * Vector3 Class is used for defining objects in a 3D space. - * - * @author Calclavia - */ - -public class Vector3 implements Cloneable -{ - - public double x; - public double y; - public double z; - - public Vector3(double x, double y, double z) - { - this.x = x; - this.y = y; - this.z = z; - } - - public Vector3() - { - this(0, 0, 0); - } - - public Vector3(Vector3 vector) - { - this(vector.x, vector.y, vector.z); - } - - public Vector3(double amount) - { - this(amount, amount, amount); - } - - public Vector3(Entity par1) - { - this(par1.posX, par1.posY, par1.posZ); - } - - public Vector3(TileEntity par1) - { - this(par1.xCoord, par1.yCoord, par1.zCoord); - } - - public Vector3(Vec3 par1) - { - this(par1.xCoord, par1.yCoord, par1.zCoord); - - } - - public Vector3(MovingObjectPosition par1) - { - this(par1.blockX, par1.blockY, par1.blockZ); - } - - public Vector3(ChunkCoordinates par1) - { - this(par1.posX, par1.posY, par1.posZ); - } - - public Vector3(ForgeDirection direction) - { - this(direction.offsetX, direction.offsetY, direction.offsetZ); - } - - /** - * Loads a Vector3 from an NBT compound. - */ - public Vector3(NBTTagCompound nbt) - { - this(nbt.getDouble("x"), nbt.getDouble("y"), nbt.getDouble("z")); - } - - /** - * Get a Vector3 based on the rotationYaw and rotationPitch. - * - * @param rotationYaw - Degree - * @param rotationPitch- Degree - */ - public Vector3(float rotationYaw, float rotationPitch) - { - this(Math.cos(Math.toRadians(rotationYaw + 90)), Math.sin(Math.toRadians(-rotationPitch)), Math.sin(Math.toRadians(rotationYaw + 90))); - } - - /** - * Returns the coordinates as integers, ideal for block placement. - */ - public int intX() - { - return (int) Math.floor(this.x); - } - - public int intY() - { - return (int) Math.floor(this.y); - } - - public int intZ() - { - return (int) Math.floor(this.z); - } - - public float floatX() - { - return (float) this.x; - } - - public float floatY() - { - return (float) this.y; - } - - public float floatZ() - { - return (float) this.z; - } - - /** - * Makes a new copy of this Vector. Prevents variable referencing problems. - */ - @Override - public Vector3 clone() - { - return new Vector3(this); - } - - /** - * Easy block access functions. - * - * @param world - * @return - */ - public int getBlockID(IBlockAccess world) - { - return world.getBlockId(this.intX(), this.intY(), this.intZ()); - } - - public int getBlockMetadata(IBlockAccess world) - { - return world.getBlockMetadata(this.intX(), this.intY(), this.intZ()); - } - - public TileEntity getTileEntity(IBlockAccess world) - { - return world.getBlockTileEntity(this.intX(), this.intY(), this.intZ()); - } - - public boolean setBlock(World world, int id, int metadata, int notify) - { - return world.setBlock(this.intX(), this.intY(), this.intZ(), id, metadata, notify); - } - - public boolean setBlock(World world, int id, int metadata) - { - return this.setBlock(world, id, metadata, 3); - } - - public boolean setBlock(World world, int id) - { - return this.setBlock(world, id, 0); - } - - /** - * ---------------------- CONVERSION FUNCTIONS ---------------------------- - */ - /** - * Converts this Vector3 into a Vector2 by dropping the Y axis. - */ - public Vector2 toVector2() - { - return new Vector2(this.x, this.z); - } - - /** - * Converts this vector three into a Minecraft Vec3 object - */ - public Vec3 toVec3() - { - return Vec3.createVectorHelper(this.x, this.y, this.z); - } - - /** - * Converts Vector3 into a ForgeDirection. - */ - public ForgeDirection toForgeDirection() - { - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - if (this.x == direction.offsetX && this.y == direction.offsetY && this.z == direction.offsetZ) - { - return direction; - } - } - - return ForgeDirection.UNKNOWN; - } - - public double getMagnitude() - { - return Math.sqrt(this.getMagnitudeSquared()); - } - - public double getMagnitudeSquared() - { - return this.x * this.x + this.y * this.y + this.z * this.z; - } - - public Vector3 normalize() - { - double d = this.getMagnitude(); - - if (d != 0) - { - this.scale(1 / d); - } - - return this; - } - - /** - * Gets the distance between two vectors - * - * @return The distance - */ - public static double distance(Vector3 vec1, Vector3 vec2) - { - return vec1.distance(vec2); - } - - @Deprecated - public double distanceTo(Vector3 vector3) - { - return this.distance(vector3); - } - - public double distance(Vector3 compare) - { - Vector3 difference = this.clone().difference(compare); - return difference.getMagnitude(); - } - - /** - * Multiplies the vector by negative one. - */ - public Vector3 invert() - { - this.scale(-1); - return this; - } - - public Vector3 translate(Vector3 par1) - { - this.x += par1.x; - this.y += par1.y; - this.z += par1.z; - return this; - } - - public Vector3 translate(double par1) - { - this.x += par1; - this.y += par1; - this.z += par1; - return this; - } - - public static Vector3 translate(Vector3 translate, Vector3 par1) - { - translate.x += par1.x; - translate.y += par1.y; - translate.z += par1.z; - return translate; - } - - public static Vector3 translate(Vector3 translate, double par1) - { - translate.x += par1; - translate.y += par1; - translate.z += par1; - return translate; - } - - @Deprecated - public Vector3 add(Vector3 amount) - { - return translate(amount); - } - - @Deprecated - public Vector3 add(double amount) - { - return translate(amount); - } - - @Deprecated - public Vector3 subtract(Vector3 amount) - { - return this.translate(amount.clone().invert()); - } - - @Deprecated - public Vector3 subtract(double amount) - { - return this.translate(-amount); - } - - public Vector3 difference(Vector3 amount) - { - return this.translate(amount.clone().invert()); - } - - public Vector3 difference(double amount) - { - return this.translate(-amount); - } - - public Vector3 scale(double amount) - { - this.x *= amount; - this.y *= amount; - this.z *= amount; - return this; - } - - public Vector3 scale(Vector3 amount) - { - this.x *= amount.x; - this.y *= amount.y; - this.z *= amount.z; - return this; - } - - public static Vector3 scale(Vector3 vec, double amount) - { - return vec.scale(amount); - } - - public static Vector3 scale(Vector3 vec, Vector3 amount) - { - return vec.scale(amount); - } - - @Deprecated - public Vector3 multiply(double amount) - { - return this.scale(amount); - } - - @Deprecated - public Vector3 multiply(Vector3 amount) - { - return this.scale(amount); - } - - /** - * Static versions of a lot of functions - */ - @Deprecated - public static Vector3 subtract(Vector3 par1, Vector3 par2) - { - return new Vector3(par1.x - par2.x, par1.y - par2.y, par1.z - par2.z); - } - - @Deprecated - public static Vector3 add(Vector3 par1, Vector3 par2) - { - return new Vector3(par1.x + par2.x, par1.y + par2.y, par1.z + par2.z); - } - - @Deprecated - public static Vector3 add(Vector3 par1, double par2) - { - return new Vector3(par1.x + par2, par1.y + par2, par1.z + par2); - } - - @Deprecated - public static Vector3 multiply(Vector3 vec1, Vector3 vec2) - { - return new Vector3(vec1.x * vec2.x, vec1.y * vec2.y, vec1.z * vec2.z); - } - - @Deprecated - public static Vector3 multiply(Vector3 vec1, double vec2) - { - return new Vector3(vec1.x * vec2, vec1.y * vec2, vec1.z * vec2); - } - - public Vector3 round() - { - return new Vector3(Math.round(this.x), Math.round(this.y), Math.round(this.z)); - } - - public Vector3 ceil() - { - return new Vector3(Math.ceil(this.x), Math.ceil(this.y), Math.ceil(this.z)); - } - - public Vector3 floor() - { - return new Vector3(Math.floor(this.x), Math.floor(this.y), Math.floor(this.z)); - } - - public Vector3 toRound() - { - this.x = Math.round(this.x); - this.y = Math.round(this.y); - this.z = Math.round(this.z); - return this; - } - - public Vector3 toCeil() - { - this.x = Math.ceil(this.x); - this.y = Math.ceil(this.y); - this.z = Math.ceil(this.z); - return this; - } - - public Vector3 toFloor() - { - this.x = Math.floor(this.x); - this.y = Math.floor(this.y); - this.z = Math.floor(this.z); - return this; - } - - /** - * Gets all entities inside of this position in block space. - */ - public List getEntitiesWithin(World worldObj, Class par1Class) - { - return worldObj.getEntitiesWithinAABB(par1Class, AxisAlignedBB.getBoundingBox(this.intX(), this.intY(), this.intZ(), this.intX() + 1, this.intY() + 1, this.intZ() + 1)); - } - - /** - * Gets a position relative to a position's side - * - * @param position - The position - * @param side - The side. 0-5 - * @return The position relative to the original position's side - */ - public Vector3 modifyPositionFromSide(ForgeDirection side, double amount) - { - return this.translate(new Vector3(side).scale(amount)); - } - - public Vector3 modifyPositionFromSide(ForgeDirection side) - { - this.modifyPositionFromSide(side, 1); - return this; - } - - /** - * Cross product functions - * - * @return The cross product between this vector and another. - */ - public Vector3 toCrossProduct(Vector3 compare) - { - double newX = this.y * compare.z - this.z * compare.y; - double newY = this.z * compare.x - this.x * compare.z; - double newZ = this.x * compare.y - this.y * compare.x; - this.x = newX; - this.y = newY; - this.z = newZ; - return this; - } - - public Vector3 crossProduct(Vector3 compare) - { - return this.clone().toCrossProduct(compare); - } - - public Vector3 xCrossProduct() - { - return new Vector3(0.0D, this.z, -this.y); - } - - public Vector3 zCrossProduct() - { - return new Vector3(-this.y, this.x, 0.0D); - } - - public double dotProduct(Vector3 vec2) - { - return this.x * vec2.x + this.y * vec2.y + this.z * vec2.z; - } - - /** - * @return The perpendicular vector. - */ - public Vector3 getPerpendicular() - { - if (this.z == 0.0F) - { - return this.zCrossProduct(); - } - - return this.xCrossProduct(); - } - - /** - * @return True if this Vector3 is zero. - */ - public boolean isZero() - { - return (this.x == 0) && (this.y == 0) && (this.z == 0); - } - - /** - * Rotate by a this vector around an axis. - * - * @return The new Vector3 rotation. - */ - public Vector3 rotate(float angle, Vector3 axis) - { - return translateMatrix(getRotationMatrix(angle, axis), this.clone()); - } - - public double[] getRotationMatrix(float angle) - { - double[] matrix = new double[16]; - Vector3 axis = this.clone().normalize(); - double x = axis.x; - double y = axis.y; - double z = axis.z; - angle *= 0.0174532925D; - float cos = (float) Math.cos(angle); - float ocos = 1.0F - cos; - float sin = (float) Math.sin(angle); - matrix[0] = (x * x * ocos + cos); - matrix[1] = (y * x * ocos + z * sin); - matrix[2] = (x * z * ocos - y * sin); - matrix[4] = (x * y * ocos - z * sin); - matrix[5] = (y * y * ocos + cos); - matrix[6] = (y * z * ocos + x * sin); - matrix[8] = (x * z * ocos + y * sin); - matrix[9] = (y * z * ocos - x * sin); - matrix[10] = (z * z * ocos + cos); - matrix[15] = 1.0F; - return matrix; - } - - public static Vector3 translateMatrix(double[] matrix, Vector3 translation) - { - double x = translation.x * matrix[0] + translation.y * matrix[1] + translation.z * matrix[2] + matrix[3]; - double y = translation.x * matrix[4] + translation.y * matrix[5] + translation.z * matrix[6] + matrix[7]; - double z = translation.x * matrix[8] + translation.y * matrix[9] + translation.z * matrix[10] + matrix[11]; - translation.x = x; - translation.y = y; - translation.z = z; - return translation; - } - - public static double[] getRotationMatrix(float angle, Vector3 axis) - { - return axis.getRotationMatrix(angle); - } - - /** - * Rotates this Vector by a yaw, pitch and roll value. - */ - public void rotate(double yaw, double pitch, double roll) - { - double yawRadians = Math.toRadians(yaw); - double pitchRadians = Math.toRadians(pitch); - double rollRadians = Math.toRadians(roll); - - double x = this.x; - double y = this.y; - double z = this.z; - - this.x = x * Math.cos(yawRadians) * Math.cos(pitchRadians) + z * (Math.cos(yawRadians) * Math.sin(pitchRadians) * Math.sin(rollRadians) - Math.sin(yawRadians) * Math.cos(rollRadians)) + y * (Math.cos(yawRadians) * Math.sin(pitchRadians) * Math.cos(rollRadians) + Math.sin(yawRadians) * Math.sin(rollRadians)); - this.z = x * Math.sin(yawRadians) * Math.cos(pitchRadians) + z * (Math.sin(yawRadians) * Math.sin(pitchRadians) * Math.sin(rollRadians) + Math.cos(yawRadians) * Math.cos(rollRadians)) + y * (Math.sin(yawRadians) * Math.sin(pitchRadians) * Math.cos(rollRadians) - Math.cos(yawRadians) * Math.sin(rollRadians)); - this.y = -x * Math.sin(pitchRadians) + z * Math.cos(pitchRadians) * Math.sin(rollRadians) + y * Math.cos(pitchRadians) * Math.cos(rollRadians); - } - - /** - * Rotates a point by a yaw and pitch around the anchor 0,0 by a specific angle. - */ - public void rotate(double yaw, double pitch) - { - this.rotate(yaw, pitch, 0); - } - - public void rotate(double yaw) - { - double yawRadians = Math.toRadians(yaw); - - double x = this.x; - double z = this.z; - - if (yaw != 0) - { - this.x = x * Math.cos(yawRadians) - z * Math.sin(yawRadians); - this.z = x * Math.sin(yawRadians) + z * Math.cos(yawRadians); - } - } - - /** - * Gets the delta look position based on the rotation yaw and pitch. Minecraft coordinates are - * messed up. Y and Z are flipped. Yaw is displaced by 90 degrees. Pitch is inversed. - * - * @param rotationYaw - * @param rotationPitch - */ - public static Vector3 getDeltaPositionFromRotation(float rotationYaw, float rotationPitch) - { - return new Vector3(rotationYaw, rotationPitch); - } - - /** - * Gets the angle between this vector and another vector. - * - * @return Angle in degrees - */ - public double getAngle(Vector3 vec2) - { - return anglePreNorm(this.clone().normalize(), vec2.clone().normalize()); - } - - public static double getAngle(Vector3 vec1, Vector3 vec2) - { - return vec1.getAngle(vec2); - } - - public double anglePreNorm(Vector3 vec2) - { - return Math.acos(this.dotProduct(vec2)); - } - - public static double anglePreNorm(Vector3 vec1, Vector3 vec2) - { - return Math.acos(vec1.clone().dotProduct(vec2)); - } - - /** - * Loads a Vector3 from an NBT compound. - */ - @Deprecated - public static Vector3 readFromNBT(NBTTagCompound nbt) - { - return new Vector3(nbt); - } - - /** - * Saves this Vector3 to disk - * - * @param prefix - The prefix of this save. Use some unique string. - * @param nbt - The NBT compound object to save the data in - */ - public NBTTagCompound writeToNBT(NBTTagCompound nbt) - { - nbt.setDouble("x", this.x); - nbt.setDouble("y", this.y); - nbt.setDouble("z", this.z); - return nbt; - } - - public static Vector3 UP() - { - return new Vector3(0, 1, 0); - } - - public static Vector3 DOWN() - { - return new Vector3(0, -1, 0); - } - - public static Vector3 NORTH() - { - return new Vector3(0, 0, -1); - } - - public static Vector3 SOUTH() - { - return new Vector3(0, 0, 1); - } - - public static Vector3 WEST() - { - return new Vector3(-1, 0, 0); - } - - public static Vector3 EAST() - { - return new Vector3(1, 0, 0); - } - - /** - * RayTrace Code, retrieved from MachineMuse. - * - * @author MachineMuse - */ - public MovingObjectPosition rayTrace(World world, float rotationYaw, float rotationPitch, boolean collisionFlag, double reachDistance) - { - // Somehow this destroys the playerPosition vector -.- - MovingObjectPosition pickedBlock = this.rayTraceBlocks(world, rotationYaw, rotationPitch, collisionFlag, reachDistance); - MovingObjectPosition pickedEntity = this.rayTraceEntities(world, rotationYaw, rotationPitch, reachDistance); - - if (pickedBlock == null) - { - return pickedEntity; - } - else if (pickedEntity == null) - { - return pickedBlock; - } - else - { - double dBlock = this.distance(new Vector3(pickedBlock.hitVec)); - double dEntity = this.distance(new Vector3(pickedEntity.hitVec)); - - if (dEntity < dBlock) - { - return pickedEntity; - } - else - { - return pickedBlock; - } - } - } - - public MovingObjectPosition rayTraceBlocks(World world, float rotationYaw, float rotationPitch, boolean collisionFlag, double reachDistance) - { - Vector3 lookVector = this.getDeltaPositionFromRotation(rotationYaw, rotationPitch); - Vector3 reachPoint = this.clone().translate(lookVector.clone().scale(reachDistance)); - return world.rayTraceBlocks_do_do(this.toVec3(), reachPoint.toVec3(), collisionFlag, !collisionFlag); - } - - @Deprecated - public MovingObjectPosition rayTraceEntities(World world, float rotationYaw, float rotationPitch, boolean collisionFlag, double reachDistance) - { - return this.rayTraceEntities(world, rotationYaw, rotationPitch, reachDistance); - } - - public MovingObjectPosition rayTraceEntities(World world, float rotationYaw, float rotationPitch, double reachDistance) - { - return this.rayTraceEntities(world, getDeltaPositionFromRotation(rotationYaw, rotationPitch).scale(reachDistance)); - } - - /** - * Does an entity raytrace. - * - * @param world - The world object. - * @param target - The rotation in terms of Vector3. Convert using - * getDeltaPositionFromRotation() - * @return The target hit. - */ - public MovingObjectPosition rayTraceEntities(World world, Vector3 target) - { - MovingObjectPosition pickedEntity = null; - Vec3 startingPosition = this.toVec3(); - Vec3 look = target.toVec3(); - double reachDistance = this.distance(target); - Vec3 reachPoint = Vec3.createVectorHelper(startingPosition.xCoord + look.xCoord * reachDistance, startingPosition.yCoord + look.yCoord * reachDistance, startingPosition.zCoord + look.zCoord * reachDistance); - - double checkBorder = 1.1 * reachDistance; - AxisAlignedBB boxToScan = AxisAlignedBB.getAABBPool().getAABB(-checkBorder, -checkBorder, -checkBorder, checkBorder, checkBorder, checkBorder).offset(this.x, this.y, this.z); - - @SuppressWarnings("unchecked") - List entitiesHit = world.getEntitiesWithinAABBExcludingEntity(null, boxToScan); - double closestEntity = reachDistance; - - if (entitiesHit == null || entitiesHit.isEmpty()) - { - return null; - } - for (Entity entityHit : entitiesHit) - { - if (entityHit != null && entityHit.canBeCollidedWith() && entityHit.boundingBox != null) - { - float border = entityHit.getCollisionBorderSize(); - AxisAlignedBB aabb = entityHit.boundingBox.expand(border, border, border); - MovingObjectPosition hitMOP = aabb.calculateIntercept(startingPosition, reachPoint); - - if (hitMOP != null) - { - if (aabb.isVecInside(startingPosition)) - { - if (0.0D < closestEntity || closestEntity == 0.0D) - { - pickedEntity = new MovingObjectPosition(entityHit); - if (pickedEntity != null) - { - pickedEntity.hitVec = hitMOP.hitVec; - closestEntity = 0.0D; - } - } - } - else - { - double distance = startingPosition.distanceTo(hitMOP.hitVec); - - if (distance < closestEntity || closestEntity == 0.0D) - { - pickedEntity = new MovingObjectPosition(entityHit); - pickedEntity.hitVec = hitMOP.hitVec; - closestEntity = distance; - } - } - } - } - } - return pickedEntity; - } - - @Override - public int hashCode() - { - return ("X:" + this.x + "Y:" + this.y + "Z:" + this.z).hashCode(); - } - - @Override - public boolean equals(Object o) - { - if (o instanceof Vector3) - { - Vector3 vector3 = (Vector3) o; - return this.x == vector3.x && this.y == vector3.y && this.z == vector3.z; - } - - return false; - } - - @Override - public String toString() - { - return "Vector3 [" + this.x + "," + this.y + "," + this.z + "]"; - } - -} \ No newline at end of file diff --git a/APIs/universalelectricity/core/vector/VectorHelper.java b/APIs/universalelectricity/core/vector/VectorHelper.java deleted file mode 100644 index e447b7e20..000000000 --- a/APIs/universalelectricity/core/vector/VectorHelper.java +++ /dev/null @@ -1,52 +0,0 @@ -package universalelectricity.core.vector; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.block.IConnector; - -public class VectorHelper -{ - public static final int[][] RELATIVE_MATRIX = { { 3, 2, 1, 0, 5, 4 }, { 4, 5, 0, 1, 2, 3 }, { 0, 1, 3, 2, 4, 5 }, { 0, 1, 2, 3, 5, 4 }, { 0, 1, 5, 4, 3, 2 }, { 0, 1, 4, 5, 2, 3 } }; - - /** - * Finds the direction relative to a base direction. - * - * @param front - The direction in which this block is facing/front. Use a number between 0 and - * 5. Default is 3. - * @param side - The side you are trying to find. A number between 0 and 5. - * @return The side relative to the facing direction. - */ - public static ForgeDirection getOrientationFromSide(ForgeDirection front, ForgeDirection side) - { - if (front != ForgeDirection.UNKNOWN && side != ForgeDirection.UNKNOWN) - { - return ForgeDirection.getOrientation(RELATIVE_MATRIX[front.ordinal()][side.ordinal()]); - } - return ForgeDirection.UNKNOWN; - } - - /** - * Gets a connector unit based on the given side. - */ - public static TileEntity getConnectorFromSide(World world, Vector3 position, ForgeDirection side) - { - TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world, position, side); - - if (tileEntity instanceof IConnector) - { - if (((IConnector) tileEntity).canConnect(getOrientationFromSide(side, ForgeDirection.NORTH))) - { - return tileEntity; - } - } - - return null; - } - - public static TileEntity getTileEntityFromSide(World world, Vector3 position, ForgeDirection side) - { - return position.clone().modifyPositionFromSide(side).getTileEntity(world); - } - -} diff --git a/APIs/universalelectricity/prefab/ConductorChunkInitiate.java b/APIs/universalelectricity/prefab/ConductorChunkInitiate.java deleted file mode 100644 index 05bfdb333..000000000 --- a/APIs/universalelectricity/prefab/ConductorChunkInitiate.java +++ /dev/null @@ -1,64 +0,0 @@ -package universalelectricity.prefab; - -import java.util.ArrayList; -import java.util.Collection; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.ForgeSubscribe; -import net.minecraftforge.event.world.ChunkEvent; -import universalelectricity.core.block.INetworkConnection; - -/** - * A helper class to register chunk loading for your wires if you need them to be refreshed upon - * chunk load. This prevents the need for your wire to be refreshed. - * - * @author Calclavia, Aidancbrady - * - */ -public class ConductorChunkInitiate -{ - private static boolean onChunkLoadRegistered = false; - - /** - * Registers and initiates Universal Electricity's network loader. - */ - public static void register() - { - if (!onChunkLoadRegistered) - { - try - { - MinecraftForge.EVENT_BUS.register(new ConductorChunkInitiate()); - onChunkLoadRegistered = true; - } - catch (Exception e) - { - e.printStackTrace(); - } - } - } - - @ForgeSubscribe - public void onChunkLoad(ChunkEvent.Load event) - { - if (event.getChunk() != null) - { - Collection collection = new ArrayList(); - collection.addAll(event.getChunk().chunkTileEntityMap.values()); - - for (Object obj : collection) - { - if (obj instanceof TileEntity) - { - TileEntity tileEntity = (TileEntity) obj; - - if (tileEntity instanceof INetworkConnection) - { - ((INetworkConnection) tileEntity).refresh(); - } - } - } - } - } -} diff --git a/APIs/universalelectricity/prefab/CustomDamageSource.java b/APIs/universalelectricity/prefab/CustomDamageSource.java deleted file mode 100644 index 5de8f52cb..000000000 --- a/APIs/universalelectricity/prefab/CustomDamageSource.java +++ /dev/null @@ -1,42 +0,0 @@ -package universalelectricity.prefab; - -import net.minecraft.util.DamageSource; -import cpw.mods.fml.common.registry.LanguageRegistry; - -public class CustomDamageSource extends DamageSource -{ - /** - * Use this damage source for all types of electrical attacks. - */ - public static final CustomDamageSource electrocution = ((CustomDamageSource) new CustomDamageSource("electrocution").setDamageBypassesArmor()).setDeathMessage("%1$s got electrocuted!"); - - public CustomDamageSource(String damageType) - { - super(damageType); - } - - @Deprecated - public CustomDamageSource setDeathMessage(String deathMessage) - { - LanguageRegistry.instance().addStringLocalization("death.attack." + this.damageType, deathMessage); - return this; - } - - @Override - public DamageSource setDamageBypassesArmor() - { - return super.setDamageBypassesArmor(); - } - - @Override - public DamageSource setDamageAllowedInCreativeMode() - { - return super.setDamageAllowedInCreativeMode(); - } - - @Override - public DamageSource setFireDamage() - { - return super.setFireDamage(); - } -} diff --git a/APIs/universalelectricity/prefab/RecipeHelper.java b/APIs/universalelectricity/prefab/RecipeHelper.java deleted file mode 100644 index 514c0db45..000000000 --- a/APIs/universalelectricity/prefab/RecipeHelper.java +++ /dev/null @@ -1,192 +0,0 @@ -package universalelectricity.prefab; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.CraftingManager; -import net.minecraft.item.crafting.IRecipe; -import net.minecraftforge.common.Configuration; -import cpw.mods.fml.common.registry.GameRegistry; - -/** - * This class is used to replace recipes that are already added in the existing recipe pool for - * crafting and smelting. All recipe functions take account of the Forge Ore Dictionary. It also - * includes some recipe helper functions to shorten some of your function calls. - * - * @author Calclavia - * - */ -public class RecipeHelper -{ - public static List getRecipesByOutput(ItemStack output) - { - List list = new ArrayList(); - - for (Object obj : CraftingManager.getInstance().getRecipeList()) - { - if (obj instanceof IRecipe) - { - if (((IRecipe) obj).getRecipeOutput() == output) - { - list.add((IRecipe) obj); - } - } - } - - return list; - } - - /** - * Replaces a recipe with a new IRecipe. - * - * @return True if successful - */ - public static boolean replaceRecipe(IRecipe recipe, IRecipe newRecipe) - { - for (Object obj : CraftingManager.getInstance().getRecipeList()) - { - if (obj instanceof IRecipe) - { - if (((IRecipe) obj).equals(recipe) || obj == recipe) - { - CraftingManager.getInstance().getRecipeList().remove(obj); - CraftingManager.getInstance().getRecipeList().add(newRecipe); - return true; - } - } - } - - return false; - } - - /** - * Replaces a recipe with the resulting ItemStack with a new IRecipe. - * - * @return True if successful - */ - public static boolean replaceRecipe(ItemStack recipe, IRecipe newRecipe) - { - if (removeRecipe(recipe)) - { - CraftingManager.getInstance().getRecipeList().add(newRecipe); - return true; - } - - return false; - } - - /** - * Removes a recipe by its IRecipe class. - * - * @return True if successful - */ - public static boolean removeRecipe(IRecipe recipe) - { - for (Object obj : CraftingManager.getInstance().getRecipeList()) - { - if (obj != null) - { - if (obj instanceof IRecipe) - { - if (((IRecipe) obj).equals(recipe) || obj == recipe) - { - CraftingManager.getInstance().getRecipeList().remove(obj); - return true; - } - } - } - } - - return false; - } - - /** - * Removes the first recipe found by its output. - * - * @return True if successful - */ - public static boolean removeRecipe(ItemStack stack) - { - for (Object obj : CraftingManager.getInstance().getRecipeList()) - { - if (obj != null) - { - if (obj instanceof IRecipe) - { - if (((IRecipe) obj).getRecipeOutput() != null) - { - if (((IRecipe) obj).getRecipeOutput().isItemEqual(stack)) - { - CraftingManager.getInstance().getRecipeList().remove(obj); - return true; - } - } - } - } - } - - return false; - } - - /** - * Removes all recipes found that has this output. You may use this with Forge Ore Dictionary to - * remove all recipes with the FoD ID. - * - * @return True if successful - */ - public static boolean removeRecipes(ItemStack... itemStacks) - { - boolean didRemove = false; - - for (Iterator itr = CraftingManager.getInstance().getRecipeList().iterator(); itr.hasNext();) - { - Object obj = itr.next(); - - if (obj != null) - { - if (obj instanceof IRecipe) - { - if (((IRecipe) obj).getRecipeOutput() != null) - { - for (ItemStack itemStack : itemStacks) - { - if (((IRecipe) obj).getRecipeOutput().isItemEqual(itemStack)) - { - itr.remove(); - didRemove = true; - break; - } - } - } - } - } - } - - return didRemove; - } - - /** - * Use this function if you want to check if the recipe is allowed in the configuration file. - */ - public static void addRecipe(IRecipe recipe, String name, Configuration configuration, boolean defaultBoolean) - { - if (configuration != null) - { - configuration.load(); - - if (configuration.get("Crafting", "Allow " + name + " Crafting", defaultBoolean).getBoolean(defaultBoolean)) - { - GameRegistry.addRecipe(recipe); - } - - configuration.save(); - } - } - - public static void addRecipe(IRecipe recipe, Configuration config, boolean defaultBoolean) - { - addRecipe(recipe, recipe.getRecipeOutput().getUnlocalizedName(), config, defaultBoolean); - } -} diff --git a/APIs/universalelectricity/prefab/SlotSpecific.java b/APIs/universalelectricity/prefab/SlotSpecific.java deleted file mode 100644 index 989df4b81..000000000 --- a/APIs/universalelectricity/prefab/SlotSpecific.java +++ /dev/null @@ -1,95 +0,0 @@ -package universalelectricity.prefab; - -import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; - -/** - * Creates a slot with a specific amount of items that matches the slot's requirements. Allows easy - * shift right clicking management and slot blocking in classes. In your container you can use - * this.getSlot(i).isItemValid to justify the player's shift clicking actions to match the slot. - * - * @author Calclavia - * - */ -public class SlotSpecific extends Slot -{ - public ItemStack[] validItemStacks = new ItemStack[0]; - public Class[] validClasses = new Class[0]; - - public boolean isInverted = false; - public boolean isMetadataSensitive = false; - - public SlotSpecific(IInventory par2IInventory, int par3, int par4, int par5, ItemStack... itemStacks) - { - super(par2IInventory, par3, par4, par5); - this.setItemStacks(itemStacks); - } - - public SlotSpecific(IInventory par2IInventory, int par3, int par4, int par5, Class... validClasses) - { - super(par2IInventory, par3, par4, par5); - this.setClasses(validClasses); - } - - public SlotSpecific setMetadataSensitive() - { - this.isMetadataSensitive = true; - return this; - } - - public SlotSpecific setItemStacks(ItemStack... validItemStacks) - { - this.validItemStacks = validItemStacks; - return this; - } - - public SlotSpecific setClasses(Class... validClasses) - { - this.validClasses = validClasses; - return this; - } - - public SlotSpecific toggleInverted() - { - this.isInverted = !this.isInverted; - return this; - } - - /** - * Check if the stack is a valid item for this slot. Always true beside for the armor slots. - */ - @Override - public boolean isItemValid(ItemStack compareStack) - { - boolean returnValue = false; - - for (ItemStack itemStack : this.validItemStacks) - { - if (compareStack.isItemEqual(itemStack) || (!this.isMetadataSensitive && compareStack.itemID == itemStack.itemID)) - { - returnValue = true; - break; - } - } - - if (!returnValue) - { - for (Class clazz : this.validClasses) - { - if (clazz.equals(compareStack.getItem().getClass()) || clazz.isInstance(compareStack.getItem())) - { - returnValue = true; - break; - } - } - } - - if (this.isInverted) - { - return !returnValue; - } - - return returnValue; - } -} diff --git a/APIs/universalelectricity/prefab/TranslationHelper.java b/APIs/universalelectricity/prefab/TranslationHelper.java deleted file mode 100644 index 8ea45561a..000000000 --- a/APIs/universalelectricity/prefab/TranslationHelper.java +++ /dev/null @@ -1,88 +0,0 @@ -package universalelectricity.prefab; - -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.FMLLog; -import cpw.mods.fml.common.registry.LanguageRegistry; -import cpw.mods.fml.relauncher.Side; - -/** - * A class to help you out with translations. - * - * @author Calclavia - * - */ -public class TranslationHelper -{ - /** - * Loads all the language files for a mod. This supports the loading of "child" language files - * for sub-languages to be loaded all from one file instead of creating multiple of them. An - * example of this usage would be different Spanish sub-translations (es_MX, es_YU). - * - * @param languagePath - The path to the mod's language file folder. - * @param languageSupported - The languages supported. E.g: new String[]{"en_US", "en_AU", - * "en_UK"} - * @return The amount of language files loaded successfully. - */ - public static int loadLanguages(String languagePath, String[] languageSupported) - { - int languages = 0; - - /** - * Load all languages. - */ - for (String language : languageSupported) - { - LanguageRegistry.instance().loadLocalization(languagePath + language + ".properties", language, false); - - if (LanguageRegistry.instance().getStringLocalization("children", language) != "") - { - try - { - String[] children = LanguageRegistry.instance().getStringLocalization("children", language).split(","); - - for (String child : children) - { - if (child != "" || child != null) - { - LanguageRegistry.instance().loadLocalization(languagePath + language + ".properties", child, false); - languages++; - } - } - } - catch (Exception e) - { - FMLLog.severe("Failed to load a child language file."); - e.printStackTrace(); - } - } - - languages++; - } - - return languages; - } - - /** - * Gets the local text of your translation based on the given key. This will look through your - * mod's translation file that was previously registered. Make sure you enter the full name - * - * @param key - e.g tile.block.name - * @return The translated string or the default English translation if none was found. - */ - public static String getLocal(String key) - { - String text = null; - - if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) - { - text = LanguageRegistry.instance().getStringLocalization(key); - } - - if (text == null || text == "") - { - text = LanguageRegistry.instance().getStringLocalization(key, "en_US"); - } - - return text; - } -} diff --git a/APIs/universalelectricity/prefab/block/BlockAdvanced.java b/APIs/universalelectricity/prefab/block/BlockAdvanced.java deleted file mode 100644 index 7d38de244..000000000 --- a/APIs/universalelectricity/prefab/block/BlockAdvanced.java +++ /dev/null @@ -1,200 +0,0 @@ -package universalelectricity.prefab.block; - -import java.lang.reflect.Method; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * An advanced block class that is to be extended for wrenching capabilities. - */ -public abstract class BlockAdvanced extends Block -{ - public BlockAdvanced(int id, Material material) - { - super(id, material); - this.setHardness(0.6f); - } - - /** - * DO NOT OVERRIDE THIS FUNCTION! Called when the block is right clicked by the player. This - * modified version detects electric items and wrench actions on your machine block. Do not - * override this function. Use onMachineActivated instead! (It does the same thing) - * - * @param world The World Object. - * @param x , y, z The coordinate of the block. - * @param side The side the player clicked on. - * @param hitX , hitY, hitZ The position the player clicked on relative to the block. - */ - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) - { - int metadata = world.getBlockMetadata(x, y, z); - - /** - * Check if the player is holding a wrench or an electric item. If so, call the wrench - * event. - */ - if (this.isUsableWrench(entityPlayer, entityPlayer.inventory.getCurrentItem(), x, y, z)) - { - this.damageWrench(entityPlayer, entityPlayer.inventory.getCurrentItem(), x, y, z); - - if (entityPlayer.isSneaking()) - { - if (this.onSneakUseWrench(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ)) - { - return true; - } - } - - if (this.onUseWrench(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ)) - { - return true; - } - } - - if (entityPlayer.isSneaking()) - { - if (this.onSneakMachineActivated(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ)) - { - return true; - } - } - - return this.onMachineActivated(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ); - } - - /** - * A function that denotes if an itemStack is a wrench that can be used. Override this for more - * wrench compatibility. Compatible with Buildcraft and IC2 wrench API via reflection. - * - * @return True if it is a wrench. - */ - public boolean isUsableWrench(EntityPlayer entityPlayer, ItemStack itemStack, int x, int y, int z) - { - if (entityPlayer != null && itemStack != null) - { - Class wrenchClass = itemStack.getItem().getClass(); - - /** - * UE and Buildcraft - */ - try - { - Method methodCanWrench = wrenchClass.getMethod("canWrench", EntityPlayer.class, Integer.TYPE, Integer.TYPE, Integer.TYPE); - return (Boolean) methodCanWrench.invoke(itemStack.getItem(), entityPlayer, x, y, z); - } - catch (NoClassDefFoundError e) - { - } - catch (Exception e) - { - } - - /** - * Industrialcraft - */ - try - { - if (wrenchClass == Class.forName("ic2.core.item.tool.ItemToolWrench") || wrenchClass == Class.forName("ic2.core.item.tool.ItemToolWrenchElectric")) - { - return itemStack.getItemDamage() < itemStack.getMaxDamage(); - } - } - catch (Exception e) - { - } - } - - return false; - } - - /** - * This function damages a wrench. Works with Buildcraft and Industrialcraft wrenches. - * - * @return True if damage was successfull. - */ - public boolean damageWrench(EntityPlayer entityPlayer, ItemStack itemStack, int x, int y, int z) - { - if (this.isUsableWrench(entityPlayer, itemStack, x, y, z)) - { - Class wrenchClass = itemStack.getItem().getClass(); - - /** - * UE and Buildcraft - */ - try - { - Method methodWrenchUsed = wrenchClass.getMethod("wrenchUsed", EntityPlayer.class, Integer.TYPE, Integer.TYPE, Integer.TYPE); - methodWrenchUsed.invoke(itemStack.getItem(), entityPlayer, x, y, z); - return true; - } - catch (Exception e) - { - } - - /** - * Industrialcraft - */ - try - { - if (wrenchClass == Class.forName("ic2.core.item.tool.ItemToolWrench") || wrenchClass == Class.forName("ic2.core.item.tool.ItemToolWrenchElectric")) - { - Method methodWrenchDamage = wrenchClass.getMethod("damage", ItemStack.class, Integer.TYPE, EntityPlayer.class); - methodWrenchDamage.invoke(itemStack.getItem(), itemStack, 1, entityPlayer); - return true; - } - } - catch (Exception e) - { - } - } - - return false; - } - - /** - * Called when the machine is right clicked by the player - * - * @return True if something happens - */ - public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) - { - return false; - } - - /** - * Called when the machine is being wrenched by a player while sneaking. - * - * @return True if something happens - */ - public boolean onSneakMachineActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) - { - return false; - } - - /** - * Called when a player uses a wrench on the machine - * - * @return True if some happens - */ - public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) - { - return false; - } - - /** - * Called when a player uses a wrench on the machine while sneaking. Only works with the UE - * wrench. - * - * @return True if some happens - */ - public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) - { - return this.onUseWrench(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ); - } - -} diff --git a/APIs/universalelectricity/prefab/block/BlockConductor.java b/APIs/universalelectricity/prefab/block/BlockConductor.java deleted file mode 100644 index 1664c97fe..000000000 --- a/APIs/universalelectricity/prefab/block/BlockConductor.java +++ /dev/null @@ -1,193 +0,0 @@ -package universalelectricity.prefab.block; - -import java.util.List; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.entity.Entity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import universalelectricity.core.block.IConductor; -import universalelectricity.core.vector.Vector3; -import universalelectricity.prefab.tile.TileEntityConductor; - -public abstract class BlockConductor extends BlockContainer -{ - public boolean isWireCollision = true; - public Vector3 minVector = new Vector3(0.3, 0.3, 0.3); - public Vector3 maxVector = new Vector3(0.7, 0.7, 0.7); - - public BlockConductor(int id, Material material) - { - super(id, material); - } - - /** - * Called whenever the block is added into the world. Args: world, x, y, z - */ - @Override - public void onBlockAdded(World world, int x, int y, int z) - { - super.onBlockAdded(world, x, y, z); - - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - - if (tileEntity instanceof IConductor) - { - ((IConductor) tileEntity).refresh(); - } - } - - /** - * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed - * (coordinates passed are their own) Args: x, y, z, neighbor blockID - */ - @Override - public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - - if (tileEntity instanceof IConductor) - { - ((IConductor) tileEntity).refresh(); - } - } - - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after - * the pool has been cleared to be reused) - */ - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) - { - this.setBlockBoundsBasedOnState(world, x, y, z); - return super.getCollisionBoundingBoxFromPool(world, x, y, z); - } - - @Override - public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) - { - this.setBlockBoundsBasedOnState(world, x, y, z); - return super.getSelectedBoundingBoxFromPool(world, x, y, z); - } - - /** - * Returns the bounding box of the wired rectangular prism to render. - */ - @Override - public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) - { - if (this.isWireCollision) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - - if (tileEntity instanceof TileEntityConductor) - { - TileEntity[] connectable = ((TileEntityConductor) tileEntity).getAdjacentConnections(); - - if (connectable != null) - { - float minX = (float) this.minVector.x; - float minY = (float) this.minVector.y; - float minZ = (float) this.minVector.z; - float maxX = (float) this.maxVector.x; - float maxY = (float) this.maxVector.y; - float maxZ = (float) this.maxVector.z; - - if (connectable[0] != null) - { - minY = 0.0F; - } - - if (connectable[1] != null) - { - maxY = 1.0F; - } - - if (connectable[2] != null) - { - minZ = 0.0F; - } - - if (connectable[3] != null) - { - maxZ = 1.0F; - } - - if (connectable[4] != null) - { - minX = 0.0F; - } - - if (connectable[5] != null) - { - maxX = 1.0F; - } - - this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ); - } - } - } - } - - @Override - public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB axisalignedbb, List list, Entity entity) - { - if (this.isWireCollision) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - - if (tileEntity instanceof TileEntityConductor) - { - TileEntity[] connectable = ((TileEntityConductor) tileEntity).getAdjacentConnections(); - - this.setBlockBounds((float) this.minVector.x, (float) this.minVector.y, (float) this.minVector.z, (float) this.maxVector.x, (float) this.maxVector.y, (float) this.maxVector.z); - super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity); - - if (connectable[4] != null) - { - this.setBlockBounds(0, (float) this.minVector.y, (float) this.minVector.z, (float) this.maxVector.x, (float) this.maxVector.y, (float) this.maxVector.z); - super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity); - } - - if (connectable[5] != null) - { - this.setBlockBounds((float) this.minVector.x, (float) this.minVector.y, (float) this.minVector.z, 1, (float) this.maxVector.y, (float) this.maxVector.z); - super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity); - } - - if (connectable[0] != null) - { - this.setBlockBounds((float) this.minVector.x, 0, (float) this.minVector.z, (float) this.maxVector.x, (float) this.maxVector.y, (float) this.maxVector.z); - super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity); - } - - if (connectable[1] != null) - { - this.setBlockBounds((float) this.minVector.x, (float) this.minVector.y, (float) this.minVector.z, (float) this.maxVector.x, 1, (float) this.maxVector.z); - super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity); - } - - if (connectable[2] != null) - { - this.setBlockBounds((float) this.minVector.x, (float) this.minVector.y, 0, (float) this.maxVector.x, (float) this.maxVector.y, (float) this.maxVector.z); - super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity); - } - - if (connectable[3] != null) - { - this.setBlockBounds((float) this.minVector.x, (float) this.minVector.y, (float) this.minVector.z, (float) this.maxVector.x, (float) this.maxVector.y, 1); - super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity); - } - - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - } - else - { - super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity); - } - } -} diff --git a/APIs/universalelectricity/prefab/block/BlockRotatable.java b/APIs/universalelectricity/prefab/block/BlockRotatable.java deleted file mode 100644 index 3475f33da..000000000 --- a/APIs/universalelectricity/prefab/block/BlockRotatable.java +++ /dev/null @@ -1,83 +0,0 @@ -package universalelectricity.prefab.block; - -import net.minecraft.block.material.Material; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; - -/** A block that can rotate based on placed position and wrenching. - * - * @author Calclavia */ -public abstract class BlockRotatable extends BlockTile implements IRotatableBlock -{ - public BlockRotatable(int id, Material material) - { - super(id, material); - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityLiving, ItemStack itemStack) - { - int angle = MathHelper.floor_double((entityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; - int change = 3; - - switch (angle) - { - case 0: - change = 2; - break; - - case 1: - change = 5; - break; - - case 2: - change = 3; - break; - - case 3: - change = 4; - break; - } - - world.setBlockMetadataWithNotify(x, y, z, change, 3); - } - - @Override - public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) - { - this.rotateBlock(world, x, y, z, ForgeDirection.getOrientation(side)); - return true; - } - - public static boolean rotateBlock(World worldObj, int x, int y, int z, ForgeDirection axis, int mask) - { - int rotMeta = worldObj.getBlockMetadata(x, y, z); - int masked = rotMeta & ~mask; - ForgeDirection orientation = ForgeDirection.getOrientation(rotMeta & mask); - ForgeDirection rotated = orientation.getRotation(axis); - worldObj.setBlockMetadataWithNotify(x, y, z, rotated.ordinal() & mask | masked, 3); - return true; - } - - @Override - public boolean onSneakMachineActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) - { - return false; - } - - @Override - public ForgeDirection getDirection(World world, int x, int y, int z) - { - return ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); - } - - @Override - public void setDirection(World world, int x, int y, int z, ForgeDirection direction) - { - world.setBlockMetadataWithNotify(x, y, z, direction.ordinal(), 3); - } -} \ No newline at end of file diff --git a/APIs/universalelectricity/prefab/block/BlockTile.java b/APIs/universalelectricity/prefab/block/BlockTile.java deleted file mode 100644 index e6bb26e54..000000000 --- a/APIs/universalelectricity/prefab/block/BlockTile.java +++ /dev/null @@ -1,122 +0,0 @@ -package universalelectricity.prefab.block; - -import java.util.Random; - -import net.minecraft.block.ITileEntityProvider; -import net.minecraft.block.material.Material; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -/** - * An advanced block class that is to be extended for wrenching capabilities. - */ -public abstract class BlockTile extends BlockAdvanced implements ITileEntityProvider -{ - public BlockTile(int id, Material material) - { - super(id, material); - this.isBlockContainer = true; - } - - /** - * Called whenever the block is added into the world. Args: world, x, y, z - */ - @Override - public void onBlockAdded(World par1World, int par2, int par3, int par4) - { - super.onBlockAdded(par1World, par2, par3, par4); - } - - /** - * ejects contained items into the world, and notifies neighbours of an update, as appropriate - */ - @Override - public void breakBlock(World world, int x, int y, int z, int par5, int par6) - { - this.dropEntireInventory(world, x, y, z, par5, par6); - super.breakBlock(world, x, y, z, par5, par6); - world.removeBlockTileEntity(x, y, z); - } - - /** - * Called when the block receives a BlockEvent - see World.addBlockEvent. By default, passes it - * on to the tile entity at this location. Args: world, x, y, z, blockID, EventID, event - * parameter - */ - @Override - public boolean onBlockEventReceived(World par1World, int par2, int par3, int par4, int par5, int par6) - { - super.onBlockEventReceived(par1World, par2, par3, par4, par5, par6); - TileEntity tileentity = par1World.getBlockTileEntity(par2, par3, par4); - return tileentity != null ? tileentity.receiveClientEvent(par5, par6) : false; - } - - /** - * Override this if you don't need it. This will eject all items out of this machine if it has - * an inventory. - */ - public void dropEntireInventory(World world, int x, int y, int z, int par5, int par6) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - - if (tileEntity != null) - { - if (tileEntity instanceof IInventory) - { - IInventory inventory = (IInventory) tileEntity; - - for (int var6 = 0; var6 < inventory.getSizeInventory(); ++var6) - { - ItemStack var7 = inventory.getStackInSlot(var6); - - if (var7 != null) - { - Random random = new Random(); - float var8 = random.nextFloat() * 0.8F + 0.1F; - float var9 = random.nextFloat() * 0.8F + 0.1F; - float var10 = random.nextFloat() * 0.8F + 0.1F; - - while (var7.stackSize > 0) - { - int var11 = random.nextInt(21) + 10; - - if (var11 > var7.stackSize) - { - var11 = var7.stackSize; - } - - var7.stackSize -= var11; - EntityItem var12 = new EntityItem(world, (x + var8), (y + var9), (z + var10), new ItemStack(var7.itemID, var11, var7.getItemDamage())); - - if (var7.hasTagCompound()) - { - var12.getEntityItem().setTagCompound((NBTTagCompound) var7.getTagCompound().copy()); - } - - float var13 = 0.05F; - var12.motionX = ((float) random.nextGaussian() * var13); - var12.motionY = ((float) random.nextGaussian() * var13 + 0.2F); - var12.motionZ = ((float) random.nextGaussian() * var13); - world.spawnEntityInWorld(var12); - } - } - } - } - } - } - - /** - * Returns the TileEntity used by this block. You should use the metadata sensitive version of - * this to get the maximum optimization! - */ - @Override - public TileEntity createNewTileEntity(World var1) - { - return null; - } - -} diff --git a/APIs/universalelectricity/prefab/block/IRotatableBlock.java b/APIs/universalelectricity/prefab/block/IRotatableBlock.java deleted file mode 100644 index 6e6128095..000000000 --- a/APIs/universalelectricity/prefab/block/IRotatableBlock.java +++ /dev/null @@ -1,17 +0,0 @@ -package universalelectricity.prefab.block; - -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; - -/** The interface is applied to Blocks that can rotate. - * - * @author DarkGuardsman */ - -public interface IRotatableBlock -{ - /** @return Gets the facing direction. Always returns the front side of the block. */ - public ForgeDirection getDirection(World world, int x, int y, int z); - - /** @param Sets the facing direction. */ - public void setDirection(World world, int x, int y, int z, ForgeDirection direection); -} diff --git a/APIs/universalelectricity/prefab/network/IPacketReceiver.java b/APIs/universalelectricity/prefab/network/IPacketReceiver.java deleted file mode 100644 index 65f638332..000000000 --- a/APIs/universalelectricity/prefab/network/IPacketReceiver.java +++ /dev/null @@ -1,15 +0,0 @@ -package universalelectricity.prefab.network; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.network.INetworkManager; -import net.minecraft.network.packet.Packet250CustomPayload; - -import com.google.common.io.ByteArrayDataInput; - -public interface IPacketReceiver -{ - /** - * Sends some data to the tile entity. - */ - public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream); -} diff --git a/APIs/universalelectricity/prefab/network/PacketManager.java b/APIs/universalelectricity/prefab/network/PacketManager.java deleted file mode 100644 index 311f29337..000000000 --- a/APIs/universalelectricity/prefab/network/PacketManager.java +++ /dev/null @@ -1,336 +0,0 @@ -package universalelectricity.prefab.network; - -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.CompressedStreamTools; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.INetworkManager; -import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.Packet250CustomPayload; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import universalelectricity.core.vector.Vector3; - -import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; - -import cpw.mods.fml.common.network.IPacketHandler; -import cpw.mods.fml.common.network.PacketDispatcher; -import cpw.mods.fml.common.network.Player; - -/** - * This class is used for sending and receiving packets between the server and the client. You can - * directly use this by registering this packet manager with NetworkMod. Example: - * - * @NetworkMod(channels = { "BasicComponents" }, clientSideRequired = true, serverSideRequired = - * false, packetHandler = PacketManager.class) - * - * Check out {@link #BasicComponents} for better reference. - * - * @author Calclavia - */ -public class PacketManager implements IPacketHandler, IPacketReceiver -{ - public enum PacketType - { - UNSPECIFIED, TILEENTITY; - - public static PacketType get(int id) - { - if (id >= 0 && id < PacketType.values().length) - { - return PacketType.values()[id]; - } - return UNSPECIFIED; - } - } - - /** - * Writes a compressed NBTTagCompound to the OutputStream - */ - public static void writeNBTTagCompound(NBTTagCompound tag, DataOutputStream dataStream) throws IOException - { - if (tag == null) - { - dataStream.writeShort(-1); - } - else - { - byte[] var2 = CompressedStreamTools.compress(tag); - dataStream.writeShort((short) var2.length); - dataStream.write(var2); - } - } - - public static void writeNBTTagCompound(NBTTagCompound tag, ByteArrayDataOutput dataStream) throws IOException - { - if (tag == null) - { - dataStream.writeShort(-1); - } - else - { - byte[] var2 = CompressedStreamTools.compress(tag); - dataStream.writeShort((short) var2.length); - dataStream.write(var2); - } - } - - /** - * Reads a compressed NBTTagCompount in a ByteStream. - */ - public static NBTTagCompound readNBTTagCompound(DataInputStream dataStream) throws IOException - { - short var1 = dataStream.readShort(); - - if (var1 < 0) - { - return null; - } - else - { - byte[] var2 = new byte[var1]; - dataStream.readFully(var2); - return CompressedStreamTools.decompress(var2); - } - } - - public static NBTTagCompound readNBTTagCompound(ByteArrayDataInput dataStream) throws IOException - { - short var1 = dataStream.readShort(); - - if (var1 < 0) - { - return null; - } - else - { - byte[] var2 = new byte[var1]; - dataStream.readFully(var2); - return CompressedStreamTools.decompress(var2); - } - } - - @SuppressWarnings("resource") - public static Packet getPacketWithID(String channelName, int id, Object... sendData) - { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - DataOutputStream data = new DataOutputStream(bytes); - - try - { - data.writeInt(id); - data = encodeDataStream(data, sendData); - - Packet250CustomPayload packet = new Packet250CustomPayload(); - packet.channel = channelName; - packet.data = bytes.toByteArray(); - packet.length = packet.data.length; - - return packet; - } - catch (IOException e) - { - System.out.println("Failed to create packet."); - e.printStackTrace(); - } - - return null; - } - - public static Packet getPacket(String channelName, Object... sendData) - { - return getPacketWithID(channelName, PacketType.UNSPECIFIED.ordinal(), sendData); - } - - /** - * Gets a packet for the tile entity. - * - * @return - */ - @SuppressWarnings("resource") - public static Packet getPacket(String channelName, TileEntity sender, Object... sendData) - { - ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - DataOutputStream data = new DataOutputStream(bytes); - - try - { - data.writeInt(PacketType.TILEENTITY.ordinal()); - - data.writeInt(sender.xCoord); - data.writeInt(sender.yCoord); - data.writeInt(sender.zCoord); - data = encodeDataStream(data, sendData); - - Packet250CustomPayload packet = new Packet250CustomPayload(); - packet.channel = channelName; - packet.data = bytes.toByteArray(); - packet.length = packet.data.length; - - return packet; - } - catch (IOException e) - { - System.out.println("Failed to create packet."); - e.printStackTrace(); - } - - return null; - } - - /** - * Sends packets to clients around a specific coordinate. A wrapper using Vector3. See - * {@PacketDispatcher} for detailed information. - */ - public static void sendPacketToClients(Packet packet, World worldObj, Vector3 position, double range) - { - try - { - PacketDispatcher.sendPacketToAllAround(position.x, position.y, position.z, range, worldObj.provider.dimensionId, packet); - } - catch (Exception e) - { - System.out.println("Sending packet to client failed."); - e.printStackTrace(); - } - } - - /** - * Sends a packet to all the clients on this server. - */ - public static void sendPacketToClients(Packet packet, World worldObj) - { - try - { - PacketDispatcher.sendPacketToAllInDimension(packet, worldObj.provider.dimensionId); - } - catch (Exception e) - { - System.out.println("Sending packet to client failed."); - e.printStackTrace(); - } - } - - public static void sendPacketToClients(Packet packet) - { - try - { - PacketDispatcher.sendPacketToAllPlayers(packet); - } - catch (Exception e) - { - System.out.println("Sending packet to client failed."); - e.printStackTrace(); - } - } - - public static DataOutputStream encodeDataStream(DataOutputStream data, Object... sendData) - { - try - { - for (Object dataValue : sendData) - { - if (dataValue instanceof Integer) - { - data.writeInt((Integer) dataValue); - } - else if (dataValue instanceof Float) - { - data.writeFloat((Float) dataValue); - } - else if (dataValue instanceof Double) - { - data.writeDouble((Double) dataValue); - } - else if (dataValue instanceof Byte) - { - data.writeByte((Byte) dataValue); - } - else if (dataValue instanceof Boolean) - { - data.writeBoolean((Boolean) dataValue); - } - else if (dataValue instanceof String) - { - data.writeUTF((String) dataValue); - } - else if (dataValue instanceof Short) - { - data.writeShort((Short) dataValue); - } - else if (dataValue instanceof Long) - { - data.writeLong((Long) dataValue); - } - else if (dataValue instanceof NBTTagCompound) - { - writeNBTTagCompound((NBTTagCompound) dataValue, data); - } - } - - return data; - } - catch (IOException e) - { - System.out.println("Packet data encoding failed."); - e.printStackTrace(); - } - - return data; - } - - @Override - public void onPacketData(INetworkManager network, Packet250CustomPayload packet, Player player) - { - try - { - ByteArrayDataInput data = ByteStreams.newDataInput(packet.data); - - int packetTypeID = data.readInt(); - - PacketType packetType = PacketType.get(packetTypeID); - - if (packetType == PacketType.TILEENTITY) - { - int x = data.readInt(); - int y = data.readInt(); - int z = data.readInt(); - - World world = ((EntityPlayer) player).worldObj; - - if (world != null) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - - if (tileEntity != null) - { - if (tileEntity instanceof IPacketReceiver) - { - ((IPacketReceiver) tileEntity).handlePacketData(network, packetTypeID, packet, ((EntityPlayer) player), data); - } - } - } - } - else - { - this.handlePacketData(network, packetTypeID, packet, ((EntityPlayer) player), data); - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - @Override - public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) - { - - } -} \ No newline at end of file diff --git a/APIs/universalelectricity/prefab/ore/OreGenBase.java b/APIs/universalelectricity/prefab/ore/OreGenBase.java deleted file mode 100644 index f17f433ef..000000000 --- a/APIs/universalelectricity/prefab/ore/OreGenBase.java +++ /dev/null @@ -1,98 +0,0 @@ -package universalelectricity.prefab.ore; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkProvider; -import net.minecraftforge.common.Configuration; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.oredict.OreDictionary; -import cpw.mods.fml.common.FMLLog; - -/** - * This class is used for storing ore generation data. If you are too lazy to generate your own - * ores, you can do {@link #OreGenerator.addOre()} to add your ore to the list of ores to generate. - * - * @author Calclavia - * - */ -public abstract class OreGenBase -{ - public String name; - - public String oreDictionaryName; - - public boolean shouldGenerate = false; - - public int blockIndexTexture; - - public ItemStack oreStack; - - public int oreID; - - public int oreMeta; - - /** - * What harvest level does this machine need to be acquired? - */ - public int harvestLevel; - - /** - * The predefined tool classes are "pickaxe", "shovel", "axe". You can add others for custom - * tools. - */ - public String harvestTool; - - /** - * @param name - The name of the ore for display - * @param textureFile - The 16x16 png texture of your ore to override - * @param minGenerateLevel - The highest generation level of your ore - * @param maxGenerateLevel - The lowest generation level of your ore - * @param amountPerChunk - The amount of ores to generate per chunk - * @param amountPerBranch - The amount of ores to generate in a clutter. E.g coal generates with - * a lot of other coal next to it. How much do you want? - */ - public OreGenBase(String name, String oreDiectionaryName, ItemStack stack, String harvestTool, int harvestLevel) - { - if (stack != null) - { - this.name = name; - this.harvestTool = harvestTool; - this.harvestLevel = harvestLevel; - this.oreDictionaryName = oreDiectionaryName; - this.oreStack = stack; - this.oreID = stack.itemID; - this.oreMeta = stack.getItemDamage(); - - OreDictionary.registerOre(oreDictionaryName, stack); - MinecraftForge.setBlockHarvestLevel(Block.blocksList[stack.itemID], stack.getItemDamage(), harvestTool, harvestLevel); - } - else - { - FMLLog.severe("ItemStack is null while registering ore generation!"); - } - } - - public OreGenBase enable(Configuration config) - { - this.shouldGenerate = shouldGenerateOre(config, this.name); - return this; - } - - /** - * Checks the config file and see if Universal Electricity should generate this ore - */ - private static boolean shouldGenerateOre(Configuration configuration, String oreName) - { - configuration.load(); - boolean shouldGenerate = configuration.get("Ore_Generation", "Generate " + oreName, true).getBoolean(true); - configuration.save(); - return shouldGenerate; - } - - public abstract void generate(World world, Random random, int varX, int varZ); - - public abstract boolean isOreGeneratedInWorld(World world, IChunkProvider chunkGenerator); -} diff --git a/APIs/universalelectricity/prefab/ore/OreGenReplace.java b/APIs/universalelectricity/prefab/ore/OreGenReplace.java deleted file mode 100644 index 6f674e6ae..000000000 --- a/APIs/universalelectricity/prefab/ore/OreGenReplace.java +++ /dev/null @@ -1,153 +0,0 @@ -package universalelectricity.prefab.ore; - -import java.util.Random; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkProvider; -import net.minecraft.world.gen.ChunkProviderEnd; -import net.minecraft.world.gen.ChunkProviderGenerate; -import net.minecraft.world.gen.ChunkProviderHell; - -/** - * This class is used for storing ore generation data. If you are too lazy to generate your own - * ores, you can do {@link #OreGenerator.ORES_TO_GENERATE.add()} to add your ore to the list of ores - * to generate. - * - * @author Calclavia - * - */ -public class OreGenReplace extends OreGenBase -{ - - public int minGenerateLevel; - public int maxGenerateLevel; - public int amountPerChunk; - public int amountPerBranch; - public int replaceID; - - /** - * Dimensions to ignore ore generation - */ - public boolean ignoreSurface = false; - public boolean ignoreNether = true; - public boolean ignoreEnd = true; - - /** - * @param name - The name of the ore for display - * @param textureFile - The 16x16 png texture of your ore to override - * @param minGenerateLevel - The highest generation level of your ore - * @param maxGenerateLevel - The lowest generation level of your ore - * @param amountPerChunk - The amount of ores to generate per chunk - * @param amountPerBranch - The amount of ores to generate in a clutter. E.g coal generates with - * a lot of other coal next to it. How much do you want? - */ - public OreGenReplace(String name, String oreDiectionaryName, ItemStack stack, int replaceID, int minGenerateLevel, int maxGenerateLevel, int amountPerChunk, int amountPerBranch, String harvestTool, int harvestLevel) - { - super(name, oreDiectionaryName, stack, harvestTool, harvestLevel); - this.minGenerateLevel = minGenerateLevel; - this.maxGenerateLevel = maxGenerateLevel; - this.amountPerChunk = amountPerChunk; - this.amountPerBranch = amountPerBranch; - this.replaceID = replaceID; - } - - @Override - public void generate(World world, Random random, int varX, int varZ) - { - try - { - for (int i = 0; i < this.amountPerChunk; i++) - { - int x = varX + random.nextInt(16); - int z = varZ + random.nextInt(16); - int y = random.nextInt(Math.max(this.maxGenerateLevel - this.minGenerateLevel, 0)) + this.minGenerateLevel; - this.generateReplace(world, random, x, y, z); - } - } - catch (Exception e) - { - System.out.println("Error generating ore: " + this.name); - e.printStackTrace(); - } - } - - public boolean generateReplace(World par1World, Random par2Random, int par3, int par4, int par5) - { - float var6 = par2Random.nextFloat() * (float) Math.PI; - double var7 = par3 + 8 + MathHelper.sin(var6) * this.amountPerBranch / 8.0F; - double var9 = par3 + 8 - MathHelper.sin(var6) * this.amountPerBranch / 8.0F; - double var11 = par5 + 8 + MathHelper.cos(var6) * this.amountPerBranch / 8.0F; - double var13 = par5 + 8 - MathHelper.cos(var6) * this.amountPerBranch / 8.0F; - double var15 = par4 + par2Random.nextInt(3) - 2; - double var17 = par4 + par2Random.nextInt(3) - 2; - - for (int var19 = 0; var19 <= this.amountPerBranch; ++var19) - { - double var20 = var7 + (var9 - var7) * var19 / this.amountPerBranch; - double var22 = var15 + (var17 - var15) * var19 / this.amountPerBranch; - double var24 = var11 + (var13 - var11) * var19 / this.amountPerBranch; - double var26 = par2Random.nextDouble() * this.amountPerBranch / 16.0D; - double var28 = (MathHelper.sin(var19 * (float) Math.PI / this.amountPerBranch) + 1.0F) * var26 + 1.0D; - double var30 = (MathHelper.sin(var19 * (float) Math.PI / this.amountPerBranch) + 1.0F) * var26 + 1.0D; - int var32 = MathHelper.floor_double(var20 - var28 / 2.0D); - int var33 = MathHelper.floor_double(var22 - var30 / 2.0D); - int var34 = MathHelper.floor_double(var24 - var28 / 2.0D); - int var35 = MathHelper.floor_double(var20 + var28 / 2.0D); - int var36 = MathHelper.floor_double(var22 + var30 / 2.0D); - int var37 = MathHelper.floor_double(var24 + var28 / 2.0D); - - for (int var38 = var32; var38 <= var35; ++var38) - { - double var39 = (var38 + 0.5D - var20) / (var28 / 2.0D); - - if (var39 * var39 < 1.0D) - { - for (int var41 = var33; var41 <= var36; ++var41) - { - double var42 = (var41 + 0.5D - var22) / (var30 / 2.0D); - - if (var39 * var39 + var42 * var42 < 1.0D) - { - for (int var44 = var34; var44 <= var37; ++var44) - { - double var45 = (var44 + 0.5D - var24) / (var28 / 2.0D); - - int block = par1World.getBlockId(var38, var41, var44); - if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && (this.replaceID == 0 || block == this.replaceID)) - { - par1World.setBlock(var38, var41, var44, this.oreID, this.oreMeta, 2); - } - } - } - } - } - } - } - - return true; - } - - @Override - public boolean isOreGeneratedInWorld(World world, IChunkProvider chunkGenerator) - { - if (!this.shouldGenerate) - { - return false; - } - if (this.ignoreSurface && chunkGenerator instanceof ChunkProviderGenerate) - { - return false; - } - if (this.ignoreNether && chunkGenerator instanceof ChunkProviderHell) - { - return false; - } - if (this.ignoreEnd && chunkGenerator instanceof ChunkProviderEnd) - { - return false; - } - return true; - } -} diff --git a/APIs/universalelectricity/prefab/ore/OreGenReplaceStone.java b/APIs/universalelectricity/prefab/ore/OreGenReplaceStone.java deleted file mode 100644 index 151be2d47..000000000 --- a/APIs/universalelectricity/prefab/ore/OreGenReplaceStone.java +++ /dev/null @@ -1,17 +0,0 @@ -package universalelectricity.prefab.ore; - -import net.minecraft.item.ItemStack; - -public class OreGenReplaceStone extends OreGenReplace -{ - public OreGenReplaceStone(String name, String oreDiectionaryName, ItemStack stack, int minGenerateLevel, int maxGenerateLevel, int amountPerChunk, int amountPerBranch, String harvestTool, int harvestLevel) - { - super(name, oreDiectionaryName, stack, 1, minGenerateLevel, maxGenerateLevel, amountPerChunk, amountPerBranch, harvestTool, harvestLevel); - } - - // A simplified version of the constructor - public OreGenReplaceStone(String name, String oreDiectionaryName, ItemStack stack, int maxGenerateLevel, int amountPerChunk, int amountPerBranch) - { - this(name, oreDiectionaryName, stack, 0, maxGenerateLevel, amountPerChunk, amountPerBranch, "pickaxe", 1); - } -} diff --git a/APIs/universalelectricity/prefab/ore/OreGenerator.java b/APIs/universalelectricity/prefab/ore/OreGenerator.java deleted file mode 100644 index e0b2796a5..000000000 --- a/APIs/universalelectricity/prefab/ore/OreGenerator.java +++ /dev/null @@ -1,78 +0,0 @@ -package universalelectricity.prefab.ore; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkProvider; -import cpw.mods.fml.common.IWorldGenerator; -import cpw.mods.fml.common.registry.GameRegistry; - -public class OreGenerator implements IWorldGenerator -{ - public static boolean isInitiated = false; - - /** - * Add your ore data to this list of ores for it to automatically generate! No hassle indeed! - */ - private static final List ORES_TO_GENERATE = new ArrayList(); - - /** - * Adds an ore to the ore generate list. Do this in pre-init. - */ - public static void addOre(OreGenBase data) - { - if (!isInitiated) - { - GameRegistry.registerWorldGenerator(new OreGenerator()); - } - - ORES_TO_GENERATE.add(data); - } - - /** - * Checks to see if this ore - * - * @param oreName - * @return - */ - public static boolean oreExists(String oreName) - { - for (OreGenBase ore : ORES_TO_GENERATE) - { - if (ore.oreDictionaryName == oreName) - { - return true; - } - } - - return false; - } - - /** - * Removes an ore to the ore generate list. Do this in init. - */ - public static void removeOre(OreGenBase data) - { - ORES_TO_GENERATE.remove(data); - } - - @Override - public void generate(Random rand, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) - { - chunkX = chunkX << 4; - chunkZ = chunkZ << 4; - - // Checks to make sure this is the normal - // world - for (OreGenBase oreData : ORES_TO_GENERATE) - { - if (oreData.shouldGenerate && oreData.isOreGeneratedInWorld(world, chunkGenerator)) - { - oreData.generate(world, rand, chunkX, chunkZ); - } - - } - } -} diff --git a/APIs/universalelectricity/prefab/potion/CustomPotion.java b/APIs/universalelectricity/prefab/potion/CustomPotion.java deleted file mode 100644 index 0dc997cab..000000000 --- a/APIs/universalelectricity/prefab/potion/CustomPotion.java +++ /dev/null @@ -1,35 +0,0 @@ -package universalelectricity.prefab.potion; - -import net.minecraft.potion.Potion; - -public abstract class CustomPotion extends Potion -{ - /** - * Creates a new type of potion - * - * @param id - The ID of this potion. Make it greater than 20. - * @param isBadEffect - Is this potion a good potion or a bad one? - * @param color - The color of this potion. - * @param name - The name of this potion. - */ - public CustomPotion(int id, boolean isBadEffect, int color, String name) - { - super(id, isBadEffect, color); - this.setPotionName("potion." + name); - Potion.potionTypes[this.getId()] = this; - } - - @Override - public Potion setIconIndex(int par1, int par2) - { - super.setIconIndex(par1, par2); - return this; - } - - @Override - protected Potion setEffectiveness(double par1) - { - super.setEffectiveness(par1); - return this; - } -} diff --git a/APIs/universalelectricity/prefab/potion/CustomPotionEffect.java b/APIs/universalelectricity/prefab/potion/CustomPotionEffect.java deleted file mode 100644 index 788b623d4..000000000 --- a/APIs/universalelectricity/prefab/potion/CustomPotionEffect.java +++ /dev/null @@ -1,40 +0,0 @@ -package universalelectricity.prefab.potion; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; - -public class CustomPotionEffect extends PotionEffect -{ - public CustomPotionEffect(int potionID, int duration, int amplifier) - { - super(potionID, duration, amplifier); - } - - public CustomPotionEffect(Potion potion, int duration, int amplifier) - { - this(potion.getId(), duration, amplifier); - } - - /** - * Creates a potion effect with custom curable items. - * - * @param curativeItems - ItemStacks that can cure this potion effect - */ - public CustomPotionEffect(int potionID, int duration, int amplifier, List curativeItems) - { - super(potionID, duration, amplifier); - - if (curativeItems == null) - { - this.setCurativeItems(new ArrayList()); - } - else - { - this.setCurativeItems(curativeItems); - } - } -} diff --git a/APIs/universalelectricity/prefab/tile/IRotatable.java b/APIs/universalelectricity/prefab/tile/IRotatable.java deleted file mode 100644 index ec515f94c..000000000 --- a/APIs/universalelectricity/prefab/tile/IRotatable.java +++ /dev/null @@ -1,23 +0,0 @@ -package universalelectricity.prefab.tile; - -import net.minecraftforge.common.ForgeDirection; - -/** - * The interface is applied to TileEntities that can rotate. - * - * @author Calclavia - * - */ - -public interface IRotatable -{ - /** - * @return Gets the facing direction. Always returns the front side of the block. - */ - public ForgeDirection getDirection(); - - /** - * @param Sets the facing direction. - */ - public void setDirection(ForgeDirection direection); -} diff --git a/APIs/universalelectricity/prefab/tile/TileEntityAdvanced.java b/APIs/universalelectricity/prefab/tile/TileEntityAdvanced.java deleted file mode 100644 index 9a0c20b26..000000000 --- a/APIs/universalelectricity/prefab/tile/TileEntityAdvanced.java +++ /dev/null @@ -1,60 +0,0 @@ -package universalelectricity.prefab.tile; - -import net.minecraft.block.Block; -import net.minecraft.tileentity.TileEntity; - -/** - * A TileEntity with some pre-added functionalities. - * - * @author Calclavia - * - */ -public abstract class TileEntityAdvanced extends TileEntity -{ - protected long ticks = 0; - - @Override - public void updateEntity() - { - if (this.ticks == 0) - { - this.initiate(); - } - - if (this.ticks >= Long.MAX_VALUE) - { - this.ticks = 1; - } - - this.ticks++; - } - - /** - * Called on the TileEntity's first tick. - */ - public void initiate() - { - } - - @Override - public int getBlockMetadata() - { - if (this.blockMetadata == -1) - { - this.blockMetadata = this.worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); - } - - return this.blockMetadata; - } - - @Override - public Block getBlockType() - { - if (this.blockType == null) - { - this.blockType = Block.blocksList[this.worldObj.getBlockId(this.xCoord, this.yCoord, this.zCoord)]; - } - - return this.blockType; - } -} diff --git a/APIs/universalelectricity/prefab/tile/TileEntityConductor.java b/APIs/universalelectricity/prefab/tile/TileEntityConductor.java deleted file mode 100644 index 281df6127..000000000 --- a/APIs/universalelectricity/prefab/tile/TileEntityConductor.java +++ /dev/null @@ -1,126 +0,0 @@ -package universalelectricity.prefab.tile; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.block.IConductor; -import universalelectricity.core.block.IConnector; -import universalelectricity.core.block.INetworkProvider; -import universalelectricity.core.electricity.NetworkLoader; -import universalelectricity.core.grid.IElectricityNetwork; -import universalelectricity.core.vector.Vector3; -import universalelectricity.core.vector.VectorHelper; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -/** - * This tile entity pre-fabricated for all conductors. - * - * @author Calclavia - * - */ -public abstract class TileEntityConductor extends TileEntityAdvanced implements IConductor -{ - private IElectricityNetwork network; - - public TileEntity[] adjacentConnections = null; - - @Override - public void invalidate() - { - if (!this.worldObj.isRemote) - { - this.getNetwork().split(this); - } - - super.invalidate(); - } - - @Override - public boolean canUpdate() - { - return false; - } - - @Override - public IElectricityNetwork getNetwork() - { - if (this.network == null) - { - this.setNetwork(NetworkLoader.getNewNetwork(this)); - } - - return this.network; - } - - @Override - public void setNetwork(IElectricityNetwork network) - { - this.network = network; - } - - @Override - public void refresh() - { - if (!this.worldObj.isRemote) - { - this.adjacentConnections = null; - - for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tileEntity = VectorHelper.getConnectorFromSide(this.worldObj, new Vector3(this), side); - - if (tileEntity != null) - { - if (tileEntity.getClass() == this.getClass() && tileEntity instanceof INetworkProvider) - { - this.getNetwork().merge(((INetworkProvider) tileEntity).getNetwork()); - } - } - } - - this.getNetwork().refresh(); - } - } - - @Override - public TileEntity[] getAdjacentConnections() - { - /** - * Cache the adjacentConnections. - */ - if (this.adjacentConnections == null) - { - this.adjacentConnections = new TileEntity[6]; - - for (byte i = 0; i < 6; i++) - { - ForgeDirection side = ForgeDirection.getOrientation(i); - TileEntity tileEntity = VectorHelper.getConnectorFromSide(this.worldObj, new Vector3(this), side); - - if (tileEntity instanceof IConnector) - { - if (((IConnector) tileEntity).canConnect(side.getOpposite())) - { - this.adjacentConnections[i] = tileEntity; - } - } - } - } - - return this.adjacentConnections; - } - - @Override - public boolean canConnect(ForgeDirection direction) - { - return true; - } - - @Override - @SideOnly(Side.CLIENT) - public AxisAlignedBB getRenderBoundingBox() - { - return AxisAlignedBB.getAABBPool().getAABB(this.xCoord, this.yCoord, this.zCoord, this.xCoord + 1, this.yCoord + 1, this.zCoord + 1); - } -} diff --git a/APIs/universalelectricity/prefab/tile/TileEntityElectrical.java b/APIs/universalelectricity/prefab/tile/TileEntityElectrical.java deleted file mode 100644 index f7ac5c2a0..000000000 --- a/APIs/universalelectricity/prefab/tile/TileEntityElectrical.java +++ /dev/null @@ -1,234 +0,0 @@ -package universalelectricity.prefab.tile; - -import java.util.EnumSet; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.block.IElectrical; -import universalelectricity.core.block.IElectricalStorage; -import universalelectricity.core.electricity.ElectricityHelper; -import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.core.grid.IElectricityNetwork; -import universalelectricity.core.item.ElectricItemHelper; -import universalelectricity.core.vector.Vector3; -import universalelectricity.core.vector.VectorHelper; - -public abstract class TileEntityElectrical extends TileEntityAdvanced implements IElectrical, IElectricalStorage -{ - public float energyStored = 0; - - /** - * Recharges electric item. - */ - public void recharge(ItemStack itemStack) - { - this.setEnergyStored(this.getEnergyStored() - ElectricItemHelper.chargeItem(itemStack, this.getProvide(ForgeDirection.UNKNOWN))); - } - - /** - * Discharges electric item. - */ - public void discharge(ItemStack itemStack) - { - this.setEnergyStored(this.getEnergyStored() + ElectricItemHelper.dischargeItem(itemStack, this.getRequest(ForgeDirection.UNKNOWN))); - } - - /** - * Called to produce the potential electricity inside this block. - */ - public void produce() - { - if (!this.worldObj.isRemote) - { - for (ForgeDirection outputDirection : this.getOutputDirections()) - { - this.produceUE(outputDirection); - } - } - } - - /** - * Produces UE power towards a specific direction. - * - * @param outputDirection - The output direction. - */ - public boolean produceUE(ForgeDirection outputDirection) - { - if (!this.worldObj.isRemote && outputDirection != null && outputDirection != ForgeDirection.UNKNOWN) - { - float provide = this.getProvide(outputDirection); - - if (provide > 0) - { - TileEntity outputTile = VectorHelper.getConnectorFromSide(this.worldObj, new Vector3(this), outputDirection); - IElectricityNetwork outputNetwork = ElectricityHelper.getNetworkFromTileEntity(outputTile, outputDirection); - if (outputNetwork != null) - { - ElectricityPack powerRequest = outputNetwork.getRequest(this); - - if (powerRequest.getWatts() > 0) - { - ElectricityPack sendPack = ElectricityPack.min(ElectricityPack.getFromWatts(this.getEnergyStored(), this.getVoltage()), ElectricityPack.getFromWatts(provide, this.getVoltage())); - float rejectedPower = outputNetwork.produce(sendPack, this); - this.provideElectricity(sendPack.getWatts() - rejectedPower, true); - return true; - } - } - else if (outputTile instanceof IElectrical) - { - float requestedEnergy = ((IElectrical) outputTile).getRequest(outputDirection.getOpposite()); - - if (requestedEnergy > 0) - { - ElectricityPack sendPack = ElectricityPack.min(ElectricityPack.getFromWatts(this.getEnergyStored(), this.getVoltage()), ElectricityPack.getFromWatts(provide, this.getVoltage())); - float acceptedEnergy = ((IElectrical) outputTile).receiveElectricity(outputDirection.getOpposite(), sendPack, true); - this.setEnergyStored(this.getEnergyStored() - acceptedEnergy); - return true; - } - } - } - } - - return false; - } - - /** - * The electrical input direction. - * - * @return The direction that electricity is entered into the tile. Return null for no input. By - * default you can accept power from all sides. - */ - public EnumSet getInputDirections() - { - return EnumSet.allOf(ForgeDirection.class); - } - - /** - * The electrical output direction. - * - * @return The direction that electricity is output from the tile. Return null for no output. By - * default it will return an empty EnumSet. - */ - public EnumSet getOutputDirections() - { - return EnumSet.noneOf(ForgeDirection.class); - } - - @Override - public float receiveElectricity(ForgeDirection from, ElectricityPack receive, boolean doReceive) - { - if (this.getInputDirections().contains(from)) - { - return this.receiveElectricity(receive, doReceive); - } - - return 0; - } - - @Override - public ElectricityPack provideElectricity(ForgeDirection from, ElectricityPack request, boolean doProvide) - { - if (this.getOutputDirections().contains(from)) - { - return this.provideElectricity(request, doProvide); - } - - return new ElectricityPack(); - } - - /** - * A non-side specific version of receiveElectricity for you to optionally use it internally. - */ - public float receiveElectricity(ElectricityPack receive, boolean doReceive) - { - if (receive != null) - { - float prevEnergyStored = this.getEnergyStored(); - float newStoredEnergy = Math.min(this.getEnergyStored() + receive.getWatts(), this.getMaxEnergyStored()); - - if (doReceive) - { - this.setEnergyStored(newStoredEnergy); - } - - return Math.max(newStoredEnergy - prevEnergyStored, 0); - } - - return 0; - } - - public float receiveElectricity(float energy, boolean doReceive) - { - return this.receiveElectricity(ElectricityPack.getFromWatts(energy, this.getVoltage()), doReceive); - } - - /** - * A non-side specific version of provideElectricity for you to optionally use it internally. - */ - public ElectricityPack provideElectricity(ElectricityPack request, boolean doProvide) - { - if (request != null) - { - float requestedEnergy = Math.min(request.getWatts(), this.energyStored); - - if (doProvide) - { - this.setEnergyStored(this.energyStored - requestedEnergy); - } - - return ElectricityPack.getFromWatts(requestedEnergy, this.getVoltage()); - } - - return new ElectricityPack(); - } - - public ElectricityPack provideElectricity(float energy, boolean doProvide) - { - return this.provideElectricity(ElectricityPack.getFromWatts(energy, this.getVoltage()), doProvide); - } - - @Override - public void setEnergyStored(float energy) - { - this.energyStored = Math.max(Math.min(energy, this.getMaxEnergyStored()), 0); - } - - @Override - public float getEnergyStored() - { - return this.energyStored; - } - - @Override - public boolean canConnect(ForgeDirection direction) - { - if (direction == null || direction.equals(ForgeDirection.UNKNOWN)) - { - return false; - } - - return this.getInputDirections().contains(direction) || this.getOutputDirections().contains(direction); - } - - @Override - public float getVoltage() - { - return 0.120F; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - this.energyStored = nbt.getFloat("energyStored"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - nbt.setFloat("energyStored", this.energyStored); - } -} diff --git a/APIs/universalelectricity/prefab/vector/Region2.java b/APIs/universalelectricity/prefab/vector/Region2.java deleted file mode 100644 index 6d52a746c..000000000 --- a/APIs/universalelectricity/prefab/vector/Region2.java +++ /dev/null @@ -1,36 +0,0 @@ -package universalelectricity.prefab.vector; - -import universalelectricity.core.vector.Vector2; - -public class Region2 -{ - public Vector2 min; - public Vector2 max; - - public Region2() - { - this(new Vector2(), new Vector2()); - } - - public Region2(Vector2 min, Vector2 max) - { - this.min = min; - this.max = max; - } - - /** - * Checks if a point is located inside a region - */ - public boolean isIn(Vector2 point) - { - return (point.x > this.min.x && point.x < this.max.x) && (point.y > this.min.y && point.y < this.max.y); - } - - /** - * Returns whether the given region intersects with this one. - */ - public boolean isIn(Region2 region) - { - return region.max.x > this.min.x && region.min.x < this.max.x ? (region.max.y > this.min.y && region.min.y < this.max.y ? true : false) : false; - } -} diff --git a/APIs/universalelectricity/prefab/vector/Region3.java b/APIs/universalelectricity/prefab/vector/Region3.java deleted file mode 100644 index 278a984b2..000000000 --- a/APIs/universalelectricity/prefab/vector/Region3.java +++ /dev/null @@ -1,131 +0,0 @@ -package universalelectricity.prefab.vector; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import universalelectricity.core.vector.Vector3; - -/** - * A cubical region class. - * - * @author Calclavia - */ -public class Region3 -{ - public Vector3 min; - public Vector3 max; - - public Region3() - { - this(new Vector3(), new Vector3()); - } - - public Region3(Vector3 min, Vector3 max) - { - this.min = min; - this.max = max; - } - - public Region3(AxisAlignedBB aabb) - { - this.min = new Vector3(aabb.minX, aabb.minY, aabb.minZ); - this.max = new Vector3(aabb.maxX, aabb.maxY, aabb.maxZ); - } - - public AxisAlignedBB toAABB() - { - return AxisAlignedBB.getBoundingBox(this.min.x, this.min.y, this.min.z, this.max.x, this.max.y, this.max.z); - } - - public Region2 toRegion2() - { - return new Region2(this.min.toVector2(), this.max.toVector2()); - } - - /** - * Checks if a point is located inside a region - */ - public boolean isIn(Vector3 point) - { - return (point.x > this.min.x && point.x < this.max.x) && (point.y > this.min.y && point.y < this.max.y) && (point.z > this.min.z && point.z < this.max.z); - } - - /** - * Returns whether the given region intersects with this one. - */ - public boolean isIn(Region3 region) - { - return region.max.x > this.min.x && region.min.x < this.max.x ? (region.max.y > this.min.y && region.min.y < this.max.y ? region.max.z > this.min.z && region.min.z < this.max.z : false) : false; - } - - public void expand(Vector3 difference) - { - this.min.subtract(difference); - this.max.add(difference); - } - - /** - * @return List of vectors within this region. - */ - public List getVectors() - { - List vectors = new ArrayList(); - - for (int x = this.min.intX(); x < this.max.intX(); x++) - { - for (int y = this.min.intY(); x < this.max.intY(); y++) - { - for (int z = this.min.intZ(); x < this.max.intZ(); z++) - { - vectors.add(new Vector3(x, y, z)); - } - } - } - - return vectors; - } - - public List getVectors(Vector3 center, int radius) - { - List vectors = new ArrayList(); - - for (int x = this.min.intX(); x < this.max.intX(); x++) - { - for (int y = this.min.intY(); x < this.max.intY(); y++) - { - for (int z = this.min.intZ(); x < this.max.intZ(); z++) - { - Vector3 vector3 = new Vector3(x, y, z); - - if (center.distanceTo(vector3) <= radius) - { - vectors.add(vector3); - } - } - } - } - - return vectors; - } - - /** - * Returns all entities in this region. - */ - public List getEntities(World world, Class entityClass) - { - return world.getEntitiesWithinAABB(entityClass, this.toAABB()); - } - - public List getEntitiesExlude(World world, Entity entity) - { - return world.getEntitiesWithinAABBExcludingEntity(entity, this.toAABB()); - } - - public List getEntities(World world) - { - return this.getEntities(world, Entity.class); - } -} diff --git a/src/dark/api/reciepes/MachineRecipeHandler.java b/src/dark/api/reciepes/MachineRecipeHandler.java index 591a8674a..c32016b3b 100644 --- a/src/dark/api/reciepes/MachineRecipeHandler.java +++ b/src/dark/api/reciepes/MachineRecipeHandler.java @@ -18,7 +18,6 @@ import cpw.mods.fml.common.registry.GameRegistry; import dark.api.ColorCode; import dark.core.basics.EnumMaterial; import dark.core.basics.EnumOrePart; -import dark.core.basics.ItemOreDirv; import dark.core.helpers.AutoCraftingManager; import dark.machines.CoreRecipeLoader; diff --git a/src/dark/core/ExternalModHandler.java b/src/dark/core/ExternalModHandler.java index 623f935ee..7f7f2566a 100644 --- a/src/dark/core/ExternalModHandler.java +++ b/src/dark/core/ExternalModHandler.java @@ -1,12 +1,10 @@ package dark.core; import net.minecraft.tileentity.TileEntity; -import buildcraft.api.transport.IPipeTile; -import buildcraft.api.transport.IPipeTile.PipeType; import cpw.mods.fml.common.Loader; /** Handles working with other mod without or without the need of the APIs. - * + * * @author DarkGuardsman */ public class ExternalModHandler { @@ -24,20 +22,8 @@ public class ExternalModHandler } } - /** Is the tileEntity an instanceof IPipeTile and of type fluid from BuildCraft */ - public static boolean isBCFluidPipe(TileEntity entity) - { - return MOD_ID.BUILCRAFT_TRANSPORT_MOD.loaded && entity instanceof IPipeTile && ((IPipeTile) entity).getPipeType() == PipeType.FLUID; - } - - /** Is the tileEntity an instanceof IPipeTile and of type power from BuildCraft */ - public static boolean isBCPowerPipe(TileEntity entity) - { - return MOD_ID.BUILCRAFT_TRANSPORT_MOD.loaded && entity instanceof IPipeTile && ((IPipeTile) entity).getPipeType() == PipeType.POWER; - } - /** Checks to see if something can run powerless based on mods loaded - * + * * @param optional - power system that the device can use * @return true if free power is to be generated */ public static boolean runPowerLess() diff --git a/src/dark/core/helpers/EnergyHelper.java b/src/dark/core/helpers/EnergyHelper.java index f9532768f..a7704c9be 100644 --- a/src/dark/core/helpers/EnergyHelper.java +++ b/src/dark/core/helpers/EnergyHelper.java @@ -4,7 +4,6 @@ import ic2.api.item.IElectricItemManager; import ic2.api.item.ISpecialElectricItem; import net.minecraft.item.ItemStack; import net.minecraftforge.common.ForgeDirection; -import thermalexpansion.api.item.IChargeableItem; import universalelectricity.compatibility.Compatibility; import universalelectricity.core.item.ElectricItemHelper; import universalelectricity.core.item.IItemElectric; @@ -31,11 +30,6 @@ public class EnergyHelper energy = manager.charge(itemStack, (int) (energy * Compatibility.TO_IC2_RATIO), 0, false, false) * Compatibility.IC2_RATIO; machine.provideElectricity(energy, true); } - else if (itemStack.getItem() instanceof IChargeableItem) - { - float accepted = ((IChargeableItem) itemStack.getItem()).receiveEnergy(itemStack, machine.getProvide(ForgeDirection.UNKNOWN) * Compatibility.BC3_RATIO, true); - machine.provideElectricity(accepted, true); - } } } @@ -61,11 +55,6 @@ public class EnergyHelper machine.receiveElectricity(energy, true); } } - else if (itemStack.getItem() instanceof IChargeableItem) - { - float given = ((IChargeableItem) itemStack.getItem()).transferEnergy(itemStack, machine.getRequest(ForgeDirection.UNKNOWN) * Compatibility.BC3_RATIO, true); - machine.receiveElectricity(given, true); - } } } @@ -73,7 +62,7 @@ public class EnergyHelper { if (itemStack != null) { - if (itemStack.getItem() instanceof IItemElectric || itemStack.getItem() instanceof IChargeableItem) + if (itemStack.getItem() instanceof IItemElectric) { return true; } diff --git a/src/dark/machines/generators/BlockSmallSteamGen.java b/src/dark/machines/generators/BlockSmallSteamGen.java index 1343266e8..97a4d8e0b 100644 --- a/src/dark/machines/generators/BlockSmallSteamGen.java +++ b/src/dark/machines/generators/BlockSmallSteamGen.java @@ -21,7 +21,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import dark.core.DMCreativeTab; import dark.core.ModObjectRegistry.BlockBuildData; -import dark.core.helpers.MathHelper; import dark.core.prefab.machine.BlockMachine; import dark.machines.client.renders.BlockRenderingHandler; import dark.machines.client.renders.RenderSteamGen; diff --git a/src/dark/machines/items/ItemBattery.java b/src/dark/machines/items/ItemBattery.java index 6dacb082c..27e22a994 100644 --- a/src/dark/machines/items/ItemBattery.java +++ b/src/dark/machines/items/ItemBattery.java @@ -1,7 +1,6 @@ package dark.machines.items; import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraftforge.common.Configuration; import net.minecraftforge.oredict.OreDictionary;