Imperfect rituals work mostly now

Just need to figure out an issue with the config
This commit is contained in:
Nick 2015-11-02 17:45:11 -08:00
parent 3a0dcae59a
commit 92bf7cc35b
15 changed files with 226 additions and 64 deletions

View file

@ -3,10 +3,7 @@ package WayofTime.bloodmagic;
import WayofTime.bloodmagic.api.util.helper.LogHelper; import WayofTime.bloodmagic.api.util.helper.LogHelper;
import WayofTime.bloodmagic.network.AlchemicalWizardryPacketHandler; import WayofTime.bloodmagic.network.AlchemicalWizardryPacketHandler;
import WayofTime.bloodmagic.proxy.CommonProxy; import WayofTime.bloodmagic.proxy.CommonProxy;
import WayofTime.bloodmagic.registry.ModBlocks; import WayofTime.bloodmagic.registry.*;
import WayofTime.bloodmagic.registry.ModEntities;
import WayofTime.bloodmagic.registry.ModItems;
import WayofTime.bloodmagic.registry.ModPotions;
import WayofTime.bloodmagic.util.handler.EventHandler; import WayofTime.bloodmagic.util.handler.EventHandler;
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper; import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
import lombok.Getter; import lombok.Getter;
@ -71,6 +68,10 @@ public class BloodMagic {
public void init(FMLInitializationEvent event) { public void init(FMLInitializationEvent event) {
AlchemicalWizardryPacketHandler.init(); AlchemicalWizardryPacketHandler.init();
ModRituals.initRituals();
ModRituals.initImperfectRituals();
ConfigHandler.checkRituals();
proxy.init(); proxy.init();
} }

View file

@ -2,8 +2,12 @@ package WayofTime.bloodmagic;
import WayofTime.bloodmagic.api.BloodMagicAPI; import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.BlockStack; 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.registry.ModPotions;
import WayofTime.bloodmagic.util.Utils; import WayofTime.bloodmagic.util.Utils;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
@ -16,7 +20,9 @@ import java.util.List;
public class ConfigHandler { public class ConfigHandler {
public static Configuration config; @Getter
@Setter
private static Configuration config;
// Teleposer // Teleposer
public static String[] teleposerBlacklisting; 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"); 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"); vanillaPotionWeaknessEnabled = config.getBoolean("vanillaPotionWeaknessEnabled", category + ".toggle", true, "Enables the Weakness potion in Alchemy");
category = "Rituals";
config.addCustomCategoryComment(category, "Ritual toggling");
category = "General"; category = "General";
config.addCustomCategoryComment(category, "General settings"); config.addCustomCategoryComment(category, "General settings");
BloodMagicAPI.setLoggingEnabled(config.getBoolean("enableLogging", category, true, "Allows logging information to the console. Fatal errors will bypass this")); 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)); teleposerBlacklist.add(new BlockStack(block, meta));
} }
} }
public static void checkRituals() {
RitualHelper.checkImperfectRituals(config, "WayofTime.bloodmagic.ritual.imperfect", "Rituals.imperfect");
}
} }

View file

