Added a crafting cooldown on IAltar, so that outside blocks may request the altar to not perform work while it is not active.

This commit is contained in:
WayofTime 2015-02-27 08:31:39 -05:00
parent 8fbb19acc0
commit 39e3d6eb34
14 changed files with 57 additions and 26 deletions

View file

@ -1,5 +1,5 @@
#
#Mon Feb 23 18:21:38 EST 2015
#Thu Feb 26 20:41:21 EST 2015
mod_name=BloodMagic
forge_version=10.13.2.1232
ccc_version=1.0.4.29
@ -8,5 +8,5 @@ nei_version=1.0.3.64
package_group=com.wayoftime.bloodmagic
mod_version=1.3.1Beta1
minetweaker_version=Dev-1.7.10-3.0.9B
build_number=10
mc_version=1.7.10
build_number=9

View file

@ -1,9 +0,0 @@
package WayofTime.alchemicalWizardry.api;
public class RoutingFocusLogicLimit extends RoutingFocusLogic implements ILimitingLogic
{
public int getRoutingLimit()
{
return 0;
}
}

View file

@ -27,4 +27,11 @@ public interface IBloodAltar
public void sacrificialDaggerCall(int amount, boolean b);
public void startCycle();
/**
* Will set the altar to initiate a cooldown cycle after it crafts before starting to craft again, giving the user time to interact with the altar.
* This can only be set while the altar is not active.
* @param amount
*/
public void requestPauseAfterCrafting(int amount);
}

View file

@ -11,10 +11,10 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon;
import net.minecraft.util.StatCollector;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogic;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogicLimitDefault;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogicLimitIgnMeta;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogicLimitMatchNBT;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogicLimitModItems;
import WayofTime.alchemicalWizardry.common.routing.RoutingFocusLogicLimitDefault;
import WayofTime.alchemicalWizardry.common.routing.RoutingFocusLogicLimitIgnMeta;
import WayofTime.alchemicalWizardry.common.routing.RoutingFocusLogicLimitMatchNBT;
import WayofTime.alchemicalWizardry.common.routing.RoutingFocusLogicLimitModItems;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

View file

@ -1,5 +1,6 @@
package WayofTime.alchemicalWizardry.api;
package WayofTime.alchemicalWizardry.common.routing;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogic;
import net.minecraft.item.ItemStack;
public class RoutingFocusLogicIgnMeta extends RoutingFocusLogic

View file

@ -0,0 +1,12 @@
package WayofTime.alchemicalWizardry.common.routing;
import WayofTime.alchemicalWizardry.api.ILimitingLogic;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogic;
public class RoutingFocusLogicLimit extends RoutingFocusLogic implements ILimitingLogic
{
public int getRoutingLimit()
{
return 0;
}
}

View file

@ -1,4 +1,4 @@
package WayofTime.alchemicalWizardry.api;
package WayofTime.alchemicalWizardry.common.routing;
import net.minecraft.item.ItemStack;
import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus;

View file

@ -1,6 +1,7 @@
package WayofTime.alchemicalWizardry.api;
package WayofTime.alchemicalWizardry.common.routing;
import net.minecraft.item.ItemStack;
import WayofTime.alchemicalWizardry.api.ILimitingLogic;
import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus;
public class RoutingFocusLogicLimitIgnMeta extends RoutingFocusLogicIgnMeta implements ILimitingLogic

View file

@ -1,6 +1,7 @@
package WayofTime.alchemicalWizardry.api;
package WayofTime.alchemicalWizardry.common.routing;
import net.minecraft.item.ItemStack;
import WayofTime.alchemicalWizardry.api.ILimitingLogic;
import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus;
public class RoutingFocusLogicLimitMatchNBT extends RoutingFocusLogicMatchNBT implements ILimitingLogic

View file

@ -1,6 +1,7 @@
package WayofTime.alchemicalWizardry.api;
package WayofTime.alchemicalWizardry.common.routing;
import net.minecraft.item.ItemStack;
import WayofTime.alchemicalWizardry.api.ILimitingLogic;
import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus;
public class RoutingFocusLogicLimitModItems extends RoutingFocusLogicModItems implements ILimitingLogic

View file

@ -1,5 +1,6 @@
package WayofTime.alchemicalWizardry.api;
package WayofTime.alchemicalWizardry.common.routing;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogic;
import net.minecraft.item.ItemStack;
public class RoutingFocusLogicMatchNBT extends RoutingFocusLogic

View file

@ -1,5 +1,6 @@
package WayofTime.alchemicalWizardry.api;
package WayofTime.alchemicalWizardry.common.routing;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogic;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier;

View file

@ -1,8 +1,8 @@
package WayofTime.alchemicalWizardry.common.spell.complex.effect;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogic;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogicModItems;
import WayofTime.alchemicalWizardry.common.items.routing.OutputRoutingFocus;
import WayofTime.alchemicalWizardry.common.routing.RoutingFocusLogicModItems;
public class OutputRoutingFocusModItems extends OutputRoutingFocus
{

View file

@ -36,8 +36,6 @@ import WayofTime.alchemicalWizardry.common.bloodAltarUpgrade.AltarUpgradeCompone
import WayofTime.alchemicalWizardry.common.bloodAltarUpgrade.UpgradedAltars;
import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper;
import com.ibm.icu.text.MessageFormat;
public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFluidHandler, IBloodAltar
{
public static final int sizeInv = 1;
@ -70,6 +68,8 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui
private int lockdownDuration;
private int demonBloodDuration;
private int cooldownAfterCrafting = 0;
public TEAltar()
{
@ -192,6 +192,7 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui
lockdownDuration = par1NBTTagCompound.getInteger("lockdownDuration");
accelerationUpgrades = par1NBTTagCompound.getInteger("accelerationUpgrades");
demonBloodDuration = par1NBTTagCompound.getInteger("demonBloodDuration");
cooldownAfterCrafting = par1NBTTagCompound.getInteger("cooldownAfterCrafting");
}
public void setMainFluid(FluidStack fluid)
@ -271,6 +272,7 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui
par1NBTTagCompound.setInteger("lockdownDuration", lockdownDuration);
par1NBTTagCompound.setInteger("accelerationUpgrades", this.accelerationUpgrades);
par1NBTTagCompound.setInteger("demonBloodDuration", demonBloodDuration);
par1NBTTagCompound.setInteger("cooldownAfterCrafting", cooldownAfterCrafting);
}
@Override
@ -646,13 +648,17 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui
this.fluid.amount -= fluidOutputted;
}
if (worldObj.getWorldTime() % 100 == 0)
if (worldObj.getWorldTime() % 100 == 0 && this.cooldownAfterCrafting <= 0)
{
startCycle();
}
if (!isActive)
{
if(cooldownAfterCrafting > 0)
{
cooldownAfterCrafting--;
}
return;
}
@ -1076,4 +1082,13 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui
player.addChatMessage(new ChatComponentText(String.format(StatCollector.translateToLocal("message.altar.inputtank"), this.fluidInput.amount)));
player.addChatMessage(new ChatComponentText(String.format(StatCollector.translateToLocal("message.altar.outputtank"), this.fluidOutput.amount)));
}
@Override
public void requestPauseAfterCrafting(int amount)
{
if(this.isActive)
{
this.cooldownAfterCrafting = amount;
}
}
}