From 929d7e9abb0f984d1b289138ec4bfb819df1c25f Mon Sep 17 00:00:00 2001 From: Alex_hawks Date: Fri, 21 Nov 2014 10:38:50 +0800 Subject: [PATCH] Change Rituals to allow for TileEntity Runes, and Hybrid Runes. These will probably not be a feature in Blood Magic itself though --- .../api/rituals/IRitualStone.java | 2 +- .../api/rituals/ITileRitualStone.java | 6 +++ .../api/rituals/Rituals.java | 38 +++++++------------ .../common/block/RitualStone.java | 4 +- 4 files changed, 23 insertions(+), 27 deletions(-) create mode 100644 src/main/java/WayofTime/alchemicalWizardry/api/rituals/ITileRitualStone.java diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/rituals/IRitualStone.java b/src/main/java/WayofTime/alchemicalWizardry/api/rituals/IRitualStone.java index efe32e08..1bd7b328 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/rituals/IRitualStone.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/rituals/IRitualStone.java @@ -4,5 +4,5 @@ import net.minecraft.world.World; public interface IRitualStone { - public int getRuneType(World world, int x, int y, int z, int meta); + public boolean isRuneType(World world, int x, int y, int z, int meta, int runeType); } diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/rituals/ITileRitualStone.java b/src/main/java/WayofTime/alchemicalWizardry/api/rituals/ITileRitualStone.java new file mode 100644 index 00000000..72045152 --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/api/rituals/ITileRitualStone.java @@ -0,0 +1,6 @@ +package WayofTime.alchemicalWizardry.api.rituals; + +public interface ITileRitualStone +{ + public boolean isRuneType(int runeType); +} diff --git a/src/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java b/src/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java index b3bd97fc..4eb76f62 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java +++ b/src/main/java/WayofTime/alchemicalWizardry/api/rituals/Rituals.java @@ -7,6 +7,7 @@ import java.util.Map; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import WayofTime.alchemicalWizardry.api.event.RitualRunEvent; @@ -149,6 +150,7 @@ public class Rituals } Block test = null; + TileEntity te = null; switch (direction) { @@ -156,13 +158,10 @@ public class Rituals for (RitualComponent rc : ritual) { test = world.getBlock(x + rc.getX(), y + rc.getY(), z + rc.getZ()); + te = world.getTileEntity(x + rc.getX(), y + rc.getY(), z + rc.getZ()); - if (!(test instanceof IRitualStone)) - { - return false; - } - - if (((IRitualStone)test).getRuneType(world, x, y, z, world.getBlockMetadata(x + rc.getX(), y + rc.getY(), z + rc.getZ())) != rc.getStoneType()) + if (!(test instanceof IRitualStone && ((IRitualStone)test).isRuneType(world, x, y, z, world.getBlockMetadata(x + rc.getX(), y + rc.getY(), z + rc.getZ()), rc.getStoneType())) + && !(test instanceof ITileRitualStone && ((ITileRitualStone)te).isRuneType(rc.getStoneType()))) { return false; } @@ -174,13 +173,10 @@ public class Rituals for (RitualComponent rc : ritual) { test = world.getBlock(x - rc.getZ(), y + rc.getY(), z + rc.getX()); + te = world.getTileEntity(x - rc.getZ(), y + rc.getY(), z + rc.getX()); - if (!(test instanceof IRitualStone)) - { - return false; - } - - if (((IRitualStone)test).getRuneType(world, x, y, z, world.getBlockMetadata(x - rc.getZ(), y + rc.getY(), z + rc.getX())) != rc.getStoneType()) + if (!(test instanceof IRitualStone && ((IRitualStone)test).isRuneType(world, x, y, z, world.getBlockMetadata(x - rc.getZ(), y + rc.getY(), z + rc.getX()), rc.getStoneType())) + && !(test instanceof ITileRitualStone && ((ITileRitualStone)te).isRuneType(rc.getStoneType()))) { return false; } @@ -192,13 +188,10 @@ public class Rituals for (RitualComponent rc : ritual) { test = world.getBlock(x - rc.getX(), y + rc.getY(), z - rc.getZ()); + te = world.getTileEntity(x - rc.getX(), y + rc.getY(), z - rc.getZ()); - if (!(test instanceof IRitualStone)) - { - return false; - } - - if (((IRitualStone)test).getRuneType(world, x, y, z, world.getBlockMetadata(x - rc.getX(), y + rc.getY(), z - rc.getZ())) != rc.getStoneType()) + if (!(test instanceof IRitualStone && ((IRitualStone)test).isRuneType(world, x, y, z, world.getBlockMetadata(x - rc.getX(), y + rc.getY(), z - rc.getZ()), rc.getStoneType())) + && !(test instanceof ITileRitualStone && ((ITileRitualStone)te).isRuneType(rc.getStoneType()))) { return false; } @@ -210,13 +203,10 @@ public class Rituals for (RitualComponent rc : ritual) { test = world.getBlock(x + rc.getZ(), y + rc.getY(), z - rc.getX()); + te = world.getTileEntity(x + rc.getZ(), y + rc.getY(), z - rc.getX()); - if (!(test instanceof IRitualStone)) - { - return false; - } - - if (((IRitualStone)test).getRuneType(world, x, y, z, world.getBlockMetadata(x + rc.getZ(), y + rc.getY(), z - rc.getX())) != rc.getStoneType()) + if (!(test instanceof IRitualStone && ((IRitualStone)test).isRuneType(world, x, y, z, world.getBlockMetadata(x + rc.getZ(), y + rc.getY(), z - rc.getX()), rc.getStoneType())) + && !(test instanceof ITileRitualStone && ((ITileRitualStone)te).isRuneType(rc.getStoneType()))) { return false; } diff --git a/src/main/java/WayofTime/alchemicalWizardry/common/block/RitualStone.java b/src/main/java/WayofTime/alchemicalWizardry/common/block/RitualStone.java index b1626aa9..ed0ca323 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/common/block/RitualStone.java +++ b/src/main/java/WayofTime/alchemicalWizardry/common/block/RitualStone.java @@ -120,8 +120,8 @@ public class RitualStone extends Block implements IRitualStone } @Override - public int getRuneType(World world, int x, int y, int z, int meta) + public boolean isRuneType(World world, int x, int y, int z, int meta, int runeType) { - return meta; + return meta == runeType; } }