From 16a6333c6fbc86b7a02477d72ee2e16f1a6b86dc Mon Sep 17 00:00:00 2001 From: WayofTime Date: Tue, 29 Dec 2015 13:41:03 -0500 Subject: [PATCH] Added the Ritual for Water and did some rudimentary tests. Issue: MRS does not load properly on world load. --- .../bloodmagic/api/ritual/Ritual.java | 8 ++- .../bloodmagic/registry/ModRituals.java | 5 ++ .../bloodmagic/ritual/RitualWater.java | 52 +++++++++++++++++++ .../tile/TileMasterRitualStone.java | 11 +++- 4 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/ritual/RitualWater.java diff --git a/src/main/java/WayofTime/bloodmagic/api/ritual/Ritual.java b/src/main/java/WayofTime/bloodmagic/api/ritual/Ritual.java index 4980a66a..1b2cb6de 100644 --- a/src/main/java/WayofTime/bloodmagic/api/ritual/Ritual.java +++ b/src/main/java/WayofTime/bloodmagic/api/ritual/Ritual.java @@ -23,11 +23,15 @@ public abstract class Ritual { this(name, crystalLevel, activationCost, null); } - public abstract boolean activateRitual(IMasterRitualStone masterRitualStone, EntityPlayer player); + public boolean activateRitual(IMasterRitualStone masterRitualStone, EntityPlayer player) { + return true; + } public abstract void performRitual(IMasterRitualStone masterRitualStone); - public abstract void stopRitual(IMasterRitualStone masterRitualStone, Ritual.BreakType breakType); + public void stopRitual(IMasterRitualStone masterRitualStone, BreakType breakType) { + + } public abstract int getRefreshCost(); diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java b/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java index 12bae262..1f723212 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.registry.RitualRegistry; import WayofTime.bloodmagic.api.ritual.Ritual; import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; import WayofTime.bloodmagic.ritual.RitualTest; +import WayofTime.bloodmagic.ritual.RitualWater; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualNight; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualRain; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualResistance; @@ -13,6 +14,7 @@ import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualZombie; public class ModRituals { public static Ritual testRitual; + public static Ritual waterRitual; public static ImperfectRitual imperfectNight; public static ImperfectRitual imperfectRain; @@ -21,7 +23,10 @@ public class ModRituals { public static void initRituals() { testRitual = new RitualTest(); + waterRitual = new RitualWater(); + RitualRegistry.registerRitual(testRitual, testRitual.getName()); + RitualRegistry.registerRitual(waterRitual, waterRitual.getName()); } public static void initImperfectRituals() { diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualWater.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualWater.java new file mode 100644 index 00000000..05948507 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualWater.java @@ -0,0 +1,52 @@ +package WayofTime.bloodmagic.ritual; + +import java.util.ArrayList; + +import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.network.SoulNetwork; +import WayofTime.bloodmagic.api.ritual.EnumRuneType; +import WayofTime.bloodmagic.api.ritual.IMasterRitualStone; +import WayofTime.bloodmagic.api.ritual.Ritual; +import WayofTime.bloodmagic.api.ritual.RitualComponent; +import WayofTime.bloodmagic.api.util.helper.NetworkHelper; + +public class RitualWater extends Ritual{ + + public RitualWater() { + super("ritualWater", 0, 1000); + } + + @Override + public void performRitual(IMasterRitualStone masterRitualStone) { + System.out.println("Performing Effect"); + World world = masterRitualStone.getWorld(); + SoulNetwork network = NetworkHelper.getSoulNetwork(masterRitualStone.getOwner(), world); + int currentEssence = network.getCurrentEssence(); + + if(currentEssence < getRefreshCost()) { + return; + } + + BlockPos pos = masterRitualStone.getPos().up(); + if(world.isAirBlock(pos)) { + world.setBlockState(pos, Blocks.water.getDefaultState()); + network.syphon(getRefreshCost()); + } + } + + @Override + public int getRefreshCost() { + return 50; + } + + @Override + public ArrayList getComponents() { + ArrayList components = new ArrayList(); + + this.addCornerRunes(components, 1, 0, EnumRuneType.WATER); + + return components; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java index a6a14f1d..f2e04f97 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java @@ -43,6 +43,15 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt @Override public void update() { + if(!worldObj.isRemote && worldObj.getWorldTime() % REFRESH_TIME == 0) { + System.out.println("Owner: " + owner); + if(isActive()) { + System.out.println("Is active"); + } + + System.out.println("Active time: " + activeTime); + } + if (getCurrentRitual() != null && isActive()) { if (activeTime % REFRESH_TIME == 0) performRitual(getWorld(), getPos()); @@ -57,7 +66,7 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt currentRitual = RitualRegistry.getRitualForId(tag.getString(Constants.NBT.CURRENT_RITUAL)); active = tag.getBoolean(Constants.NBT.IS_RUNNING); activeTime = tag.getInteger(Constants.NBT.RUNTIME); - direction = EnumFacing.VALUES[tag.getInteger(Constants.NBT.DIRECTION)]; + direction = EnumFacing.VALUES[tag.getInteger(Constants.NBT.DIRECTION)]; } @Override