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 mod_name=BloodMagic
forge_version=10.13.2.1232 forge_version=10.13.2.1232
ccc_version=1.0.4.29 ccc_version=1.0.4.29
@ -8,5 +8,5 @@ nei_version=1.0.3.64
package_group=com.wayoftime.bloodmagic package_group=com.wayoftime.bloodmagic
mod_version=1.3.1Beta1 mod_version=1.3.1Beta1
minetweaker_version=Dev-1.7.10-3.0.9B minetweaker_version=Dev-1.7.10-3.0.9B
build_number=10
mc_version=1.7.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 sacrificialDaggerCall(int amount, boolean b);
public void startCycle(); 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.IIcon;
import net.minecraft.util.StatCollector; import net.minecraft.util.StatCollector;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogic; import WayofTime.alchemicalWizardry.api.RoutingFocusLogic;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogicLimitDefault; import WayofTime.alchemicalWizardry.common.routing.RoutingFocusLogicLimitDefault;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogicLimitIgnMeta; import WayofTime.alchemicalWizardry.common.routing.RoutingFocusLogicLimitIgnMeta;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogicLimitMatchNBT; import WayofTime.alchemicalWizardry.common.routing.RoutingFocusLogicLimitMatchNBT;
import WayofTime.alchemicalWizardry.api.RoutingFocusLogicLimitModItems; import WayofTime.alchemicalWizardry.common.routing.RoutingFocusLogicLimitModItems;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; 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; import net.minecraft.item.ItemStack;
public class RoutingFocusLogicIgnMeta extends RoutingFocusLogic 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 net.minecraft.item.ItemStack;
import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus; 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 net.minecraft.item.ItemStack;
import WayofTime.alchemicalWizardry.api.ILimitingLogic;
import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus; import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus;
public class RoutingFocusLogicLimitIgnMeta extends RoutingFocusLogicIgnMeta implements ILimitingLogic 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 net.minecraft.item.ItemStack;
import WayofTime.alchemicalWizardry.api.ILimitingLogic;
import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus; import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus;
public class RoutingFocusLogicLimitMatchNBT extends RoutingFocusLogicMatchNBT implements ILimitingLogic 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 net.minecraft.item.ItemStack;
import WayofTime.alchemicalWizardry.api.ILimitingLogic;
import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus; import WayofTime.alchemicalWizardry.common.items.routing.ILimitedRoutingFocus;
public class RoutingFocusLogicLimitModItems extends RoutingFocusLogicModItems implements ILimitingLogic 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; import net.minecraft.item.ItemStack;
public class RoutingFocusLogicMatchNBT extends RoutingFocusLogic 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 net.minecraft.item.ItemStack;
import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier; import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier;

View file

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