aboutsummaryrefslogtreecommitdiff
path: root/src/Java/binnie/extrabees/apiary/machine/AlvearyTransmission.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/binnie/extrabees/apiary/machine/AlvearyTransmission.java')
-rw-r--r--src/Java/binnie/extrabees/apiary/machine/AlvearyTransmission.java81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/Java/binnie/extrabees/apiary/machine/AlvearyTransmission.java b/src/Java/binnie/extrabees/apiary/machine/AlvearyTransmission.java
new file mode 100644
index 0000000000..b041bf1c37
--- /dev/null
+++ b/src/Java/binnie/extrabees/apiary/machine/AlvearyTransmission.java
@@ -0,0 +1,81 @@
+package binnie.extrabees.apiary.machine;
+
+import binnie.core.machines.IMachine;
+import binnie.core.machines.Machine;
+import binnie.core.machines.MachineComponent;
+import binnie.core.machines.MachineUtil;
+import binnie.core.machines.power.ComponentPowerReceptor;
+import binnie.core.machines.power.IPoweredMachine;
+import binnie.craftgui.minecraft.IMachineInformation;
+import binnie.extrabees.apiary.TileExtraBeeAlveary;
+import binnie.extrabees.core.ExtraBeeTexture;
+import cofh.api.energy.IEnergyHandler;
+import java.util.ArrayList;
+import java.util.List;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class AlvearyTransmission
+{
+ public static class PackageAlvearyTransmission
+ extends AlvearyMachine.AlvearyPackage
+ implements IMachineInformation
+ {
+ public PackageAlvearyTransmission()
+ {
+ super(ExtraBeeTexture.AlvearyTransmission.getTexture(), false);
+ }
+
+ public void createMachine(Machine machine)
+ {
+ new ComponentPowerReceptor(machine, 1000);
+ new AlvearyTransmission.ComponentTransmission(machine);
+ }
+ }
+
+ public static class ComponentTransmission
+ extends MachineComponent
+ {
+ public ComponentTransmission(Machine machine)
+ {
+ super();
+ }
+
+ public void onUpdate()
+ {
+ super.onUpdate();
+ int energy = getUtil().getPoweredMachine().getEnergyStored(ForgeDirection.NORTH);
+ if (energy == 0) {
+ return;
+ }
+ TileExtraBeeAlveary tile = (TileExtraBeeAlveary)getMachine().getTileEntity();
+
+ List<IEnergyHandler> handlers = new ArrayList();
+ for (TileEntity alvearyTile : tile.getAlvearyBlocks()) {
+ if (((alvearyTile instanceof IEnergyHandler)) && (alvearyTile != tile)) {
+ handlers.add((IEnergyHandler)alvearyTile);
+ }
+ }
+ if (handlers.isEmpty()) {
+ return;
+ }
+ int maxOutput = 500;
+ int output = energy / handlers.size();
+ if (output > maxOutput) {
+ output = maxOutput;
+ }
+ if (output < 1) {
+ output = 1;
+ }
+ for (IEnergyHandler handler : handlers)
+ {
+ int recieved = handler.receiveEnergy(ForgeDirection.NORTH, output, false);
+ getUtil().getPoweredMachine().extractEnergy(ForgeDirection.NORTH, recieved, false);
+ energy = getUtil().getPoweredMachine().getEnergyStored(ForgeDirection.NORTH);
+ if (energy == 0) {
+ return;
+ }
+ }
+ }
+ }
+}