@ -1,15 +1,17 @@
package WayofTime.bloodmagic.api.registry; package WayofTime.bloodmagic.api.registry;
import WayofTime.bloodmagic.api.BlockStack;
import WayofTime.bloodmagic.api.BloodMagicAPI; import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import com.google.common.collect.BiMap; import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap; import com.google.common.collect.HashBiMap;
import net.minecraft.block.Block;
import java.util.ArrayList; import java.util.ArrayList;
public class ImperfectRitualRegistry { public class ImperfectRitualRegistry {
public static final BiMap<ImperfectRitual, Boolean> enabledRituals = HashBiMap.create(); private static final BiMap<ImperfectRitual, Boolean> enabledRituals = HashBiMap.create();
private static final BiMap<String, ImperfectRitual> registry = HashBiMap.create(); private static final BiMap<String, ImperfectRitual> 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) { public static ImperfectRitual getRitualForId(String id) {
return registry.get(id); return registry.get(id);
} }
@ -44,13 +57,22 @@ public class ImperfectRitualRegistry {
} }
public static boolean ritualEnabled(ImperfectRitual imperfectRitual) { 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<String, ImperfectRitual> getRegistry() { public static BiMap<String, ImperfectRitual> getRegistry() {
return HashBiMap.create(registry); return HashBiMap.create(registry);
} }
public static BiMap<ImperfectRitual, Boolean> getEnabledMap() {
return HashBiMap.create(enabledRituals);
}
public static ArrayList<String> getIds() { public static ArrayList<String> getIds() {
return new ArrayList<String>(registry.keySet()); return new ArrayList<String>(registry.keySet());
} }

View file

@ -2,13 +2,14 @@ package WayofTime.bloodmagic.api.registry;
import WayofTime.bloodmagic.api.BloodMagicAPI; import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.ritual.Ritual; import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import com.google.common.collect.BiMap; import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap; import com.google.common.collect.HashBiMap;
import java.util.ArrayList; import java.util.ArrayList;
public class RitualRegistry { public class RitualRegistry {
public static final BiMap<Ritual, Boolean> enabledRituals = HashBiMap.create(); private static final BiMap<Ritual, Boolean> enabledRituals = HashBiMap.create();
private static final BiMap<String, Ritual> registry = HashBiMap.create(); private static final BiMap<String, Ritual> registry = HashBiMap.create();
/** /**
@ -43,13 +44,22 @@ public class RitualRegistry {
} }
public static boolean ritualEnabled(Ritual ritual) { 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<String, Ritual> getRegistry() { public static BiMap<String, Ritual> getRegistry() {
return HashBiMap.create(registry); return HashBiMap.create(registry);
} }
public static BiMap<Ritual, Boolean> getEnabledMap() {
return HashBiMap.create(enabledRituals);
}
public static ArrayList<String> getIds() { public static ArrayList<String> getIds() {
return new ArrayList<String>(registry.keySet()); return new ArrayList<String>(registry.keySet());
} }

View file

@ -1,15 +1,21 @@
package WayofTime.bloodmagic.api.ritual; package WayofTime.bloodmagic.api.ritual;
import WayofTime.bloodmagic.api.ritual.imperfect.IImperfectRitualStone; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.world.World; 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 performRitual(World world, BlockPos pos, Ritual ritual);
void stopRitual();
void setCooldown(int cooldown); void setCooldown(int cooldown);
int getCooldown(); int getCooldown();
@ -18,15 +24,11 @@ public interface IMasterRitualStone extends IImperfectRitualStone {
EnumFacing getDirection(); EnumFacing getDirection();
NBTTagCompound getCustomRitualTag();
void setCustomRitualTag(NBTTagCompound tag);
boolean areTanksEmpty(); boolean areTanksEmpty();
int getRunningTime(); int getRunningTime();
LocalRitualStorage getLocalStorage(); World getWorld();
void setLocalStorage(LocalRitualStorage storage); BlockPos getPos();
} }

View file

@ -32,10 +32,6 @@ public abstract class Ritual {
public abstract ArrayList<RitualComponent> getComponents(); public abstract ArrayList<RitualComponent> getComponents();
public LocalRitualStorage getNewLocalStorage() {
return new LocalRitualStorage();
}
public void addOffsetRunes(ArrayList<RitualComponent> components, int offset1, int offset2, int y, EnumRuneType rune) { public void addOffsetRunes(ArrayList<RitualComponent> 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(offset1, y, offset2), rune));
components.add(new RitualComponent(new BlockPos(offset2, y, offset1), rune)); components.add(new RitualComponent(new BlockPos(offset2, y, offset1), rune));

View file

@ -1,11 +1,12 @@
package WayofTime.bloodmagic.api.ritual.imperfect; package WayofTime.bloodmagic.api.ritual.imperfect;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
public interface IImperfectRitualStone { public interface IImperfectRitualStone {
String getOwner(); boolean performRitual(World world, BlockPos pos, ImperfectRitual imperfectRitual, EntityPlayer player);
World getWorld(); World getWorld();

View file

@ -1,19 +1,27 @@
package WayofTime.bloodmagic.api.ritual.imperfect; package WayofTime.bloodmagic.api.ritual.imperfect;
import WayofTime.bloodmagic.api.BlockStack; import WayofTime.bloodmagic.api.BlockStack;
import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@RequiredArgsConstructor @RequiredArgsConstructor
@Getter
public abstract class ImperfectRitual { public abstract class ImperfectRitual {
private final String name;
private final BlockStack requiredBlock; private final BlockStack requiredBlock;
private final int activationCost; private final int activationCost;
private final boolean lightshow; private final boolean lightshow;
public ImperfectRitual(BlockStack requiredBlock, int activationCost) { public ImperfectRitual(String name, BlockStack requiredBlock, int activationCost) {
this(requiredBlock, activationCost, false); this(name, requiredBlock, activationCost, false);
} }
public abstract boolean onActivate(IImperfectRitualStone imperfectRitualStone, EntityPlayer player); public abstract boolean onActivate(IImperfectRitualStone imperfectRitualStone, EntityPlayer player);
@Override
public String toString() {
return getName() + ":" + getRequiredBlock().toString() + "@" + getActivationCost();
}
} }

View file

@ -1,7 +1,10 @@
package WayofTime.bloodmagic.api.util.helper; package WayofTime.bloodmagic.api.util.helper;
import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry;
import WayofTime.bloodmagic.api.registry.RitualRegistry; import WayofTime.bloodmagic.api.registry.RitualRegistry;
import WayofTime.bloodmagic.api.ritual.Ritual; 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 net.minecraftforge.common.config.Configuration;
import sun.misc.Launcher; import sun.misc.Launcher;
@ -28,6 +31,14 @@ public class RitualHelper {
return RitualRegistry.getIds().get(previousIndex); 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. * Adds your Ritual to the {@link RitualRegistry#enabledRituals} Map.
* This is used to determine whether your effect is enabled or not. * 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 * The config option will be created as {@code B:ClassName=true} with a comment of
* {@code Enables the ClassName ritual}. * {@code Enables the ClassName ritual}.
* *
* Use {@link #}
*
* Should be safe to modify at any point. * Should be safe to modify at any point.
* *
* @param config - Your mod's Forge {@link Configuration} object. * @param config - Your mod's Forge {@link Configuration} object.
* @param packageName - The package your Rituals are located in. * @param packageName - The package your Rituals are located in.
* @param category - The config category to write to. * @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; String name = packageName;
if (!name.startsWith("/")) if (!name.startsWith("/"))
name = "/" + name; name = "/" + name;
@ -60,8 +74,9 @@ public class RitualHelper {
try { try {
Object o = Class.forName(packageName + "." + className).newInstance(); Object o = Class.forName(packageName + "." + className).newInstance();
if (o instanceof Ritual) if (ritualClass.isInstance(o))
RitualRegistry.enabledRituals.put((Ritual) o, config.get(category, className, true).getBoolean()); enabledMap.put(ritualClass.cast(o),
config.get(category, className, true).getBoolean());
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
e.printStackTrace(); e.printStackTrace();

View file

@ -1,6 +1,9 @@
package WayofTime.bloodmagic.block; package WayofTime.bloodmagic.block;
import WayofTime.bloodmagic.BloodMagic; 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 WayofTime.bloodmagic.tile.TileMasterRitualStone;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
@ -13,6 +16,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@ -43,6 +47,21 @@ public class BlockRitualController extends BlockContainer {
list.add(new ItemStack(this, 1, i)); 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 @Override
public int getRenderType() { public int getRenderType() {
return 3; return 3;
@ -75,6 +94,6 @@ public class BlockRitualController extends BlockContainer {
@Override @Override
public TileEntity createNewTileEntity(World world, int meta) { public TileEntity createNewTileEntity(World world, int meta) {
return meta == 0 ? new TileMasterRitualStone() : null; return meta == 0 ? new TileMasterRitualStone() : new TileImperfectRitualStone();
} }
} }

View file

@ -21,10 +21,11 @@ public class ConfigGui extends GuiConfig {
List<IConfigElement> list = new ArrayList<IConfigElement>(); List<IConfigElement> list = new ArrayList<IConfigElement>();
// adds sections declared in ConfigHandler. toLowerCase() is used because the configuration class automatically does this, so must we. // 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.getConfig().getCategory("Potions".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.config.getCategory("Teleposer Blacklist".toLowerCase()))); list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Teleposer Blacklist".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.config.getCategory("Item/Block Blacklisting".toLowerCase()))); list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Item/Block Blacklisting".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.config.getCategory("General".toLowerCase()))); list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("General".toLowerCase())));
list.add(new ConfigElement(ConfigHandler.getConfig().getCategory("Rituals".toLowerCase())));
return list; return list;
} }

View file

@ -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());
}
}

View file

@ -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;
}
}

View file

@ -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();
}
}

View file

@ -5,9 +5,9 @@ import WayofTime.bloodmagic.api.event.RitualEvent;
import WayofTime.bloodmagic.api.network.SoulNetwork; import WayofTime.bloodmagic.api.network.SoulNetwork;
import WayofTime.bloodmagic.api.registry.RitualRegistry; import WayofTime.bloodmagic.api.registry.RitualRegistry;
import WayofTime.bloodmagic.api.ritual.IMasterRitualStone; import WayofTime.bloodmagic.api.ritual.IMasterRitualStone;
import WayofTime.bloodmagic.api.ritual.LocalRitualStorage;
import WayofTime.bloodmagic.api.ritual.Ritual; import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import WayofTime.bloodmagic.api.util.helper.RitualHelper;
import WayofTime.bloodmagic.item.ItemActivationCrystal; import WayofTime.bloodmagic.item.ItemActivationCrystal;
import WayofTime.bloodmagic.util.ChatUtil; import WayofTime.bloodmagic.util.ChatUtil;
import com.google.common.base.Strings; import com.google.common.base.Strings;
@ -35,9 +35,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
private Ritual currentRitual; private Ritual currentRitual;
private EnumFacing direction; private EnumFacing direction;
public LocalRitualStorage storage;
public NBTTagCompound customTag;
public TileMasterRitualStone() { 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); activationCrystal = NBTHolder.checkNBT(activationCrystal);
String crystalOwner = activationCrystal.getTagCompound().getString(NBTHolder.NBT_OWNER); 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) { if (activationCrystal.getItem() instanceof ItemActivationCrystal) {
int crystalLevel = ((ItemActivationCrystal) activationCrystal.getItem()).getCrystalLevel(activationCrystal); 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) { if (MinecraftForge.EVENT_BUS.post(event) || event.getResult() == Event.Result.DENY) {
ChatUtil.sendNoSpamUnloc(activator, "chat.BloodMagic.ritual.prevent"); ChatUtil.sendNoSpamUnloc(activator, "chat.BloodMagic.ritual.prevent");
return; return false;
}
} }
} }
} }
return false;
} }
@Override @Override
@ -87,6 +89,11 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
} }
} }
@Override
public void stopRitual() {
}
@Override @Override
public void setCooldown(int cooldown) { public void setCooldown(int cooldown) {
this.cooldown = cooldown; this.cooldown = cooldown;
@ -107,16 +114,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
return direction; return direction;
} }
@Override
public NBTTagCompound getCustomRitualTag() {
return customTag;
}
@Override
public void setCustomRitualTag(NBTTagCompound tag) {
this.customTag = tag;
}
@Override @Override
public boolean areTanksEmpty() { public boolean areTanksEmpty() {
return false; return false;
@ -127,16 +124,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
return activeTime; return activeTime;
} }
@Override
public LocalRitualStorage getLocalStorage() {
return storage;
}
@Override
public void setLocalStorage(LocalRitualStorage storage) {
this.storage = storage;
}
@Override @Override
public String getOwner() { public String getOwner() {
return owner; return owner;