Committing the Ritual stuff

Incomplete. Ritual detection/rotation needs to be implemented. Currently hardcoded to a test ritual
This commit is contained in:
Nick 2015-12-26 16:49:25 -08:00
parent 9faae07131
commit 03847ad6d9
9 changed files with 209 additions and 40 deletions

View file

@ -10,11 +10,11 @@ public interface IMasterRitualStone {
String getOwner();
boolean activateRitual(ItemStack activationCrystal, EntityPlayer activator);
boolean activateRitual(ItemStack activationCrystal, EntityPlayer activator, Ritual ritual);
void performRitual(World world, BlockPos pos, Ritual ritual);
void performRitual(World world, BlockPos pos);
void stopRitual();
void stopRitual(Ritual.BreakType breakType);
int getCooldown();

View file

@ -23,11 +23,11 @@ public abstract class Ritual {
this(name, crystalLevel, activationCost, null);
}
public abstract boolean startRitual(IMasterRitualStone masterRitualStone, EntityPlayer player);
public abstract boolean activateRitual(IMasterRitualStone masterRitualStone, EntityPlayer player);
public abstract void performEffect(IMasterRitualStone masterRitualStone);
public abstract void performRitual(IMasterRitualStone masterRitualStone);
public abstract void onRitualBroken(IMasterRitualStone masterRitualStone, Ritual.BreakType breakType);
public abstract void stopRitual(IMasterRitualStone masterRitualStone, Ritual.BreakType breakType);
public abstract int getRefreshCost();

View file

@ -3,12 +3,21 @@ package WayofTime.bloodmagic.api.util.helper;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry;
import WayofTime.bloodmagic.api.registry.RitualRegistry;
import WayofTime.bloodmagic.api.ritual.EnumRuneType;
import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.RitualComponent;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import WayofTime.bloodmagic.block.BlockRitualStone;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.common.config.Configuration;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Map;
public class RitualHelper {
@ -31,6 +40,25 @@ public class RitualHelper {
return RitualRegistry.getIds().get(previousIndex);
}
public static boolean checkValidRitual(World world, BlockPos pos, String ritualId, EnumFacing direction) {
ArrayList<RitualComponent> components = RitualRegistry.getRitualForId(ritualId).getComponents();
if (components == null)
return false;
for (RitualComponent component : components) {
IBlockState worldState = world.getBlockState(pos.add(component.getOffset()));
if (worldState.getBlock() instanceof BlockRitualStone) {
EnumRuneType worldType = EnumRuneType.values()[worldState.getBlock().getMetaFromState(worldState)];
if (component.getRuneType() != worldType)
return false;
}
}
return true;
}
public static void checkImperfectRituals(Configuration config, String packageName, String category) {
checkRituals(config, packageName, category, ImperfectRitual.class, ImperfectRitualRegistry.enabledRituals);
}