BloodMagic/src/main/java/WayofTime/alchemicalWizardry/api/rituals/RitualEffect.java

91 lines
2.9 KiB
Java
Raw Normal View History

package WayofTime.alchemicalWizardry.api.rituals;
import java.util.ArrayList;
import java.util.List;
2014-10-13 22:33:20 +02:00
import net.minecraft.entity.player.EntityPlayer;
2015-07-29 08:23:01 -04:00
import net.minecraft.util.EnumFacing;
import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent;
import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentStack;
2014-08-25 07:58:39 -04:00
public abstract class RitualEffect
{
public abstract void performEffect(IMasterRitualStone ritualStone);
2014-10-13 22:33:20 +02:00
public boolean startRitual(IMasterRitualStone ritualStone, EntityPlayer player)
{
2014-10-13 22:33:20 +02:00
return true;
}
2014-10-13 22:33:20 +02:00
public void onRitualBroken(IMasterRitualStone ritualStone, RitualBreakMethod method)
{
2014-10-13 22:33:20 +02:00
}
public abstract int getCostPerRefresh();
public int getInitialCooldown()
{
return 0;
}
2014-10-13 22:33:20 +02:00
public abstract List<RitualComponent> getRitualComponentList();
2014-10-13 22:33:20 +02:00
2014-08-25 07:58:39 -04:00
public boolean canDrainReagent(IMasterRitualStone ritualStone, Reagent reagent, int amount, boolean doDrain)
{
2014-10-13 22:33:20 +02:00
if (ritualStone == null || reagent == null || amount == 0)
{
return false;
}
ReagentStack reagentStack = new ReagentStack(reagent, amount);
2015-07-29 08:23:01 -04:00
ReagentStack stack = ritualStone.drain(EnumFacing.UP, reagentStack, false);
2014-10-13 22:33:20 +02:00
if (stack != null && stack.amount >= amount)
{
if (doDrain)
{
2015-07-29 08:23:01 -04:00
ritualStone.drain(EnumFacing.UP, reagentStack, true);
2014-10-13 22:33:20 +02:00
}
return true;
}
return false;
2014-08-25 07:58:39 -04:00
}
public LocalRitualStorage getNewLocalStorage()
{
2015-01-16 10:00:50 -05:00
return new LocalRitualStorage();
}
public void addOffsetRunes(ArrayList<RitualComponent> ritualList, int off1, int off2, int y, int rune)
{
ritualList.add(new RitualComponent(off1, y, off2, rune));
ritualList.add(new RitualComponent(off2, y, off1, rune));
ritualList.add(new RitualComponent(off1, y, -off2, rune));
ritualList.add(new RitualComponent(-off2, y, off1, rune));
ritualList.add(new RitualComponent(-off1, y, off2, rune));
ritualList.add(new RitualComponent(off2, y, -off1, rune));
ritualList.add(new RitualComponent(-off1, y, -off2, rune));
ritualList.add(new RitualComponent(-off2, y, -off1, rune));
}
public void addCornerRunes(ArrayList<RitualComponent> ritualList, int off1, int y, int rune)
{
ritualList.add(new RitualComponent(off1, y, off1, rune));
ritualList.add(new RitualComponent(off1, y, -off1, rune));
ritualList.add(new RitualComponent(-off1, y, -off1, rune));
ritualList.add(new RitualComponent(-off1, y, off1, rune));
}
public void addParallelRunes(ArrayList<RitualComponent> ritualList, int off1, int y, int rune)
{
ritualList.add(new RitualComponent(off1, y, 0, rune));
ritualList.add(new RitualComponent(-off1, y, 0, rune));
ritualList.add(new RitualComponent(0, y, -off1, rune));
ritualList.add(new RitualComponent(0, y, off1, rune));
}
}