Fixed the ritual system so that it would properly validate the ritual from the list.
Used the activation crystal's owner's LP to activate the ritual. Removed some unnecessary imports.
This commit is contained in:
parent
24058d7350
commit
971d4c4d1e
|
@ -1,12 +1,7 @@
|
||||||
package WayofTime.bloodmagic;
|
package WayofTime.bloodmagic;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import java.io.File;
|
||||||
import WayofTime.bloodmagic.api.util.helper.LogHelper;
|
|
||||||
import WayofTime.bloodmagic.network.BloodMagicPacketHandler;
|
|
||||||
import WayofTime.bloodmagic.proxy.CommonProxy;
|
|
||||||
import WayofTime.bloodmagic.registry.*;
|
|
||||||
import WayofTime.bloodmagic.util.handler.EventHandler;
|
|
||||||
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
@ -16,8 +11,18 @@ import net.minecraftforge.fml.common.SidedProxy;
|
||||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
||||||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||||
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import java.io.File;
|
import WayofTime.bloodmagic.api.util.helper.LogHelper;
|
||||||
|
import WayofTime.bloodmagic.network.BloodMagicPacketHandler;
|
||||||
|
import WayofTime.bloodmagic.proxy.CommonProxy;
|
||||||
|
import WayofTime.bloodmagic.registry.ModBlocks;
|
||||||
|
import WayofTime.bloodmagic.registry.ModCompatibility;
|
||||||
|
import WayofTime.bloodmagic.registry.ModEntities;
|
||||||
|
import WayofTime.bloodmagic.registry.ModItems;
|
||||||
|
import WayofTime.bloodmagic.registry.ModPotions;
|
||||||
|
import WayofTime.bloodmagic.registry.ModRecipes;
|
||||||
|
import WayofTime.bloodmagic.registry.ModRituals;
|
||||||
|
import WayofTime.bloodmagic.util.handler.EventHandler;
|
||||||
|
|
||||||
@Mod(modid = Constants.Mod.MODID, name = Constants.Mod.NAME, version = Constants.Mod.VERSION, dependencies = Constants.Mod.DEPEND, guiFactory = "WayofTime.bloodmagic.client.gui.ConfigGuiFactory")
|
@Mod(modid = Constants.Mod.MODID, name = Constants.Mod.NAME, version = Constants.Mod.VERSION, dependencies = Constants.Mod.DEPEND, guiFactory = "WayofTime.bloodmagic.client.gui.ConfigGuiFactory")
|
||||||
@Getter
|
@Getter
|
||||||
|
|
|
@ -1,24 +1,23 @@
|
||||||
package WayofTime.bloodmagic.api.util.helper;
|
package WayofTime.bloodmagic.api.util.helper;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import java.io.File;
|
||||||
import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry;
|
import java.net.URL;
|
||||||
import WayofTime.bloodmagic.api.registry.RitualRegistry;
|
import java.util.ArrayList;
|
||||||
import WayofTime.bloodmagic.api.ritual.EnumRuneType;
|
import java.util.Map;
|
||||||
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.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
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;
|
||||||
import net.minecraftforge.common.config.Configuration;
|
import net.minecraftforge.common.config.Configuration;
|
||||||
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import java.io.File;
|
import WayofTime.bloodmagic.api.registry.ImperfectRitualRegistry;
|
||||||
import java.net.URL;
|
import WayofTime.bloodmagic.api.registry.RitualRegistry;
|
||||||
import java.util.ArrayList;
|
import WayofTime.bloodmagic.api.ritual.Ritual;
|
||||||
import java.util.Map;
|
import WayofTime.bloodmagic.api.ritual.RitualComponent;
|
||||||
|
import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
|
||||||
|
import WayofTime.bloodmagic.block.BlockRitualStone;
|
||||||
|
|
||||||
public class RitualHelper {
|
public class RitualHelper {
|
||||||
|
|
||||||
|
@ -40,19 +39,47 @@ public class RitualHelper {
|
||||||
return RitualRegistry.getIds().get(previousIndex);
|
return RitualRegistry.getIds().get(previousIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the RitualRegistry to see if the configuration of the ritual stones in the world is valid
|
||||||
|
* for the given EnumFacing.
|
||||||
|
*
|
||||||
|
* @param world
|
||||||
|
* @param pos
|
||||||
|
* @param direction
|
||||||
|
* @return The ID of the valid ritual
|
||||||
|
*/
|
||||||
|
public static String getValidRitual(World world, BlockPos pos, EnumFacing direction) {
|
||||||
|
for(String key : RitualRegistry.getIds()) {
|
||||||
|
boolean test = checkValidRitual(world, pos, key, direction);
|
||||||
|
if(test) {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean checkValidRitual(World world, BlockPos pos, String ritualId, EnumFacing direction) {
|
public static boolean checkValidRitual(World world, BlockPos pos, String ritualId, EnumFacing direction) {
|
||||||
ArrayList<RitualComponent> components = RitualRegistry.getRitualForId(ritualId).getComponents();
|
Ritual ritual = RitualRegistry.getRitualForId(ritualId);
|
||||||
|
if(ritual == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<RitualComponent> components = ritual.getComponents();
|
||||||
|
|
||||||
if (components == null)
|
if (components == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (RitualComponent component : components) {
|
for (RitualComponent component : components) {
|
||||||
IBlockState worldState = world.getBlockState(pos.add(component.getOffset()));
|
BlockPos newPos = pos.add(component.getOffset());
|
||||||
if (worldState.getBlock() instanceof BlockRitualStone) {
|
IBlockState worldState = world.getBlockState(newPos);
|
||||||
EnumRuneType worldType = EnumRuneType.values()[worldState.getBlock().getMetaFromState(worldState)];
|
Block block = worldState.getBlock();
|
||||||
|
if (block instanceof BlockRitualStone) {
|
||||||
if (component.getRuneType() != worldType)
|
if(!((BlockRitualStone)block).isRuneType(world, newPos, component.getRuneType())) {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
package WayofTime.bloodmagic.block;
|
package WayofTime.bloodmagic.block;
|
||||||
|
|
||||||
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.BlockPos;
|
||||||
|
import net.minecraft.util.ChatComponentText;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.world.Explosion;
|
||||||
|
import net.minecraft.world.World;
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.api.BlockStack;
|
import WayofTime.bloodmagic.api.BlockStack;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
|
@ -13,16 +22,6 @@ import WayofTime.bloodmagic.registry.ModBlocks;
|
||||||
import WayofTime.bloodmagic.registry.ModItems;
|
import WayofTime.bloodmagic.registry.ModItems;
|
||||||
import WayofTime.bloodmagic.tile.TileImperfectRitualStone;
|
import WayofTime.bloodmagic.tile.TileImperfectRitualStone;
|
||||||
import WayofTime.bloodmagic.tile.TileMasterRitualStone;
|
import WayofTime.bloodmagic.tile.TileMasterRitualStone;
|
||||||
import net.minecraft.block.material.Material;
|
|
||||||
import net.minecraft.block.state.BlockState;
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraft.util.BlockPos;
|
|
||||||
import net.minecraft.util.ChatComponentText;
|
|
||||||
import net.minecraft.util.EnumFacing;
|
|
||||||
import net.minecraft.world.Explosion;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
|
|
||||||
public class BlockRitualController extends BlockStringContainer {
|
public class BlockRitualController extends BlockStringContainer {
|
||||||
|
|
||||||
|
@ -58,8 +57,11 @@ public class BlockRitualController extends BlockStringContainer {
|
||||||
|
|
||||||
if (getMetaFromState(state) == 0 && tile instanceof TileMasterRitualStone) {
|
if (getMetaFromState(state) == 0 && tile instanceof TileMasterRitualStone) {
|
||||||
if (player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.activationCrystal) {
|
if (player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.activationCrystal) {
|
||||||
if (RitualHelper.checkValidRitual(world, pos, "ritualTest", null))
|
String key = RitualHelper.getValidRitual(world, pos, null);
|
||||||
((TileMasterRitualStone) tile).activateRitual(player.getHeldItem(), player, RitualRegistry.getRitualForId("ritualTest"));
|
//TODO: Give a message stating that this ritual is not a valid ritual.
|
||||||
|
if (!key.isEmpty() && RitualHelper.checkValidRitual(world, pos, key, null)) {
|
||||||
|
((TileMasterRitualStone) tile).activateRitual(player.getHeldItem(), player, RitualRegistry.getRitualForId(key));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (getMetaFromState(state) == 1 && tile instanceof TileImperfectRitualStone) {
|
} else if (getMetaFromState(state) == 1 && tile instanceof TileImperfectRitualStone) {
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,5 @@
|
||||||
package WayofTime.bloodmagic.item.sigil;
|
package WayofTime.bloodmagic.item.sigil;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.altar.IBloodAltar;
|
|
||||||
import WayofTime.bloodmagic.api.iface.IAltarReader;
|
|
||||||
import WayofTime.bloodmagic.api.util.helper.BindableHelper;
|
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
|
||||||
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
|
||||||
import WayofTime.bloodmagic.tile.TileInventory;
|
|
||||||
import WayofTime.bloodmagic.util.ChatUtil;
|
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -15,6 +7,13 @@ import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.ChatComponentText;
|
import net.minecraft.util.ChatComponentText;
|
||||||
import net.minecraft.util.MovingObjectPosition;
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import WayofTime.bloodmagic.api.altar.IBloodAltar;
|
||||||
|
import WayofTime.bloodmagic.api.iface.IAltarReader;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.BindableHelper;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
||||||
|
import WayofTime.bloodmagic.util.ChatUtil;
|
||||||
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
|
|
||||||
public class ItemSigilSeer extends ItemSigilBase implements IAltarReader {
|
public class ItemSigilSeer extends ItemSigilBase implements IAltarReader {
|
||||||
|
|
||||||
|
|
|
@ -82,8 +82,8 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
|
||||||
int crystalLevel = ((ItemActivationCrystal) activationCrystal.getItem()).getCrystalLevel(activationCrystal);
|
int crystalLevel = ((ItemActivationCrystal) activationCrystal.getItem()).getCrystalLevel(activationCrystal);
|
||||||
if (RitualHelper.canCrystalActivate(ritual, crystalLevel)) {
|
if (RitualHelper.canCrystalActivate(ritual, crystalLevel)) {
|
||||||
|
|
||||||
SoulNetwork network = NetworkHelper.getSoulNetwork(activator, getWorld());
|
SoulNetwork network = NetworkHelper.getSoulNetwork(crystalOwner, getWorld());
|
||||||
|
|
||||||
if (network.getCurrentEssence() < ritual.getActivationCost()) {
|
if (network.getCurrentEssence() < ritual.getActivationCost()) {
|
||||||
ChatUtil.sendNoSpamUnloc(activator, "chat.BloodMagic.ritual.weak");
|
ChatUtil.sendNoSpamUnloc(activator, "chat.BloodMagic.ritual.weak");
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in a new issue