diff --git a/changelog.txt b/changelog.txt
index af5d913a..193bfe7d 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -23,6 +23,7 @@ Version 2.1.0-66
- Fixed the displayed Lesser Tartaric Gem recipe in the Guide (#947)
- Fixed Dagger of Sacrifice one-shotting bosses. It now just doesn't work (#932)
- Fixed controls re-binding after each startup (#922)
+- Added an alchemy array, the Array of the Fast Miner
------------------------------------------------------
Version 2.1.0-65
diff --git a/src/main/java/WayofTime/bloodmagic/alchemyArray/AlchemyArrayEffectSigil.java b/src/main/java/WayofTime/bloodmagic/alchemyArray/AlchemyArrayEffectSigil.java
new file mode 100644
index 00000000..20d22c40
--- /dev/null
+++ b/src/main/java/WayofTime/bloodmagic/alchemyArray/AlchemyArrayEffectSigil.java
@@ -0,0 +1,47 @@
+package WayofTime.bloodmagic.alchemyArray;
+
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyArrayEffect;
+import WayofTime.bloodmagic.api.iface.ISigil;
+
+public class AlchemyArrayEffectSigil extends AlchemyArrayEffect
+{
+ private final ISigil sigil;
+
+ public AlchemyArrayEffectSigil(String key, ISigil sigil)
+ {
+ super(key);
+ this.sigil = sigil;
+ }
+
+ @Override
+ public boolean update(TileEntity tile, int ticksActive)
+ {
+ //TODO: Need particles.
+ if (sigil.hasArrayEffect())
+ {
+ sigil.performArrayEffect(tile.getWorld(), tile.getPos());
+ }
+
+ return false;
+ }
+
+ @Override
+ public void writeToNBT(NBTTagCompound tag)
+ {
+
+ }
+
+ @Override
+ public void readFromNBT(NBTTagCompound tag)
+ {
+
+ }
+
+ @Override
+ public AlchemyArrayEffect getNewCopy()
+ {
+ return new AlchemyArrayEffectSigil(key, sigil);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/WayofTime/bloodmagic/api/iface/ISigil.java b/src/main/java/WayofTime/bloodmagic/api/iface/ISigil.java
index 3673655d..ef3ad2a5 100644
--- a/src/main/java/WayofTime/bloodmagic/api/iface/ISigil.java
+++ b/src/main/java/WayofTime/bloodmagic/api/iface/ISigil.java
@@ -1,9 +1,15 @@
package WayofTime.bloodmagic.api.iface;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+
/**
* Used for all {@link WayofTime.bloodmagic.api.impl.ItemSigil} EXCEPT
* Sigils of Holdings.
*/
public interface ISigil
{
+ boolean performArrayEffect(World world, BlockPos pos);
+
+ boolean hasArrayEffect();
}
diff --git a/src/main/java/WayofTime/bloodmagic/api/impl/ItemSigil.java b/src/main/java/WayofTime/bloodmagic/api/impl/ItemSigil.java
index 99a57556..53bb0872 100644
--- a/src/main/java/WayofTime/bloodmagic/api/impl/ItemSigil.java
+++ b/src/main/java/WayofTime/bloodmagic/api/impl/ItemSigil.java
@@ -5,6 +5,8 @@ import WayofTime.bloodmagic.api.iface.ISigil;
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
import lombok.Getter;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
/**
* Base class for all (static) sigils.
@@ -35,4 +37,16 @@ public class ItemSigil extends ItemBindable implements ISigil
stack.getTagCompound().setBoolean(Constants.NBT.UNUSABLE, unusable);
return stack;
}
+
+ @Override
+ public boolean performArrayEffect(World world, BlockPos pos)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean hasArrayEffect()
+ {
+ return false;
+ }
}
diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFastMiner.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFastMiner.java
index f67186f7..831a331b 100644
--- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFastMiner.java
+++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFastMiner.java
@@ -1,9 +1,14 @@
package WayofTime.bloodmagic.item.sigil;
+import java.util.List;
+
+import WayofTime.bloodmagic.api.BloodMagicAPI;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.MobEffects;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
+import net.minecraft.util.math.AxisAlignedBB;
+import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class ItemSigilFastMiner extends ItemSigilToggleableBase
@@ -18,4 +23,35 @@ public class ItemSigilFastMiner extends ItemSigilToggleableBase
{
player.addPotionEffect(new PotionEffect(MobEffects.HASTE, 2, 0, true, false));
}
+
+ @Override
+ public boolean performArrayEffect(World world, BlockPos pos)
+ {
+ double radius = 10;
+ int ticks = 600;
+ int potionPotency = 2;
+
+ AxisAlignedBB bb = new AxisAlignedBB(pos).expandXyz(radius);
+ List playerList = world.getEntitiesWithinAABB(EntityPlayer.class, bb);
+ for (EntityPlayer player : playerList)
+ {
+ if (!player.isPotionActive(MobEffects.HASTE) || (player.isPotionActive(MobEffects.HASTE) && player.getActivePotionEffect(MobEffects.HASTE).getAmplifier() < potionPotency))
+ {
+ player.addPotionEffect(new PotionEffect(MobEffects.HASTE, ticks, potionPotency));
+ if (!player.capabilities.isCreativeMode)
+ {
+ player.hurtResistantTime = 0;
+ player.attackEntityFrom(BloodMagicAPI.getDamageSource(), 1.0F);
+ }
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean hasArrayEffect()
+ {
+ return true;
+ }
}
diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java
index c776f247..8930806a 100644
--- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java
+++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java
@@ -29,11 +29,13 @@ import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectAttractor;
import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectBinding;
import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectBounce;
import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectMovement;
+import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectSigil;
import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectSkeletonTurret;
import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectUpdraft;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.api.altar.EnumAltarTier;
import WayofTime.bloodmagic.api.compress.CompressionRegistry;
+import WayofTime.bloodmagic.api.iface.ISigil;
import WayofTime.bloodmagic.api.recipe.AlchemyTableCustomRecipe;
import WayofTime.bloodmagic.api.recipe.ShapedBloodOrbRecipe;
import WayofTime.bloodmagic.api.recipe.ShapelessBloodOrbRecipe;
@@ -300,6 +302,9 @@ public class ModRecipes
AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.SLIME_BALL), new ItemStack(Items.REDSTONE), new AlchemyArrayEffectBounce("bounce"), new SingleAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/BounceArray.png")));
AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.ARROW), new ItemStack(Items.FEATHER), new AlchemyArrayEffectSkeletonTurret("skeletonTurret"), new DualAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SkeletonTurret1.png"), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SkeletonTurret2.png")));
+
+ AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_FASTMINER), new ItemStack(Items.IRON_PICKAXE), new AlchemyArrayEffectSigil("fastMiner", (ISigil) ModItems.SIGIL_FAST_MINER), new SingleAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png")));
+
}
public static void addCompressionHandlers()