Added the Ritual for Water and did some rudimentary tests. Issue: MRS does not load properly on world load.

This commit is contained in:
WayofTime 2015-12-29 13:41:03 -05:00
parent 0e1173ef5d
commit 16a6333c6f
4 changed files with 73 additions and 3 deletions

View file

@ -23,11 +23,15 @@ public abstract class Ritual {
this(name, crystalLevel, activationCost, null); 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 performRitual(IMasterRitualStone masterRitualStone);
public abstract void stopRitual(IMasterRitualStone masterRitualStone, Ritual.BreakType breakType); public void stopRitual(IMasterRitualStone masterRitualStone, BreakType breakType) {
}
public abstract int getRefreshCost(); public abstract int getRefreshCost();

View file

@ -5,6 +5,7 @@ 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 WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual;
import WayofTime.bloodmagic.ritual.RitualTest; import WayofTime.bloodmagic.ritual.RitualTest;
import WayofTime.bloodmagic.ritual.RitualWater;
import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualNight; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualNight;
import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualRain; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualRain;
import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualResistance; import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualResistance;
@ -13,6 +14,7 @@ import WayofTime.bloodmagic.ritual.imperfect.ImperfectRitualZombie;
public class ModRituals { public class ModRituals {
public static Ritual testRitual; public static Ritual testRitual;
public static Ritual waterRitual;
public static ImperfectRitual imperfectNight; public static ImperfectRitual imperfectNight;
public static ImperfectRitual imperfectRain; public static ImperfectRitual imperfectRain;
@ -21,7 +23,10 @@ public class ModRituals {
public static void initRituals() { public static void initRituals() {
testRitual = new RitualTest(); testRitual = new RitualTest();
waterRitual = new RitualWater();
RitualRegistry.registerRitual(testRitual, testRitual.getName()); RitualRegistry.registerRitual(testRitual, testRitual.getName());
RitualRegistry.registerRitual(waterRitual, waterRitual.getName());
} }
public static void initImperfectRituals() { public static void initImperfectRituals() {

View file

@ -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<RitualComponent> getComponents() {
ArrayList<RitualComponent> components = new ArrayList<RitualComponent>();
this.addCornerRunes(components, 1, 0, EnumRuneType.WATER);
return components;
}
}

View file

@ -43,6 +43,15 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
@Override @Override
public void update() { 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 (getCurrentRitual() != null && isActive()) {
if (activeTime % REFRESH_TIME == 0) if (activeTime % REFRESH_TIME == 0)
performRitual(getWorld(), getPos()); performRitual(getWorld(), getPos());
@ -57,7 +66,7 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt
currentRitual = RitualRegistry.getRitualForId(tag.getString(Constants.NBT.CURRENT_RITUAL)); currentRitual = RitualRegistry.getRitualForId(tag.getString(Constants.NBT.CURRENT_RITUAL));
active = tag.getBoolean(Constants.NBT.IS_RUNNING); active = tag.getBoolean(Constants.NBT.IS_RUNNING);
activeTime = tag.getInteger(Constants.NBT.RUNTIME); activeTime = tag.getInteger(Constants.NBT.RUNTIME);
direction = EnumFacing.VALUES[tag.getInteger(Constants.NBT.DIRECTION)]; direction = EnumFacing.VALUES[tag.getInteger(Constants.NBT.DIRECTION)];
} }
@Override @Override