From 51c79f15a9375a6347cdf89b4697936be0e09bb6 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Mon, 11 Apr 2016 09:57:57 -0400 Subject: [PATCH] Added chest ranges to the rituals that have chests, allowing the location of the chest to be assigned by the player. --- .../bloodmagic/ritual/RitualCrushing.java | 5 +++++ .../bloodmagic/ritual/RitualFelling.java | 16 ++++++++++++---- .../bloodmagic/ritual/RitualFullStomach.java | 8 +++++++- .../bloodmagic/ritual/RitualPlacer.java | 10 +++++++++- .../bloodmagic/ritual/RitualZephyr.java | 9 ++++++++- .../resources/assets/bloodmagic/lang/en_US.lang | 14 +++++++------- 6 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualCrushing.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualCrushing.java index dd65e5e2..c9647c66 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualCrushing.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualCrushing.java @@ -22,11 +22,16 @@ import java.util.List; public class RitualCrushing extends Ritual { public static final String CRUSHING_RANGE = "crushingRange"; + public static final String CHEST_RANGE = "chest"; public RitualCrushing() { super("ritualCrushing", 0, 5000, "ritual." + Constants.Mod.MODID + ".crushingRitual"); addBlockRange(CRUSHING_RANGE, new AreaDescriptor.Rectangle(new BlockPos(-1, -3, -1), 3)); + addBlockRange(CHEST_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 1, 0), 1)); + + setMaximumVolumeAndDistanceOfRange(CRUSHING_RANGE, 50, 10, 10); + setMaximumVolumeAndDistanceOfRange(CHEST_RANGE, 1, 3, 3); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualFelling.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualFelling.java index f1d4361c..3fde6f4b 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualFelling.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualFelling.java @@ -19,8 +19,8 @@ import java.util.Iterator; public class RitualFelling extends Ritual { - public static final String FELLING_RANGE = "fellingRange"; + public static final String CHEST_RANGE = "chest"; private ArrayList treePartsCache; private Iterator blockPosIterator; @@ -30,8 +30,12 @@ public class RitualFelling extends Ritual public RitualFelling() { - super("ritualFelling", 0, 500, "ritual." + Constants.Mod.MODID + ".fellingRitual"); + super("ritualFelling", 0, 20000, "ritual." + Constants.Mod.MODID + ".fellingRitual"); addBlockRange(FELLING_RANGE, new AreaDescriptor.Rectangle(new BlockPos(-10, -3, -10), new BlockPos(11, 27, 11))); + addBlockRange(CHEST_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 1, 0), 1)); + + setMaximumVolumeAndDistanceOfRange(FELLING_RANGE, 14000, 15, 30); + setMaximumVolumeAndDistanceOfRange(CHEST_RANGE, 1, 3, 3); treePartsCache = new ArrayList(); } @@ -43,6 +47,10 @@ public class RitualFelling extends Ritual SoulNetwork network = NetworkHelper.getSoulNetwork(masterRitualStone.getOwner()); int currentEssence = network.getCurrentEssence(); + BlockPos masterPos = masterRitualStone.getBlockPos(); + AreaDescriptor chestRange = getBlockRange(CHEST_RANGE); + TileEntity tileInventory = world.getTileEntity(chestRange.getContainedPositions(masterPos).get(0)); + if (currentEssence < getRefreshCost()) { network.causeNauseaToPlayer(); @@ -64,11 +72,11 @@ public class RitualFelling extends Ritual blockPosIterator = treePartsCache.iterator(); } - if (blockPosIterator.hasNext() && world.getTileEntity(masterRitualStone.getBlockPos().up()) != null && world.getTileEntity(masterRitualStone.getBlockPos().up()) instanceof IInventory) + if (blockPosIterator.hasNext() && tileInventory != null && tileInventory instanceof IInventory) { network.syphon(getRefreshCost()); currentPos = blockPosIterator.next(); - placeInInventory(world.getBlockState(currentPos), world, currentPos, masterRitualStone.getBlockPos().up()); + placeInInventory(world.getBlockState(currentPos), world, currentPos, chestRange.getContainedPositions(masterPos).get(0)); world.setBlockToAir(currentPos); blockPosIterator.remove(); } diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualFullStomach.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualFullStomach.java index cbfdb759..94c77116 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualFullStomach.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualFullStomach.java @@ -20,11 +20,16 @@ import java.util.List; public class RitualFullStomach extends Ritual { public static final String FILL_RANGE = "fillRange"; + public static final String CHEST_RANGE = "chest"; public RitualFullStomach() { super("ritualFullStomach", 0, 100000, "ritual." + Constants.Mod.MODID + ".fullStomachRitual"); addBlockRange(FILL_RANGE, new AreaDescriptor.Rectangle(new BlockPos(-25, -25, -25), 51)); + addBlockRange(CHEST_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 1, 0), 1)); + + setMaximumVolumeAndDistanceOfRange(FILL_RANGE, 0, 25, 25); + setMaximumVolumeAndDistanceOfRange(CHEST_RANGE, 1, 3, 3); } @Override @@ -39,7 +44,8 @@ public class RitualFullStomach extends Ritual int maxEffects = currentEssence / getRefreshCost(); int totalEffects = 0; - TileEntity tile = world.getTileEntity(pos.up()); + AreaDescriptor chestRange = getBlockRange(CHEST_RANGE); + TileEntity tile = world.getTileEntity(chestRange.getContainedPositions(pos).get(0)); if (!(tile instanceof IInventory)) { return; diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualPlacer.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualPlacer.java index 7e5402e2..9dc7aa95 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualPlacer.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualPlacer.java @@ -19,11 +19,16 @@ import java.util.ArrayList; public class RitualPlacer extends Ritual { public static final String PLACER_RANGE = "placerRange"; + public static final String CHEST_RANGE = "chest"; public RitualPlacer() { super("ritualPlacer", 0, 5000, "ritual." + Constants.Mod.MODID + ".placerRitual"); addBlockRange(PLACER_RANGE, new AreaDescriptor.Rectangle(new BlockPos(-2, 0, -2), 5, 1, 5)); + addBlockRange(CHEST_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 1, 0), 1)); + + setMaximumVolumeAndDistanceOfRange(PLACER_RANGE, 300, 7, 7); + setMaximumVolumeAndDistanceOfRange(CHEST_RANGE, 1, 3, 3); } @Override @@ -31,7 +36,9 @@ public class RitualPlacer extends Ritual { World world = masterRitualStone.getWorldObj(); SoulNetwork network = NetworkHelper.getSoulNetwork(masterRitualStone.getOwner()); - TileEntity tileEntity = world.getTileEntity(masterRitualStone.getBlockPos().up()); + BlockPos masterPos = masterRitualStone.getBlockPos(); + AreaDescriptor chestRange = getBlockRange(CHEST_RANGE); + TileEntity tileEntity = world.getTileEntity(chestRange.getContainedPositions(masterPos).get(0)); int currentEssence = network.getCurrentEssence(); @@ -97,6 +104,7 @@ public class RitualPlacer extends Ritual iInventory.decrStackSize(inv, 1); iInventory.markDirty(); network.syphon(getRefreshCost()); + break; } } } diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualZephyr.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualZephyr.java index 94809b9d..2a031c93 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualZephyr.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualZephyr.java @@ -19,11 +19,16 @@ import java.util.List; public class RitualZephyr extends Ritual { public static final String ZEPHYR_RANGE = "zephyrRange"; + public static final String CHEST_RANGE = "chest"; public RitualZephyr() { super("ritualZephyr", 0, 1000, "ritual." + Constants.Mod.MODID + ".zephyrRitual"); addBlockRange(ZEPHYR_RANGE, new AreaDescriptor.Rectangle(new BlockPos(-5, -5, -5), 11)); + addBlockRange(CHEST_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 1, 0), 1)); + + setMaximumVolumeAndDistanceOfRange(ZEPHYR_RANGE, 0, 10, 10); + setMaximumVolumeAndDistanceOfRange(CHEST_RANGE, 1, 3, 3); } @Override @@ -32,7 +37,9 @@ public class RitualZephyr extends Ritual World world = masterRitualStone.getWorldObj(); SoulNetwork network = NetworkHelper.getSoulNetwork(masterRitualStone.getOwner()); int currentEssence = network.getCurrentEssence(); - TileEntity tileInventory = world.getTileEntity(masterRitualStone.getBlockPos().up()); + BlockPos masterPos = masterRitualStone.getBlockPos(); + AreaDescriptor chestRange = getBlockRange(CHEST_RANGE); + TileEntity tileInventory = world.getTileEntity(chestRange.getContainedPositions(masterPos).get(0)); if (!masterRitualStone.getWorldObj().isRemote && tileInventory != null && tileInventory instanceof IInventory) { diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index ef953f39..1fc12133 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -421,13 +421,13 @@ ritual.BloodMagic.fullStomachRitual.info=Takes food from the linked chest and fi ritual.BloodMagic.interdictionRitual.info=Pushes all mobs within its area away from the master ritual stone. ritual.BloodMagic.containmentRitual.info=Pulls all mobs within its area towards the master ritual stone. ritual.BloodMagic.speedRitual.info=Launches players within its range in the direction of the ritual. -ritual.BloodMagic.suppressionRitual.info= -ritual.BloodMagic.expulsionRitual.info= -ritual.BloodMagic.zephyrRitual.info= -ritual.BloodMagic.upgradeRemoveRitual.info= -ritual.BloodMagic.armourEvolveRitual.info= -ritual.BloodMagic.animalGrowthRitual.info= -ritual.BloodMagic.forsakenSoulRitual.info= +ritual.BloodMagic.suppressionRitual.info=Suppresses fluids within its range - deactivating the ritual returns the fluids back to the world. +ritual.BloodMagic.expulsionRitual.info=Expels players from its range that are neither the owner nor have a bound blood orb in the chest on top of the master ritual stone. +ritual.BloodMagic.zephyrRitual.info=Picks up items within its range and places them into the linked chest. +ritual.BloodMagic.upgradeRemoveRitual.info=Undocumented. +ritual.BloodMagic.armourEvolveRitual.info=Undocumented. +ritual.BloodMagic.animalGrowthRitual.info=Increases the maturity rate of baby animals within its range. +ritual.BloodMagic.forsakenSoulRitual.info=Damages mobs within its damage range and when the mob dies a demon crystal within its crystal range will be grown. ritual.BloodMagic.wellOfSufferingRitual.altar.info=(Altar) This range defines the area that the ritual searches for the blood altar. Changing this will either expand or limit the range to a certain region. ritual.BloodMagic.wellOfSufferingRitual.damage.info=(Damage) This defines where the ritual will damage a mob. All mobs inside of this range (except for players) will receive damage over time.