aboutsummaryrefslogtreecommitdiff
path: root/src/Java/binnie/core/triggers
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-01-20 14:24:34 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-01-20 14:24:34 +1000
commit869c206c4fcc8001bd2e1d66f704290331813835 (patch)
tree96735ce8fe4665e2759c3374221d6f06f4527df2 /src/Java/binnie/core/triggers
parentec2c72827f01dd4bb2174137f1ab162f9ddaab62 (diff)
downloadGT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.gz
GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.tar.bz2
GT5-Unofficial-869c206c4fcc8001bd2e1d66f704290331813835.zip
Initial Commit
Diffstat (limited to 'src/Java/binnie/core/triggers')
-rw-r--r--src/Java/binnie/core/triggers/ActionProvider.java38
-rw-r--r--src/Java/binnie/core/triggers/BinnieAction.java88
-rw-r--r--src/Java/binnie/core/triggers/BinnieTrigger.java116
-rw-r--r--src/Java/binnie/core/triggers/ModuleTrigger.java45
-rw-r--r--src/Java/binnie/core/triggers/TriggerData.java37
-rw-r--r--src/Java/binnie/core/triggers/TriggerInventory.java11
-rw-r--r--src/Java/binnie/core/triggers/TriggerPower.java48
-rw-r--r--src/Java/binnie/core/triggers/TriggerProvider.java57
-rw-r--r--src/Java/binnie/core/triggers/TriggerWorking.java47
9 files changed, 487 insertions, 0 deletions
diff --git a/src/Java/binnie/core/triggers/ActionProvider.java b/src/Java/binnie/core/triggers/ActionProvider.java
new file mode 100644
index 0000000000..1fa519dc6c
--- /dev/null
+++ b/src/Java/binnie/core/triggers/ActionProvider.java
@@ -0,0 +1,38 @@
+package binnie.core.triggers;
+
+import binnie.core.machines.component.IBuildcraft.ActionProvider;
+import buildcraft.api.statements.IActionExternal;
+import buildcraft.api.statements.IActionInternal;
+import buildcraft.api.statements.IActionProvider;
+import buildcraft.api.statements.IStatementContainer;
+import cpw.mods.fml.common.Optional.Method;
+import java.util.Collection;
+import java.util.LinkedList;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+class ActionProvider
+ implements IActionProvider
+{
+ @Optional.Method(modid="BuildCraft|Silicon")
+ public Collection<IActionInternal> getInternalActions(IStatementContainer container)
+ {
+ return null;
+ }
+
+ @Optional.Method(modid="BuildCraft|Silicon")
+ public Collection<IActionExternal> getExternalActions(ForgeDirection side, TileEntity tile)
+ {
+ LinkedList<IActionExternal> list = new LinkedList();
+ if ((tile instanceof IBuildcraft.ActionProvider)) {
+ ((IBuildcraft.ActionProvider)tile).getActions(list);
+ }
+ LinkedList<IActionExternal> list2 = new LinkedList();
+ for (IActionExternal action : list2) {
+ if ((action != null) && (action.getUniqueTag() != null)) {
+ list.add(action);
+ }
+ }
+ return list2;
+ }
+}
diff --git a/src/Java/binnie/core/triggers/BinnieAction.java b/src/Java/binnie/core/triggers/BinnieAction.java
new file mode 100644
index 0000000000..f9c0d24e78
--- /dev/null
+++ b/src/Java/binnie/core/triggers/BinnieAction.java
@@ -0,0 +1,88 @@
+package binnie.core.triggers;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.resource.BinnieIcon;
+import binnie.core.resource.ManagerResource;
+import buildcraft.api.statements.IActionExternal;
+import buildcraft.api.statements.IStatement;
+import buildcraft.api.statements.IStatementContainer;
+import buildcraft.api.statements.IStatementParameter;
+import buildcraft.api.statements.StatementManager;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.common.util.ForgeDirection;
+
+class BinnieAction
+ implements IActionExternal
+{
+ private static int incrementalID = 800;
+ public static BinnieAction actionPauseProcess;
+ public static BinnieAction actionCancelTask;
+ private String desc;
+ private BinnieIcon icon;
+ private String tag;
+ private int id = 0;
+
+ BinnieAction(String desc, String tag, String iconFile)
+ {
+ this(desc, tag, BinnieCore.instance, iconFile);
+ }
+
+ private BinnieAction(String desc, String tag, AbstractMod mod, String iconFile)
+ {
+ this.id = (incrementalID++);
+ this.tag = tag;
+ StatementManager.registerStatement(this);
+ this.icon = Binnie.Resource.getItemIcon(mod, iconFile);
+ this.desc = desc;
+ }
+
+ public String getDescription()
+ {
+ return this.desc;
+ }
+
+ public String getUniqueTag()
+ {
+ return this.tag;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon()
+ {
+ return this.icon.getIcon();
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister iconRegister)
+ {
+ this.icon.registerIcon(iconRegister);
+ }
+
+ public int maxParameters()
+ {
+ return 0;
+ }
+
+ public int minParameters()
+ {
+ return 0;
+ }
+
+ public IStatementParameter createParameter(int index)
+ {
+ return null;
+ }
+
+ public IStatement rotateLeft()
+ {
+ return this;
+ }
+
+ public void actionActivate(TileEntity target, ForgeDirection side, IStatementContainer source, IStatementParameter[] parameters) {}
+}
diff --git a/src/Java/binnie/core/triggers/BinnieTrigger.java b/src/Java/binnie/core/triggers/BinnieTrigger.java
new file mode 100644
index 0000000000..e5cac34dea
--- /dev/null
+++ b/src/Java/binnie/core/triggers/BinnieTrigger.java
@@ -0,0 +1,116 @@
+package binnie.core.triggers;
+
+import binnie.Binnie;
+import binnie.core.AbstractMod;
+import binnie.core.BinnieCore;
+import binnie.core.resource.BinnieIcon;
+import binnie.core.resource.ManagerResource;
+import buildcraft.api.statements.IStatement;
+import buildcraft.api.statements.IStatementContainer;
+import buildcraft.api.statements.IStatementParameter;
+import buildcraft.api.statements.ITriggerExternal;
+import buildcraft.api.statements.StatementManager;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import java.util.List;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.common.util.ForgeDirection;
+
+final class BinnieTrigger
+ implements ITriggerExternal
+{
+ private static int incrementalID = 800;
+ protected static BinnieTrigger triggerNoBlankTemplate;
+ protected static BinnieTrigger triggerNoTemplate;
+ protected static BinnieTrigger triggerIsWorking;
+ protected static BinnieTrigger triggerIsNotWorking;
+ protected static BinnieTrigger triggerCanWork;
+ protected static BinnieTrigger triggerCannotWork;
+ protected static BinnieTrigger triggerPowerNone;
+ protected static BinnieTrigger triggerPowerLow;
+ protected static BinnieTrigger triggerPowerMedium;
+ protected static BinnieTrigger triggerPowerHigh;
+ protected static BinnieTrigger triggerPowerFull;
+ protected static BinnieTrigger triggerSerumFull;
+ protected static BinnieTrigger triggerSerumPure;
+ protected static BinnieTrigger triggerSerumEmpty;
+ protected static BinnieTrigger triggerAcclimatiserNone;
+ protected static BinnieTrigger triggerAcclimatiserHot;
+ protected static BinnieTrigger triggerAcclimatiserCold;
+ protected static BinnieTrigger triggerAcclimatiserWet;
+ protected static BinnieTrigger triggerAcclimatiserDry;
+ private String desc;
+ private String tag;
+ private BinnieIcon icon;
+ private int id = 0;
+
+ public BinnieTrigger(String desc, String tag, String iconFile)
+ {
+ this(desc, tag, BinnieCore.instance, iconFile);
+ }
+
+ public BinnieTrigger(String desc, String tag, AbstractMod mod, String iconFile)
+ {
+ this.id = (incrementalID++);
+ this.tag = tag;
+ StatementManager.registerStatement(this);
+ TriggerProvider.triggers.add(this);
+ this.icon = Binnie.Resource.getItemIcon(mod, iconFile);
+ this.desc = desc;
+ }
+
+ public String getDescription()
+ {
+ return this.desc;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(IIconRegister register)
+ {
+ return this.icon.getIcon(register);
+ }
+
+ public String getUniqueTag()
+ {
+ return this.tag;
+ }
+
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon()
+ {
+ return this.icon.getIcon();
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister iconRegister)
+ {
+ this.icon.registerIcon(iconRegister);
+ }
+
+ public int maxParameters()
+ {
+ return 0;
+ }
+
+ public int minParameters()
+ {
+ return 0;
+ }
+
+ public IStatementParameter createParameter(int index)
+ {
+ return null;
+ }
+
+ public IStatement rotateLeft()
+ {
+ return null;
+ }
+
+ public boolean isTriggerActive(TileEntity target, ForgeDirection side, IStatementContainer source, IStatementParameter[] parameters)
+ {
+ return false;
+ }
+}
diff --git a/src/Java/binnie/core/triggers/ModuleTrigger.java b/src/Java/binnie/core/triggers/ModuleTrigger.java
new file mode 100644
index 0000000000..1d39e816cb
--- /dev/null
+++ b/src/Java/binnie/core/triggers/ModuleTrigger.java
@@ -0,0 +1,45 @@
+package binnie.core.triggers;
+
+import binnie.core.IInitializable;
+import binnie.extrabees.ExtraBees;
+import buildcraft.api.statements.StatementManager;
+
+public class ModuleTrigger
+ implements IInitializable
+{
+ public void preInit() {}
+
+ public void init()
+ {
+ BinnieAction.actionPauseProcess = new BinnieAction("Pause Process", "binnie.action.pauseProcess", "actions/PauseProcess");
+ BinnieAction.actionCancelTask = new BinnieAction("Cancel Task", "binnie.action.cancelTask", "actions/CancelTask");
+
+ StatementManager.registerActionProvider(new ActionProvider());
+
+ BinnieTrigger.triggerNoBlankTemplate = new BinnieTrigger("No Blank Template", "binnie.trigger.noBlankTemplate", ExtraBees.instance, "triggers/NoBlankTemplate");
+
+
+ BinnieTrigger.triggerNoTemplate = new BinnieTrigger("No Template", "binnie.trigger.noTemplate", ExtraBees.instance, "triggers/NoTemplate");
+
+
+ BinnieTrigger.triggerIsWorking = new BinnieTrigger("Is Working", "binnie.trigger.isWorking", "triggers/IsWorking");
+ BinnieTrigger.triggerIsNotWorking = new BinnieTrigger("Is Not Working", "binnie.trigger.isNotWorking", "triggers/IsNotWorking");
+ BinnieTrigger.triggerCanWork = new BinnieTrigger("Can Work", "binnie.trigger.canWork", "triggers/CanWork");
+ BinnieTrigger.triggerCannotWork = new BinnieTrigger("Cannot Work", "binnie.trigger.cannotWork", "triggers/CannotWork");
+
+ BinnieTrigger.triggerPowerNone = new BinnieTrigger("Power None", "binnie.trigger.powerNone", "triggers/PowerNone");
+ BinnieTrigger.triggerPowerLow = new BinnieTrigger("Power Low", "binnie.trigger.powerLow", "triggers/PowerLow");
+ BinnieTrigger.triggerPowerMedium = new BinnieTrigger("Power Medium", "binnie.trigger.powerMedium", "triggers/PowerMedium");
+ BinnieTrigger.triggerPowerHigh = new BinnieTrigger("Power High", "binnie.trigger.powerHigh", "triggers/PowerHigh");
+ BinnieTrigger.triggerPowerFull = new BinnieTrigger("Power Full", "binnie.trigger.powerFull", "triggers/PowerFull");
+
+
+ BinnieTrigger.triggerSerumFull = new BinnieTrigger("Serum Full", "binnie.trigger.serumFull", ExtraBees.instance, "triggers/SerumFull");
+ BinnieTrigger.triggerSerumPure = new BinnieTrigger("Serum Pure", "binnie.trigger.serumPure", ExtraBees.instance, "triggers/SerumPure");
+ BinnieTrigger.triggerSerumEmpty = new BinnieTrigger("Serum Pure", "binnie.trigger.serumEmpty", ExtraBees.instance, "triggers/SerumEmpty");
+
+ StatementManager.registerTriggerProvider(new TriggerProvider());
+ }
+
+ public void postInit() {}
+}
diff --git a/src/Java/binnie/core/triggers/TriggerData.java b/src/Java/binnie/core/triggers/TriggerData.java
new file mode 100644
index 0000000000..8784e4278a
--- /dev/null
+++ b/src/Java/binnie/core/triggers/TriggerData.java
@@ -0,0 +1,37 @@
+package binnie.core.triggers;
+
+import buildcraft.api.statements.ITriggerExternal;
+import java.util.Map.Entry;
+
+public class TriggerData
+ implements Map.Entry<ITriggerExternal, Boolean>
+{
+ private final ITriggerExternal key;
+ private Boolean value;
+
+ public TriggerData(ITriggerExternal key, Boolean value)
+ {
+ if (key == null) {
+ throw new NullPointerException();
+ }
+ this.key = key;
+ this.value = value;
+ }
+
+ public ITriggerExternal getKey()
+ {
+ return this.key;
+ }
+
+ public Boolean getValue()
+ {
+ return this.value;
+ }
+
+ public Boolean setValue(Boolean value)
+ {
+ Boolean old = this.value;
+ this.value = value;
+ return old;
+ }
+}
diff --git a/src/Java/binnie/core/triggers/TriggerInventory.java b/src/Java/binnie/core/triggers/TriggerInventory.java
new file mode 100644
index 0000000000..2892f12c7e
--- /dev/null
+++ b/src/Java/binnie/core/triggers/TriggerInventory.java
@@ -0,0 +1,11 @@
+package binnie.core.triggers;
+
+import net.minecraft.inventory.IInventory;
+
+public class TriggerInventory
+{
+ private static Boolean isSlotEmpty(IInventory inventory, int slot)
+ {
+ return Boolean.valueOf(inventory.getStackInSlot(slot) != null);
+ }
+}
diff --git a/src/Java/binnie/core/triggers/TriggerPower.java b/src/Java/binnie/core/triggers/TriggerPower.java
new file mode 100644
index 0000000000..69c02decd9
--- /dev/null
+++ b/src/Java/binnie/core/triggers/TriggerPower.java
@@ -0,0 +1,48 @@
+package binnie.core.triggers;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.power.IPoweredMachine;
+import binnie.core.machines.power.PowerInterface;
+
+public class TriggerPower
+{
+ public static TriggerData powerNone(Object tile)
+ {
+ return new TriggerData(BinnieTrigger.triggerPowerNone, Boolean.valueOf(getPercentage(tile) < 0.0500000007450581D));
+ }
+
+ public static TriggerData powerLow(Object tile)
+ {
+ return new TriggerData(BinnieTrigger.triggerPowerLow, Boolean.valueOf(getPercentage(tile) < 0.3499999940395355D));
+ }
+
+ public static TriggerData powerMedium(Object tile)
+ {
+ double p = getPercentage(tile);
+ return new TriggerData(BinnieTrigger.triggerPowerMedium, Boolean.valueOf((p >= 0.3499999940395355D) && (p <= 0.6499999761581421D)));
+ }
+
+ public static TriggerData powerHigh(Object tile)
+ {
+ double p = getPercentage(tile);
+ return new TriggerData(BinnieTrigger.triggerPowerHigh, Boolean.valueOf(getPercentage(tile) > 0.6499999761581421D));
+ }
+
+ public static TriggerData powerFull(Object tile)
+ {
+ double p = getPercentage(tile);
+ return new TriggerData(BinnieTrigger.triggerPowerFull, Boolean.valueOf(getPercentage(tile) > 0.949999988079071D));
+ }
+
+ private static double getPercentage(Object tile)
+ {
+ IPoweredMachine process = (IPoweredMachine)Machine.getInterface(IPoweredMachine.class, tile);
+ if (process != null)
+ {
+ double percentage = process.getInterface().getEnergy() / process.getInterface().getCapacity();
+
+ return percentage;
+ }
+ return 0.0D;
+ }
+}
diff --git a/src/Java/binnie/core/triggers/TriggerProvider.java b/src/Java/binnie/core/triggers/TriggerProvider.java
new file mode 100644
index 0000000000..fc6da191e8
--- /dev/null
+++ b/src/Java/binnie/core/triggers/TriggerProvider.java
@@ -0,0 +1,57 @@
+package binnie.core.triggers;
+
+import binnie.core.machines.component.IBuildcraft.TriggerProvider;
+import buildcraft.api.statements.IStatementContainer;
+import buildcraft.api.statements.ITriggerExternal;
+import buildcraft.api.statements.ITriggerInternal;
+import buildcraft.api.statements.ITriggerProvider;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+class TriggerProvider
+ implements ITriggerProvider
+{
+ static TriggerProvider instance = new TriggerProvider();
+ public static List<BinnieTrigger> triggers = new ArrayList();
+
+ public Collection<ITriggerExternal> getExternalTriggers(ForgeDirection side, TileEntity tile)
+ {
+ LinkedList<TriggerData> list = new LinkedList();
+
+ LinkedList<ITriggerExternal> triggerData = new LinkedList();
+ if ((tile instanceof IBuildcraft.TriggerProvider)) {
+ ((IBuildcraft.TriggerProvider)tile).getTriggers(list);
+ }
+ for (TriggerData data : list) {
+ if ((data.getKey() != null) && (data.getKey().getUniqueTag() != null)) {
+ triggerData.add(data.getKey());
+ }
+ }
+ return triggerData;
+ }
+
+ public static boolean isTriggerActive(ITriggerExternal trigger, TileEntity tile)
+ {
+ LinkedList<TriggerData> list = new LinkedList();
+
+ LinkedList<ITriggerExternal> triggerData = new LinkedList();
+ if ((tile instanceof IBuildcraft.TriggerProvider)) {
+ ((IBuildcraft.TriggerProvider)tile).getTriggers(list);
+ }
+ for (TriggerData data : list) {
+ if (data.getKey() == trigger) {
+ return data.getValue().booleanValue();
+ }
+ }
+ return false;
+ }
+
+ public Collection<ITriggerInternal> getInternalTriggers(IStatementContainer container)
+ {
+ return new ArrayList();
+ }
+}
diff --git a/src/Java/binnie/core/triggers/TriggerWorking.java b/src/Java/binnie/core/triggers/TriggerWorking.java
new file mode 100644
index 0000000000..06feee0f86
--- /dev/null
+++ b/src/Java/binnie/core/triggers/TriggerWorking.java
@@ -0,0 +1,47 @@
+package binnie.core.triggers;
+
+import binnie.core.machines.Machine;
+import binnie.core.machines.power.IProcess;
+
+public class TriggerWorking
+{
+ public static TriggerData isNotWorking(Object inventory)
+ {
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory);
+ boolean b = false;
+ if (process != null) {
+ b = (process.canWork() != null) && (process.canProgress() != null);
+ }
+ return new TriggerData(BinnieTrigger.triggerIsNotWorking, Boolean.valueOf(b));
+ }
+
+ public static TriggerData isWorking(Object inventory)
+ {
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory);
+ boolean b = false;
+ if (process != null) {
+ b = (process.canWork() == null) && (process.canProgress() == null);
+ }
+ return new TriggerData(BinnieTrigger.triggerIsWorking, Boolean.valueOf(b));
+ }
+
+ public static TriggerData canWork(Object inventory)
+ {
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory);
+ boolean b = false;
+ if (process != null) {
+ b = process.canWork() == null;
+ }
+ return new TriggerData(BinnieTrigger.triggerCanWork, Boolean.valueOf(b));
+ }
+
+ public static TriggerData cannotWork(Object inventory)
+ {
+ IProcess process = (IProcess)Machine.getInterface(IProcess.class, inventory);
+ boolean b = false;
+ if (process != null) {
+ b = process.canWork() != null;
+ }
+ return new TriggerData(BinnieTrigger.triggerCannotWork, Boolean.valueOf(b));
+ }
+}