From dc0925c5a65e9d00db5ecf591ac891cfaf3e280c Mon Sep 17 00:00:00 2001
From: WayofTime <wtime@live.ca>
Date: Sun, 3 Jan 2016 08:56:31 -0500
Subject: [PATCH] Improved Bound tools. Made them actually use LP!

---
 .../bloodmagic/item/ItemBoundAxe.java         | 15 +++++++---
 .../bloodmagic/item/ItemBoundPickaxe.java     | 28 +++++++++++--------
 .../bloodmagic/item/ItemBoundShovel.java      | 15 ++++++++--
 .../bloodmagic/item/ItemBoundSword.java       |  5 ++++
 4 files changed, 45 insertions(+), 18 deletions(-)

diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java
index 1596f879..fda42289 100644
--- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java
+++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java
@@ -37,17 +37,22 @@ public class ItemBoundAxe extends ItemBoundTool
     @Override
     protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge)
     {
+        if (world.isRemote)
+        {
+            return;
+        }
+
         boolean silkTouch = EnchantmentHelper.getSilkTouchModifier(player);
         int fortuneLvl = EnchantmentHelper.getFortuneModifier(player);
-        int range = (int) (charge * 0.25);
+        int range = (int) (charge / 6); //Charge is a max of 30 - want 5 to be the max
 
         HashMultiset<ItemStackWrapper> drops = HashMultiset.create();
 
-        BlockPos playerPos = player.getPosition().add(0, -1, 0);
+        BlockPos playerPos = player.getPosition();
 
         for (int i = -range; i <= range; i++)
         {
-            for (int j = -range; j <= range; j++)
+            for (int j = 0; j <= 2 * range; j++)
             {
                 for (int k = -range; k <= range; k++)
                 {
@@ -79,7 +84,9 @@ public class ItemBoundAxe extends ItemBoundTool
             }
         }
 
-        world.createExplosion(player, playerPos.getX(), playerPos.getY(), playerPos.getZ(), 0.5F, false);
+        ItemBindable.syphonNetwork(stack, player, (int) (charge * charge * charge / 2.7));
+
+        world.createExplosion(player, playerPos.getX(), playerPos.getY(), playerPos.getZ(), 0.1F, false);
         dropStacks(drops, world, playerPos.add(0, 1, 0));
     }
 
diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java
index 816dc640..3bdea9c8 100644
--- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java
+++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java
@@ -1,24 +1,23 @@
 package WayofTime.bloodmagic.item;
 
-import WayofTime.bloodmagic.api.ItemStackWrapper;
-import com.google.common.collect.HashMultiset;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Multiset;
-import com.google.common.collect.Sets;
+import java.util.List;
+import java.util.Set;
+
 import net.minecraft.block.Block;
 import net.minecraft.block.material.Material;
 import net.minecraft.enchantment.EnchantmentHelper;
 import net.minecraft.entity.SharedMonsterAttributes;
 import net.minecraft.entity.ai.attributes.AttributeModifier;
-import net.minecraft.entity.item.EntityItem;
 import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.init.Blocks;
 import net.minecraft.item.ItemStack;
 import net.minecraft.util.BlockPos;
 import net.minecraft.world.World;
+import WayofTime.bloodmagic.api.ItemStackWrapper;
 
-import java.util.List;
-import java.util.Set;
+import com.google.common.collect.HashMultiset;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Sets;
 
 public class ItemBoundPickaxe extends ItemBoundTool
 {
@@ -44,17 +43,22 @@ public class ItemBoundPickaxe extends ItemBoundTool
     @Override
     protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge)
     {
+        if (world.isRemote)
+        {
+            return;
+        }
+
         boolean silkTouch = EnchantmentHelper.getSilkTouchModifier(player);
         int fortuneLvl = EnchantmentHelper.getFortuneModifier(player);
-        int range = (int) (charge * 0.25);
+        int range = (int) (charge / 6); //Charge is a max of 30 - want 5 to be the max
 
         HashMultiset<ItemStackWrapper> drops = HashMultiset.create();
 
-        BlockPos playerPos = player.getPosition().add(0, -1, 0);
+        BlockPos playerPos = player.getPosition();
 
         for (int i = -range; i <= range; i++)
         {
-            for (int j = -range; j <= range; j++)
+            for (int j = 0; j <= 2 * range; j++)
             {
                 for (int k = -range; k <= range; k++)
                 {
@@ -86,6 +90,8 @@ public class ItemBoundPickaxe extends ItemBoundTool
             }
         }
 
+        ItemBindable.syphonNetwork(stack, player, (int) (charge * charge * charge / 2.7));
+
         world.createExplosion(player, playerPos.getX(), playerPos.getY(), playerPos.getZ(), 0.5F, false);
         dropStacks(drops, world, playerPos.add(0, 1, 0));
     }
diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java
index 1aa87d5a..76e038fc 100644
--- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java
+++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java
@@ -1,9 +1,11 @@
 package WayofTime.bloodmagic.item;
 
 import WayofTime.bloodmagic.api.ItemStackWrapper;
+
 import com.google.common.collect.HashMultiset;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Sets;
+
 import net.minecraft.block.Block;
 import net.minecraft.enchantment.EnchantmentHelper;
 import net.minecraft.entity.SharedMonsterAttributes;
@@ -35,17 +37,22 @@ public class ItemBoundShovel extends ItemBoundTool
     @Override
     protected void onBoundRelease(ItemStack stack, World world, EntityPlayer player, int charge)
     {
+        if (world.isRemote)
+        {
+            return;
+        }
+
         boolean silkTouch = EnchantmentHelper.getSilkTouchModifier(player);
         int fortuneLvl = EnchantmentHelper.getFortuneModifier(player);
-        int range = (int) (charge * 0.25);
+        int range = (int) (charge / 6); //Charge is a max of 30 - want 5 to be the max
 
         HashMultiset<ItemStackWrapper> drops = HashMultiset.create();
 
-        BlockPos playerPos = player.getPosition().add(0, -1, 0);
+        BlockPos playerPos = player.getPosition();
 
         for (int i = -range; i <= range; i++)
         {
-            for (int j = -range; j <= range; j++)
+            for (int j = 0; j <= 2 * range; j++)
             {
                 for (int k = -range; k <= range; k++)
                 {
@@ -77,6 +84,8 @@ public class ItemBoundShovel extends ItemBoundTool
             }
         }
 
+        ItemBindable.syphonNetwork(stack, player, (int) (charge * charge * charge / 2.7));
+
         world.createExplosion(player, playerPos.getX(), playerPos.getY(), playerPos.getZ(), 0.5F, false);
         dropStacks(drops, world, playerPos.add(0, 1, 0));
     }
diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java
index 8bfb8b0e..06cea6cc 100644
--- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java
+++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java
@@ -7,7 +7,9 @@ import WayofTime.bloodmagic.api.util.helper.BindableHelper;
 import WayofTime.bloodmagic.api.util.helper.NBTHelper;
 import WayofTime.bloodmagic.registry.ModItems;
 import WayofTime.bloodmagic.util.helper.TextHelper;
+
 import com.google.common.base.Strings;
+
 import net.minecraft.entity.EntityLiving;
 import net.minecraft.entity.EntityLivingBase;
 import net.minecraft.entity.player.EntityPlayer;
@@ -55,6 +57,9 @@ public class ItemBoundSword extends ItemSword
 
             // TODO Make conical charge blast
             Explosion explosion = new Explosion(worldIn, playerIn, playerIn.posX, playerIn.posY, playerIn.posZ, (float) (i * 0.5), true, true);
+
+            ItemBindable.syphonNetwork(stack, playerIn, (int) (i * i * i / 2.7));
+
             if (net.minecraftforge.event.ForgeEventFactory.onExplosionStart(worldIn, explosion))
                 return;
             explosion.doExplosionA();