diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index 4f9c12ff..775618d7 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -3,10 +3,7 @@ package WayofTime.bloodmagic; import WayofTime.bloodmagic.api.util.helper.LogHelper; import WayofTime.bloodmagic.network.AlchemicalWizardryPacketHandler; import WayofTime.bloodmagic.proxy.CommonProxy; -import WayofTime.bloodmagic.registry.ModBlocks; -import WayofTime.bloodmagic.registry.ModEntities; -import WayofTime.bloodmagic.registry.ModItems; -import WayofTime.bloodmagic.registry.ModPotions; +import WayofTime.bloodmagic.registry.*; import WayofTime.bloodmagic.util.handler.EventHandler; import WayofTime.bloodmagic.util.helper.InventoryRenderHelper; import lombok.Getter; @@ -71,6 +68,10 @@ public class BloodMagic { public void init(FMLInitializationEvent event) { AlchemicalWizardryPacketHandler.init(); + ModRituals.initRituals(); + ModRituals.initImperfectRituals(); + ConfigHandler.checkRituals(); + proxy.init(); } diff --git a/src/main/java/WayofTime/bloodmagic/ConfigHandler.java b/src/main/java/WayofTime/bloodmagic/ConfigHandler.java index 8bef9b4c..9ebc3394 100644 --- a/src/main/java/WayofTime/bloodmagic/ConfigHandler.java +++ b/src/main/java/WayofTime/bloodmagic/ConfigHandler.java @@ -2,8 +2,12 @@ package WayofTime.bloodmagic; import WayofTime.bloodmagic.api.BloodMagicAPI; import WayofTime.bloodmagic.api.BlockStack; +import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry; +import WayofTime.bloodmagic.api.util.helper.RitualHelper; import WayofTime.bloodmagic.registry.ModPotions; import WayofTime.bloodmagic.util.Utils; +import lombok.Getter; +import lombok.Setter; import net.minecraft.block.Block; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.fml.common.registry.GameRegistry; @@ -16,7 +20,9 @@ import java.util.List; public class ConfigHandler { - public static Configuration config; + @Getter + @Setter + private static Configuration config; // Teleposer public static String[] teleposerBlacklisting; @@ -159,6 +165,9 @@ public class ConfigHandler { vanillaPotionWaterBreathingEnabled = config.getBoolean("vanillaPotionWaterBreathingEnabled", category + ".toggle", true, "Enables the Water Breathing potion in Alchemy"); vanillaPotionWeaknessEnabled = config.getBoolean("vanillaPotionWeaknessEnabled", category + ".toggle", true, "Enables the Weakness potion in Alchemy"); + category = "Rituals"; + config.addCustomCategoryComment(category, "Ritual toggling"); + category = "General"; config.addCustomCategoryComment(category, "General settings"); BloodMagicAPI.setLoggingEnabled(config.getBoolean("enableLogging", category, true, "Allows logging information to the console. Fatal errors will bypass this")); @@ -192,4 +201,8 @@ public class ConfigHandler { teleposerBlacklist.add(new BlockStack(block, meta)); } } + + public static void checkRituals() { + RitualHelper.checkImperfectRituals(config, "WayofTime.bloodmagic.ritual.imperfect", "Rituals.imperfect"); + } } diff --git a/src/main/java/WayofTime/bloodmagic/api/registry/ImperfectRitualRegistry.java b/src/main/java/WayofTime/bloodmagic/api/registry/ImperfectRitualRegistry.java index f8a3f891..c9fd47f8 100644 --- a/src/main/java/WayofTime/bloodmagic/api/registry/ImperfectRitualRegistry.java +++ b/src/main/java/WayofTime/bloodmagic/api/registry/ImperfectRitualRegistry.java @@ -1,15 +1,17 @@ package WayofTime.bloodmagic.api.registry; +import WayofTime.bloodmagic.api.BlockStack; import WayofTime.bloodmagic.api.BloodMagicAPI; import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; +import net.minecraft.block.Block; import java.util.ArrayList; public class ImperfectRitualRegistry { - public static final BiMap enabledRituals = HashBiMap.create(); + private static final BiMap enabledRituals = HashBiMap.create(); private static final BiMap registry = HashBiMap.create(); /** @@ -27,6 +29,17 @@ public class ImperfectRitualRegistry { } } + public static ImperfectRitual getRitualForBlock(BlockStack blockStack) { + for (ImperfectRitual imperfectRitual : getRegistry().values()) { + if (imperfectRitual.getRequiredBlock().equals(blockStack)) { + System.out.println(imperfectRitual.toString()); + return imperfectRitual; + } + } + + return null; + } + public static ImperfectRitual getRitualForId(String id) { return registry.get(id); } @@ -44,13 +57,22 @@ public class ImperfectRitualRegistry { } public static boolean ritualEnabled(ImperfectRitual imperfectRitual) { - return enabledRituals.get(imperfectRitual); + try { + return enabledRituals.get(imperfectRitual); + } catch (NullPointerException e) { + BloodMagicAPI.getLogger().error("Invalid Imperfect Ritual was called"); + return false; + } } public static BiMap getRegistry() { return HashBiMap.create(registry); } + public static BiMap getEnabledMap() { + return HashBiMap.create(enabledRituals); + } + public static ArrayList getIds() { return new ArrayList(registry.keySet()); } diff --git a/src/main/java/WayofTime/bloodmagic/api/registry/RitualRegistry.java b/src/main/java/WayofTime/bloodmagic/api/registry/RitualRegistry.java index 6d0fdea1..e1033ba5 100644 --- a/src/main/java/WayofTime/bloodmagic/api/registry/RitualRegistry.java +++ b/src/main/java/WayofTime/bloodmagic/api/registry/RitualRegistry.java @@ -2,13 +2,14 @@ package WayofTime.bloodmagic.api.registry; import WayofTime.bloodmagic.api.BloodMagicAPI; import WayofTime.bloodmagic.api.ritual.Ritual; +import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import java.util.ArrayList; public class RitualRegistry { - public static final BiMap enabledRituals = HashBiMap.create(); + private static final BiMap enabledRituals = HashBiMap.create(); private static final BiMap registry = HashBiMap.create(); /** @@ -43,13 +44,22 @@ public class RitualRegistry { } public static boolean ritualEnabled(Ritual ritual) { - return enabledRituals.get(ritual); + try { + return enabledRituals.get(ritual); + } catch (NullPointerException e) { + BloodMagicAPI.getLogger().error("Invalid Ritual was called"); + return false; + } } public static BiMap getRegistry() { return HashBiMap.create(registry); } + public static BiMap getEnabledMap() { + return HashBiMap.create(enabledRituals); + } + public static ArrayList getIds() { return new ArrayList(registry.keySet()); } diff --git a/src/main/java/WayofTime/bloodmagic/api/ritual/IMasterRitualStone.java b/src/main/java/WayofTime/bloodmagic/api/ritual/IMasterRitualStone.java index 4e0a36f9..d5851424 100644 --- a/src/main/java/WayofTime/bloodmagic/api/ritual/IMasterRitualStone.java +++ b/src/main/java/WayofTime/bloodmagic/api/ritual/IMasterRitualStone.java @@ -1,15 +1,21 @@ package WayofTime.bloodmagic.api.ritual; -import WayofTime.bloodmagic.api.ritual.imperfect.IImperfectRitualStone; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; -public interface IMasterRitualStone extends IImperfectRitualStone { +public interface IMasterRitualStone { + + String getOwner(); + + boolean activateRitual(ItemStack activationCrystal, EntityPlayer activator); void performRitual(World world, BlockPos pos, Ritual ritual); + void stopRitual(); + void setCooldown(int cooldown); int getCooldown(); @@ -18,15 +24,11 @@ public interface IMasterRitualStone extends IImperfectRitualStone { EnumFacing getDirection(); - NBTTagCompound getCustomRitualTag(); - - void setCustomRitualTag(NBTTagCompound tag); - boolean areTanksEmpty(); int getRunningTime(); - LocalRitualStorage getLocalStorage(); + World getWorld(); - void setLocalStorage(LocalRitualStorage storage); + BlockPos getPos(); } diff --git a/src/main/java/WayofTime/bloodmagic/api/ritual/Ritual.java b/src/main/java/WayofTime/bloodmagic/api/ritual/Ritual.java index d323db6b..e9bb14fc 100644 --- a/src/main/java/WayofTime/bloodmagic/api/ritual/Ritual.java +++ b/src/main/java/WayofTime/bloodmagic/api/ritual/Ritual.java @@ -32,10 +32,6 @@ public abstract class Ritual { public abstract ArrayList getComponents(); - public LocalRitualStorage getNewLocalStorage() { - return new LocalRitualStorage(); - } - public void addOffsetRunes(ArrayList components, int offset1, int offset2, int y, EnumRuneType rune) { components.add(new RitualComponent(new BlockPos(offset1, y, offset2), rune)); components.add(new RitualComponent(new BlockPos(offset2, y, offset1), rune)); diff --git a/src/main/java/WayofTime/bloodmagic/api/ritual/imperfect/IImperfectRitualStone.java b/src/main/java/WayofTime/bloodmagic/api/ritual/imperfect/IImperfectRitualStone.java index 01d47338..e66c0376 100644 --- a/src/main/java/WayofTime/bloodmagic/api/ritual/imperfect/IImperfectRitualStone.java +++ b/src/main/java/WayofTime/bloodmagic/api/ritual/imperfect/IImperfectRitualStone.java @@ -1,11 +1,12 @@ package WayofTime.bloodmagic.api.ritual.imperfect; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.BlockPos; import net.minecraft.world.World; public interface IImperfectRitualStone { - String getOwner(); + boolean performRitual(World world, BlockPos pos, ImperfectRitual imperfectRitual, EntityPlayer player); World getWorld(); diff --git a/src/main/java/WayofTime/bloodmagic/api/ritual/imperfect/ImperfectRitual.java b/src/main/java/WayofTime/bloodmagic/api/ritual/imperfect/ImperfectRitual.java index 0122f8a3..45decc3f 100644 --- a/src/main/java/WayofTime/bloodmagic/api/ritual/imperfect/ImperfectRitual.java +++ b/src/main/java/WayofTime/bloodmagic/api/ritual/imperfect/ImperfectRitual.java @@ -1,19 +1,27 @@ package WayofTime.bloodmagic.api.ritual.imperfect; import WayofTime.bloodmagic.api.BlockStack; +import lombok.Getter; import lombok.RequiredArgsConstructor; import net.minecraft.entity.player.EntityPlayer; @RequiredArgsConstructor +@Getter public abstract class ImperfectRitual { + private final String name; private final BlockStack requiredBlock; private final int activationCost; private final boolean lightshow; - public ImperfectRitual(BlockStack requiredBlock, int activationCost) { - this(requiredBlock, activationCost, false); + public ImperfectRitual(String name, BlockStack requiredBlock, int activationCost) { + this(name, requiredBlock, activationCost, false); } public abstract boolean onActivate(IImperfectRitualStone imperfectRitualStone, EntityPlayer player); + + @Override + public String toString() { + return getName() + ":" + getRequiredBlock().toString() + "@" + getActivationCost(); + } } diff --git a/src/main/java/WayofTime/bloodmagic/api/util/helper/RitualHelper.java b/src/main/java/WayofTime/bloodmagic/api/util/helper/RitualHelper.java index 19b297da..cfab69bb 100644 --- a/src/main/java/WayofTime/bloodmagic/api/util/helper/RitualHelper.java +++ b/src/main/java/WayofTime/bloodmagic/api/util/helper/RitualHelper.java @@ -1,7 +1,10 @@ package WayofTime.bloodmagic.api.util.helper; +import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry; import WayofTime.bloodmagic.api.registry.RitualRegistry; import WayofTime.bloodmagic.api.ritual.Ritual; +import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; +import com.google.common.collect.BiMap; import net.minecraftforge.common.config.Configuration; import sun.misc.Launcher; @@ -28,6 +31,14 @@ public class RitualHelper { return RitualRegistry.getIds().get(previousIndex); } + public static void checkImperfectRituals(Configuration config, String packageName, String category) { + checkRituals(config, packageName, category, ImperfectRitual.class, ImperfectRitualRegistry.getEnabledMap()); + } + + public static void checkRituals(Configuration config, String packageName, String category) { + checkRituals(config, packageName, category, Ritual.class, RitualRegistry.getEnabledMap()); + } + /** * Adds your Ritual to the {@link RitualRegistry#enabledRituals} Map. * This is used to determine whether your effect is enabled or not. @@ -35,13 +46,16 @@ public class RitualHelper { * The config option will be created as {@code B:ClassName=true} with a comment of * {@code Enables the ClassName ritual}. * + * Use {@link #} + * * Should be safe to modify at any point. * * @param config - Your mod's Forge {@link Configuration} object. * @param packageName - The package your Rituals are located in. * @param category - The config category to write to. */ - public static void checkRituals(Configuration config, String packageName, String category) { + @SuppressWarnings("unchecked") + private static void checkRituals(Configuration config, String packageName, String category, Class ritualClass, BiMap enabledMap) { String name = packageName; if (!name.startsWith("/")) name = "/" + name; @@ -60,8 +74,9 @@ public class RitualHelper { try { Object o = Class.forName(packageName + "." + className).newInstance(); - if (o instanceof Ritual) - RitualRegistry.enabledRituals.put((Ritual) o, config.get(category, className, true).getBoolean()); + if (ritualClass.isInstance(o)) + enabledMap.put(ritualClass.cast(o), + config.get(category, className, true).getBoolean()); } catch (ClassNotFoundException e) { e.printStackTrace(); diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java b/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java index 57d9cb9a..b7843e81 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java @@ -1,6 +1,9 @@ package WayofTime.bloodmagic.block; import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.BlockStack; +import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry; +import WayofTime.bloodmagic.tile.TileImperfectRitualStone; import WayofTime.bloodmagic.tile.TileMasterRitualStone; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -13,6 +16,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; @@ -43,6 +47,21 @@ public class BlockRitualController extends BlockContainer { list.add(new ItemStack(this, 1, i)); } + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) { + TileEntity tile = world.getTileEntity(pos); + + if (getMetaFromState(state) == 1 && tile instanceof TileImperfectRitualStone) { + + IBlockState determinerState = world.getBlockState(pos.up()); + BlockStack determiner = new BlockStack(determinerState.getBlock(), determinerState.getBlock().getMetaFromState(determinerState)); + + return ((TileImperfectRitualStone) tile).performRitual(world, pos, ImperfectRitualRegistry.getRitualForBlock(determiner), player); + } + + return false; + } + @Override public int getRenderType() { return 3; @@ -75,6 +94,6 @@ public class BlockRitualController extends BlockContainer { @Override public TileEntity createNewTileEntity(World world, int meta) { - return meta == 0 ? new TileMasterRitualStone() : null; + return meta == 0 ? new TileMasterRitualStone() : new TileImperfectRitualStone(); } } diff --git a/src/main/java/WayofTime/bloodmagic/client/gui/ConfigGui.java b/src/main/java/WayofTime/bloodmagic/client/gui/ConfigGui.java index 5b4df0ac..6e56b803 100644 --- a/src/main/java/WayofTime/bloodmagic/client/gui/ConfigGui.java +++ b/src/main/java/WayofTime/bloodmagic/client/gui/ConfigGui.java @@ -21,10 +21,11 @@ public class ConfigGui extends GuiConfig { List list = new ArrayList(); // adds sections declared in ConfigHandler. toLowerCase() is used because the configuration class automatically does this, so must we. - list.add(new ConfigElement(ConfigHandler.config.getCategory("Potions".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("Teleposer Blacklist".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("Item/Block Blacklisting".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("General".toLowerCase()))); + list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Potions".toLowerCase()))); + list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Teleposer Blacklist".toLowerCase()))); + list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Item/Block Blacklisting".toLowerCase()))); + list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("General".toLowerCase()))); + list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Rituals".toLowerCase()))); return list; } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java b/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java new file mode 100644 index 00000000..94dd8e15 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java @@ -0,0 +1,19 @@ +package WayofTime.bloodmagic.registry; + +import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry; +import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; +import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualNight; + +public class ModRituals { + + public static ImperfectRitual imperfectNight; + + public static void initRituals() { + + } + + public static void initImperfectRituals() { + imperfectNight = new ImperfectRitualNight(); + ImperfectRitualRegistry.registerRitual(imperfectNight, imperfectNight.getName()); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/ritual/imperfect/ImperfectRitualNight.java b/src/main/java/WayofTime/bloodmagic/ritual/imperfect/ImperfectRitualNight.java new file mode 100644 index 00000000..7dea6df2 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/ritual/imperfect/ImperfectRitualNight.java @@ -0,0 +1,27 @@ +package WayofTime.bloodmagic.ritual.imperfect; + +import WayofTime.bloodmagic.api.BlockStack; +import WayofTime.bloodmagic.api.ritual.imperfect.IImperfectRitualStone; +import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; +import net.minecraft.entity.effect.EntityLightningBolt; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; + +public class ImperfectRitualNight extends ImperfectRitual { + + public ImperfectRitualNight() { + super("night", new BlockStack(Blocks.lapis_block), 5000, true); + } + + @Override + public boolean onActivate(IImperfectRitualStone imperfectRitualStone, EntityPlayer player) { + + if (!imperfectRitualStone.getWorld().isRemote) { + imperfectRitualStone.getWorld().addWeatherEffect(new EntityLightningBolt(imperfectRitualStone.getWorld(), imperfectRitualStone.getPos().getX(), imperfectRitualStone.getPos().getY() + 2, imperfectRitualStone.getPos().getZ())); + imperfectRitualStone.getWorld().setWorldTime((imperfectRitualStone.getWorld().getWorldTime() / 24000) * 24000 + 13800); + return true; + } + + return false; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java b/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java new file mode 100644 index 00000000..33943f17 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java @@ -0,0 +1,41 @@ +package WayofTime.bloodmagic.tile; + +import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry; +import WayofTime.bloodmagic.api.ritual.imperfect.IImperfectRitualStone; +import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; +import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; + +public class TileImperfectRitualStone extends TileEntity implements IImperfectRitualStone { + + public TileImperfectRitualStone() { + + } + + // IImperfectRitualStone + + @Override + public boolean performRitual(World world, BlockPos pos, ImperfectRitual imperfectRitual, EntityPlayer player) { + + if (imperfectRitual != null) { + System.out.println(imperfectRitual.toString()); + NetworkHelper.getSoulNetwork(player.getDisplayNameString(), world).syphonAndDamage(imperfectRitual.getActivationCost()); + return imperfectRitual.onActivate(this, player); + } + + return false; + } + + @Override + public World getWorld() { + return super.getWorld(); + } + + @Override + public BlockPos getPos() { + return super.getPos(); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java index 16be1921..477216e3 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java @@ -5,9 +5,9 @@ import WayofTime.bloodmagic.api.event.RitualEvent; import WayofTime.bloodmagic.api.network.SoulNetwork; import WayofTime.bloodmagic.api.registry.RitualRegistry; import WayofTime.bloodmagic.api.ritual.IMasterRitualStone; -import WayofTime.bloodmagic.api.ritual.LocalRitualStorage; import WayofTime.bloodmagic.api.ritual.Ritual; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import WayofTime.bloodmagic.api.util.helper.RitualHelper; import WayofTime.bloodmagic.item.ItemActivationCrystal; import WayofTime.bloodmagic.util.ChatUtil; import com.google.common.base.Strings; @@ -35,9 +35,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt private Ritual currentRitual; private EnumFacing direction; - public LocalRitualStorage storage; - public NBTTagCompound customTag; - public TileMasterRitualStone() { } @@ -59,23 +56,28 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt } - public void activateRitual(ItemStack activationCrystal, EntityPlayer activator) { + @Override + public boolean activateRitual(ItemStack activationCrystal, EntityPlayer activator) { activationCrystal = NBTHolder.checkNBT(activationCrystal); String crystalOwner = activationCrystal.getTagCompound().getString(NBTHolder.NBT_OWNER); - Ritual ritual = null; + Ritual ritual = RitualRegistry.getRitualForId(""); - if (!Strings.isNullOrEmpty(crystalOwner)) { + if (!Strings.isNullOrEmpty(crystalOwner) && ritual != null) { if (activationCrystal.getItem() instanceof ItemActivationCrystal) { int crystalLevel = ((ItemActivationCrystal) activationCrystal.getItem()).getCrystalLevel(activationCrystal); + if (RitualHelper.canCrystalActivate(ritual, crystalLevel)) { - RitualEvent.RitualActivatedEvent event = new RitualEvent.RitualActivatedEvent(this, crystalOwner, ritual, activator, activationCrystal, crystalLevel); + RitualEvent.RitualActivatedEvent event = new RitualEvent.RitualActivatedEvent(this, crystalOwner, ritual, activator, activationCrystal, crystalLevel); - if (MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Event.Result.DENY) { - ChatUtil.sendNoSpamUnloc(activator, "chat.BloodMagic.ritual.prevent"); - return; + if (MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Event.Result.DENY) { + ChatUtil.sendNoSpamUnloc(activator, "chat.BloodMagic.ritual.prevent"); + return false; + } } } } + + return false; } @Override @@ -87,6 +89,11 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt } } + @Override + public void stopRitual() { + + } + @Override public void setCooldown(int cooldown) { this.cooldown = cooldown; @@ -107,16 +114,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt return direction; } - @Override - public NBTTagCompound getCustomRitualTag() { - return customTag; - } - - @Override - public void setCustomRitualTag(NBTTagCompound tag) { - this.customTag = tag; - } - @Override public boolean areTanksEmpty() { return false; @@ -127,16 +124,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt return activeTime; } - @Override - public LocalRitualStorage getLocalStorage() { - return storage; - } - - @Override - public void setLocalStorage(LocalRitualStorage storage) { - this.storage = storage; - } - @Override public String getOwner() { return owner;