Committing the Ritual stuff
Incomplete. Ritual detection/rotation needs to be implemented. Currently hardcoded to a test ritual
This commit is contained in:
parent
9faae07131
commit
03847ad6d9
9 changed files with 209 additions and 40 deletions
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue