#171 Merged new triggers implemented by domi1819

This commit is contained in:
CrazyPants committed 2013-10-09 09:07:14 +08:00
1 parent b0b020c65b
commit 442ed463c9
6 files changed
+139 -107

No files matched your search

+11 -5
View File
@@ -57,7 +57,7 @@ import crazypants.enderio.material.ItemMaterial;
import crazypants.enderio.material.ItemPowderIngot;
import crazypants.enderio.material.ItemYetaWrench;
import crazypants.enderio.material.MaterialRecipes;
import crazypants.enderio.trigger.TriggerEnergyStorage;
import crazypants.enderio.trigger.TriggerEnderIO;
import crazypants.enderio.trigger.TriggerProviderEIO;
@Mod(name = "EnderIO", modid = "EnderIO", version = "0.2.4b", dependencies = "required-after:Forge@[9.10.0.800,)")
@@ -117,7 +117,11 @@ public class EnderIO {
public static ItemYetaWrench itemYetaWench;
public static ItemMJReader itemMJReader;
public static ITrigger triggerNoEnergy, triggerHasEnergy, triggerFullEnergy;
public static ITrigger triggerNoEnergy;
public static ITrigger triggerHasEnergy;
public static ITrigger triggerFullEnergy;
public static ITrigger triggerIsCharging;
public static ITrigger triggerFinishedCharging;
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
@@ -198,9 +202,11 @@ public class EnderIO {
ConduitRecipes.addRecipes();
MachineRecipes.addRecipes();
triggerNoEnergy = new TriggerEnergyStorage("enderIO.trigger.noEnergy");
triggerHasEnergy = new TriggerEnergyStorage("enderIO.trigger.hasEnergy");
triggerFullEnergy = new TriggerEnergyStorage("enderIO.trigger.fullEnergy");
triggerNoEnergy = new TriggerEnderIO("enderIO.trigger.noEnergy", 0);
triggerHasEnergy = new TriggerEnderIO("enderIO.trigger.hasEnergy", 1);
triggerFullEnergy = new TriggerEnderIO("enderIO.trigger.fullEnergy", 2);
triggerIsCharging = new TriggerEnderIO("enderIO.trigger.isCharging", 3);
triggerFinishedCharging = new TriggerEnderIO("enderIO.trigger.finishedCharging", 4);
ActionManager.registerTriggerProvider(new TriggerProviderEIO());
@@ -0,0 +1,120 @@
package crazypants.enderio.trigger;
import thermalexpansion.api.item.IChargeableItem;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.machine.power.TileCapacitorBank;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraftforge.common.ForgeDirection;
import buildcraft.api.gates.ActionManager;
import buildcraft.api.gates.ITrigger;
import buildcraft.api.gates.ITriggerParameter;
public class TriggerEnderIO implements ITrigger {
public static Icon[] triggerIcons = new Icon[5];
public static String[] descriptions = new String[] { "Capacitor Bank has no energy stored", "Capacitor Bank has energy stored", "Capacitor Bank is full with energy", "Capacitor Bank is charging up items", "Capacitor Bank finished charging items" };
public String uniqueTag;
public int triggerID;
public TriggerEnderIO(String uniqueTag, int triggerID) {
this.uniqueTag = uniqueTag;
this.triggerID = triggerID;
ActionManager.registerTrigger(this);
}
@Override
public String getDescription() {
return descriptions[triggerID];
}
@Override
public boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter) {
if (tile instanceof TileCapacitorBank) {
TileCapacitorBank capacitorBank = (TileCapacitorBank) tile;
if (triggerID == 0) {
return capacitorBank.getEnergyStored() == 0;
}
if (triggerID == 1) {
return capacitorBank.getEnergyStored() != 0;
}
if (triggerID == 2) {
return capacitorBank.getEnergyStored() == capacitorBank.getMaxEnergyStored();
}
if (triggerID == 3 || triggerID == 4) {
ItemStack[] items = new ItemStack[capacitorBank.getSizeInventory()];
for (int i = 0; i < items.length; i++) {
items[i] = capacitorBank.getStackInSlot(i);
}
boolean capacitorBankEmpty = true;
for (int i = 0; i < items.length; i++) {
if (items[i] != null && items[i].getItem() instanceof IChargeableItem) {
capacitorBankEmpty = false;
}
}
if (capacitorBankEmpty){
return false;
}
boolean hasUnchargedItems = false;
for (int i = 0; i < items.length; i++) {
if (items[i] != null && items[i].getItem() instanceof IChargeableItem) {
IChargeableItem item = (IChargeableItem) items[i].getItem();
if (item.getEnergyStored(items[i]) < item.getMaxEnergyStored(items[i])) {
hasUnchargedItems = true;
}
}
}
if (hasUnchargedItems && triggerID == 3){
return true;
}
if (!hasUnchargedItems && triggerID == 4){
return true;
}
}
}
return false;
}
@Override
@SideOnly(Side.CLIENT)
public Icon getIcon() {
return triggerIcons[triggerID];
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister iconRegistry) {
triggerIcons[0] = iconRegistry.registerIcon("enderio:triggers/noEnergy");
triggerIcons[1] = iconRegistry.registerIcon("enderio:triggers/hasEnergy");
triggerIcons[2] = iconRegistry.registerIcon("enderio:triggers/fullEnergy");
triggerIcons[3] = iconRegistry.registerIcon("enderio:triggers/charging");
triggerIcons[4] = iconRegistry.registerIcon("enderio:triggers/chargingDone");
}
@Override
public int getLegacyId() {
return 0;
}
@Override
public String getUniqueTag() {
return this.uniqueTag;
}
@Override
public boolean hasParameter() {
return false;
}
@Override
public ITriggerParameter createParameter() {
return null;
}
}
@@ -1,92 +0,0 @@
package crazypants.enderio.trigger;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.machine.power.TileCapacitorBank;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraftforge.common.ForgeDirection;
import buildcraft.api.gates.ActionManager;
import buildcraft.api.gates.ITrigger;
import buildcraft.api.gates.ITriggerParameter;
public class TriggerEnergyStorage implements ITrigger
{
public static Icon[] triggerIcons = new Icon[3];
public String uniqueTag;
public TriggerEnergyStorage(String uniqueTag)
{
this.uniqueTag = uniqueTag;
ActionManager.registerTrigger(this);
}
@Override
public String getDescription()
{
if (uniqueTag == "enderIO.trigger.noEnergy") return "Capacitor Bank has no energy stored";
if (uniqueTag == "enderIO.trigger.hasEnergy") return "Capacitor Bank has energy stored";
if (uniqueTag == "enderIO.trigger.fullEnergy") return "Capacitor Bank is full with energy";
return "";
}
@Override
public boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter)
{
if (tile instanceof TileCapacitorBank)
{
TileCapacitorBank capacitorBank = (TileCapacitorBank) tile;
if (uniqueTag == "enderIO.trigger.noEnergy") return capacitorBank.getEnergyStored() == 0;
if (uniqueTag == "enderIO.trigger.hasEnergy") return capacitorBank.getEnergyStored() != 0;
if (uniqueTag == "enderIO.trigger.fullEnergy") return capacitorBank.getEnergyStored() == capacitorBank.getMaxEnergyStored();
}
return false;
}
@Override
@SideOnly(Side.CLIENT)
public Icon getIcon()
{
if (uniqueTag == "enderIO.trigger.noEnergy") return triggerIcons[0];
if (uniqueTag == "enderIO.trigger.hasEnergy") return triggerIcons[1];
if (uniqueTag == "enderIO.trigger.fullEnergy") return triggerIcons[2];
return triggerIcons[0];
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister iconRegistry)
{
triggerIcons[0] = iconRegistry.registerIcon("enderio:triggers/noEnergy");
triggerIcons[1] = iconRegistry.registerIcon("enderio:triggers/hasEnergy");
triggerIcons[2] = iconRegistry.registerIcon("enderio:triggers/fullEnergy");
}
@Override
public int getLegacyId()
{
return 0;
}
@Override
public String getUniqueTag()
{
return this.uniqueTag;
}
@Override
public boolean hasParameter()
{
return false;
}
@Override
public ITriggerParameter createParameter()
{
return null;
}
}
@@ -12,31 +12,29 @@ import buildcraft.api.gates.ITrigger;
import buildcraft.api.gates.ITriggerProvider;
import buildcraft.api.transport.IPipe;
public class TriggerProviderEIO implements ITriggerProvider
{
public class TriggerProviderEIO implements ITriggerProvider {
@Override
public LinkedList<ITrigger> getNeighborTriggers(Block block, TileEntity tile)
{
if (tile instanceof IOverrideDefaultTriggers)
{
public LinkedList<ITrigger> getNeighborTriggers(Block block, TileEntity tile) {
if (tile instanceof IOverrideDefaultTriggers) {
return ((IOverrideDefaultTriggers) tile).getTriggers();
}
LinkedList<ITrigger> triggers = new LinkedList<ITrigger>();
if (tile instanceof TileCapacitorBank)
{
if (tile instanceof TileCapacitorBank) {
triggers.add(EnderIO.triggerNoEnergy);
triggers.add(EnderIO.triggerHasEnergy);
triggers.add(EnderIO.triggerFullEnergy);
triggers.add(EnderIO.triggerIsCharging);
triggers.add(EnderIO.triggerFinishedCharging);
}
return triggers;
}
@Override
public LinkedList<ITrigger> getPipeTriggers(IPipe pipe)
{
public LinkedList<ITrigger> getPipeTriggers(IPipe pipe) {
return null;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B