diff --git a/src/main/java/WayofTime/bloodmagic/api/livingArmour/LivingArmourUpgrade.java b/src/main/java/WayofTime/bloodmagic/api/livingArmour/LivingArmourUpgrade.java index e41528d3..4c14add6 100644 --- a/src/main/java/WayofTime/bloodmagic/api/livingArmour/LivingArmourUpgrade.java +++ b/src/main/java/WayofTime/bloodmagic/api/livingArmour/LivingArmourUpgrade.java @@ -96,4 +96,9 @@ public abstract class LivingArmourUpgrade { return false; } + + public boolean isDowngrade() + { + return false; + } } diff --git a/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java b/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java index 33fa47d5..ee27a048 100644 --- a/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java +++ b/src/main/java/WayofTime/bloodmagic/api/livingArmour/StatTracker.java @@ -73,9 +73,4 @@ public abstract class StatTracker public abstract boolean providesUpgrade(String key); public abstract void onArmourUpgradeAdded(LivingArmourUpgrade upgrade); - - public boolean isTrackerDowngrade() - { - return false; - } } diff --git a/src/main/java/WayofTime/bloodmagic/api/recipe/LivingArmourDowngradeRecipe.java b/src/main/java/WayofTime/bloodmagic/api/recipe/LivingArmourDowngradeRecipe.java index 92838a7f..55119d39 100644 --- a/src/main/java/WayofTime/bloodmagic/api/recipe/LivingArmourDowngradeRecipe.java +++ b/src/main/java/WayofTime/bloodmagic/api/recipe/LivingArmourDowngradeRecipe.java @@ -9,6 +9,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.items.IItemHandler; import net.minecraftforge.oredict.OreDictionary; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; @@ -132,4 +133,48 @@ public class LivingArmourDowngradeRecipe { return this.input; } + + public void consumeInventory(IItemHandler inv) + { + for (int i = 0; i < inv.getSlots(); i++) + { + ItemStack stack = inv.getStackInSlot(i); + if (stack == null) + { + continue; + } + + if (stack.getItem().hasContainerItem(stack)) + { + inv.extractItem(i, stack.stackSize, false); + inv.insertItem(i, stack.getItem().getContainerItem(stack), false); + } else + { + inv.extractItem(i, 1, false); + } + } + } + + protected ItemStack getContainerItem(ItemStack stack) + { + if (stack == null) + { + return null; + } + + ItemStack copyStack = stack.copy(); + + if (copyStack.getItem().hasContainerItem(stack)) + { + return copyStack.getItem().getContainerItem(copyStack); + } + + copyStack.stackSize--; + if (copyStack.stackSize <= 0) + { + return null; + } + + return copyStack; + } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java index 93c4b4eb..8a2f5f70 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/LivingArmour.java @@ -252,12 +252,6 @@ public class LivingArmour implements ILivingArmour } } - if ((allowOnlyDowngrades != tracker.isTrackerDowngrade())) - { - tracker.onDeactivatedTick(world, player, this); - continue; - } - if (tracker.onTick(world, player, this)) { List upgradeList = tracker.getUpgrades(); diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeBattleHungry.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeBattleHungry.java index 472b15a3..db53c6f8 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeBattleHungry.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeBattleHungry.java @@ -75,4 +75,10 @@ public class LivingArmourUpgradeBattleHungry extends LivingArmourUpgrade { return tooltipBase + "battleHunger"; } + + @Override + public boolean isDowngrade() + { + return true; + } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeCrippledArm.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeCrippledArm.java index c42d6dfd..81b646bf 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeCrippledArm.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeCrippledArm.java @@ -55,4 +55,10 @@ public class LivingArmourUpgradeCrippledArm extends LivingArmourUpgrade { return tooltipBase + "crippledArm"; } + + @Override + public boolean isDowngrade() + { + return true; + } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeDigSlowdown.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeDigSlowdown.java index 24c0c691..eff78004 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeDigSlowdown.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeDigSlowdown.java @@ -75,4 +75,10 @@ public class LivingArmourUpgradeDigSlowdown extends LivingArmourUpgrade { return tooltipBase + "digSlowdown"; } + + @Override + public boolean isDowngrade() + { + return true; + } } diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeDisoriented.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeDisoriented.java index 47cdda38..88d4fee6 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeDisoriented.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeDisoriented.java @@ -66,4 +66,10 @@ public class LivingArmourUpgradeDisoriented extends LivingArmourUpgrade { return tooltipBase + "disoriented"; } + + @Override + public boolean isDowngrade() + { + return true; + } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeMeleeDecrease.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeMeleeDecrease.java index 110fb318..96dc33fa 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeMeleeDecrease.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeMeleeDecrease.java @@ -3,8 +3,10 @@ package WayofTime.bloodmagic.livingArmour.downgrade; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.livingArmour.ILivingArmour; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; + import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; + import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; @@ -74,4 +76,10 @@ public class LivingArmourUpgradeMeleeDecrease extends LivingArmourUpgrade { return tooltipBase + "meleeDecrease"; } + + @Override + public boolean isDowngrade() + { + return true; + } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeQuenched.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeQuenched.java index a163ae7f..acad75c6 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeQuenched.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeQuenched.java @@ -55,4 +55,10 @@ public class LivingArmourUpgradeQuenched extends LivingArmourUpgrade { return tooltipBase + "quenched"; } + + @Override + public boolean isDowngrade() + { + return true; + } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java index 8e83ce13..cfa1f3a4 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlippery.java @@ -97,4 +97,10 @@ public class LivingArmourUpgradeSlippery extends LivingArmourUpgrade { return tooltipBase + "slippery"; } + + @Override + public boolean isDowngrade() + { + return true; + } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlowness.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlowness.java index 0d3a72e1..ad67cfe4 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlowness.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeSlowness.java @@ -73,4 +73,10 @@ public class LivingArmourUpgradeSlowness extends LivingArmourUpgrade { return tooltipBase + "slowness"; } + + @Override + public boolean isDowngrade() + { + return true; + } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeStormTrooper.java b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeStormTrooper.java index b86315a3..8074631d 100644 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeStormTrooper.java +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/downgrade/LivingArmourUpgradeStormTrooper.java @@ -9,7 +9,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; public class LivingArmourUpgradeStormTrooper extends LivingArmourUpgrade { - public static final int[] costs = new int[] { -150 }; + public static final int[] costs = new int[] { -10, -25, -40, 65, -90 }; public static final float[] inaccuracy = new float[] { 0.04f, 0.08f, 0.12f, 0.16f, 0.2f }; public LivingArmourUpgradeStormTrooper(int level) @@ -37,7 +37,7 @@ public class LivingArmourUpgradeStormTrooper extends LivingArmourUpgrade @Override public int getMaxTier() { - return 1; + return 5; } @Override @@ -61,4 +61,10 @@ public class LivingArmourUpgradeStormTrooper extends LivingArmourUpgrade { return tooltipBase + "stormTrooper"; } + + @Override + public boolean isDowngrade() + { + return true; + } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerBattleHungry.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerBattleHungry.java deleted file mode 100644 index 253f7978..00000000 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerBattleHungry.java +++ /dev/null @@ -1,130 +0,0 @@ -package WayofTime.bloodmagic.livingArmour.tracker.downgrade; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; -import WayofTime.bloodmagic.api.livingArmour.StatTracker; -import WayofTime.bloodmagic.livingArmour.LivingArmour; -import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeBattleHungry; -import WayofTime.bloodmagic.util.Utils; - -public class StatTrackerBattleHungry extends StatTracker -{ - public double totalDamageDealt = 0; - - public static HashMap changeMap = new HashMap(); - public static int[] damageRequired = new int[] { 200, 800, 1300, 2500, 3800, 5000 }; - - public static void incrementCounter(LivingArmour armour, double damage) - { - changeMap.put(armour, changeMap.containsKey(armour) ? changeMap.get(armour) + damage : damage); - } - - @Override - public String getUniqueIdentifier() - { - return Constants.Mod.MODID + ".tracker.battleHunger"; - } - - @Override - public void resetTracker() - { - this.totalDamageDealt = 0; - } - - @Override - public void readFromNBT(NBTTagCompound tag) - { - totalDamageDealt = tag.getDouble(Constants.Mod.MODID + ".tracker.battleHunger"); - } - - @Override - public void writeToNBT(NBTTagCompound tag) - { - tag.setDouble(Constants.Mod.MODID + ".tracker.battleHunger", totalDamageDealt); - } - - @Override - public boolean onTick(World world, EntityPlayer player, LivingArmour livingArmour) - { - if (changeMap.containsKey(livingArmour)) - { - double change = Math.abs(changeMap.get(livingArmour)); - if (change > 0) - { - totalDamageDealt += Math.abs(changeMap.get(livingArmour)); - System.out.println(totalDamageDealt); - changeMap.put(livingArmour, 0d); - - this.markDirty(); - - return true; - } - } - - return false; - } - - @Override - public void onDeactivatedTick(World world, EntityPlayer player, LivingArmour livingArmour) - { - if (changeMap.containsKey(livingArmour)) - { - changeMap.remove(livingArmour); - } - } - - @Override - public List getUpgrades() - { - List upgradeList = new ArrayList(); - - for (int i = 0; i < 5; i++) - { - if (totalDamageDealt >= damageRequired[i]) - { - upgradeList.add(new LivingArmourUpgradeBattleHungry(i)); - } - } - - return upgradeList; - } - - @Override - public double getProgress(LivingArmour livingArmour, int currentLevel) - { - return Utils.calculateStandardProgress(totalDamageDealt, damageRequired, currentLevel); - } - - @Override - public boolean providesUpgrade(String key) - { - return key.equals(Constants.Mod.MODID + ".upgrade.battleHunger"); - } - - @Override - public void onArmourUpgradeAdded(LivingArmourUpgrade upgrade) - { - if (upgrade instanceof LivingArmourUpgradeBattleHungry) - { - int level = upgrade.getUpgradeLevel(); - if (level < damageRequired.length) - { - totalDamageDealt = Math.max(totalDamageDealt, damageRequired[level]); - this.markDirty(); - } - } - } - - @Override - public boolean isTrackerDowngrade() - { - return true; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerDigSlowdown.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerDigSlowdown.java deleted file mode 100644 index b24ad41c..00000000 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerDigSlowdown.java +++ /dev/null @@ -1,130 +0,0 @@ -package WayofTime.bloodmagic.livingArmour.tracker.downgrade; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; -import WayofTime.bloodmagic.api.livingArmour.StatTracker; -import WayofTime.bloodmagic.livingArmour.LivingArmour; -import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeDigSlowdown; -import WayofTime.bloodmagic.util.Utils; - -public class StatTrackerDigSlowdown extends StatTracker -{ - public int totalBlocksDug = 0; - - public static HashMap changeMap = new HashMap(); - public static int[] blocksRequired = new int[] { 64, 128, 250, 400, 700, 1200, 2000, 3500, 6000, 10000 }; - - public static void incrementCounter(LivingArmour armour) - { - changeMap.put(armour, changeMap.containsKey(armour) ? changeMap.get(armour) + 1 : 1); - } - - @Override - public String getUniqueIdentifier() - { - return Constants.Mod.MODID + ".tracker.digSlowdown"; - } - - @Override - public void resetTracker() - { - this.totalBlocksDug = 0; - } - - @Override - public void readFromNBT(NBTTagCompound tag) - { - totalBlocksDug = tag.getInteger(Constants.Mod.MODID + ".tracker.digSlowdown"); - } - - @Override - public void writeToNBT(NBTTagCompound tag) - { - tag.setInteger(Constants.Mod.MODID + ".tracker.digSlowdown", totalBlocksDug); - } - - @Override - public boolean onTick(World world, EntityPlayer player, LivingArmour livingArmour) - { - if (changeMap.containsKey(livingArmour)) - { - int change = Math.abs(changeMap.get(livingArmour)); - if (change > 0) - { - totalBlocksDug += Math.abs(changeMap.get(livingArmour)); - - changeMap.put(livingArmour, 0); - - this.markDirty(); - - return true; - } - } - - return false; - } - - @Override - public void onDeactivatedTick(World world, EntityPlayer player, LivingArmour livingArmour) - { - if (changeMap.containsKey(livingArmour)) - { - changeMap.remove(livingArmour); - } - } - - @Override - public List getUpgrades() - { - List upgradeList = new ArrayList(); - - for (int i = 0; i < 10; i++) - { - if (totalBlocksDug >= blocksRequired[i]) - { - upgradeList.add(new LivingArmourUpgradeDigSlowdown(i)); - } - } - - return upgradeList; - } - - @Override - public double getProgress(LivingArmour livingArmour, int currentLevel) - { - return Utils.calculateStandardProgress(totalBlocksDug, blocksRequired, currentLevel); - } - - @Override - public boolean providesUpgrade(String key) - { - return key.equals(Constants.Mod.MODID + ".upgrade.digSlowdown"); - } - - @Override - public void onArmourUpgradeAdded(LivingArmourUpgrade upgrade) - { - if (upgrade instanceof LivingArmourUpgradeDigSlowdown) - { - int level = upgrade.getUpgradeLevel(); - if (level < blocksRequired.length) - { - totalBlocksDug = Math.max(totalBlocksDug, blocksRequired[level]); - this.markDirty(); - } - } - } - - @Override - public boolean isTrackerDowngrade() - { - return true; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerMeleeDecrease.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerMeleeDecrease.java deleted file mode 100644 index 3392449c..00000000 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerMeleeDecrease.java +++ /dev/null @@ -1,129 +0,0 @@ -package WayofTime.bloodmagic.livingArmour.tracker.downgrade; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; -import WayofTime.bloodmagic.api.livingArmour.StatTracker; -import WayofTime.bloodmagic.livingArmour.LivingArmour; -import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeMeleeDecrease; -import WayofTime.bloodmagic.util.Utils; - -public class StatTrackerMeleeDecrease extends StatTracker -{ - public double totalDamageDealt = 0; - - public static HashMap changeMap = new HashMap(); - public static int[] damageRequired = new int[] { 40, 100, 200, 350, 650, 1000, 1500, 2000, 3500, 7500 }; - - public static void incrementCounter(LivingArmour armour, double damage) - { - changeMap.put(armour, changeMap.containsKey(armour) ? changeMap.get(armour) + damage : damage); - } - - @Override - public String getUniqueIdentifier() - { - return Constants.Mod.MODID + ".tracker.meleeDecrease"; - } - - @Override - public void resetTracker() - { - this.totalDamageDealt = 0; - } - - @Override - public void readFromNBT(NBTTagCompound tag) - { - totalDamageDealt = tag.getDouble(Constants.Mod.MODID + ".tracker.meleeDecrease"); - } - - @Override - public void writeToNBT(NBTTagCompound tag) - { - tag.setDouble(Constants.Mod.MODID + ".tracker.meleeDecrease", totalDamageDealt); - } - - @Override - public boolean onTick(World world, EntityPlayer player, LivingArmour livingArmour) - { - if (changeMap.containsKey(livingArmour)) - { - double change = Math.abs(changeMap.get(livingArmour)); - if (change > 0) - { - totalDamageDealt += Math.abs(changeMap.get(livingArmour)); - changeMap.put(livingArmour, 0d); - - this.markDirty(); - - return true; - } - } - - return false; - } - - @Override - public void onDeactivatedTick(World world, EntityPlayer player, LivingArmour livingArmour) - { - if (changeMap.containsKey(livingArmour)) - { - changeMap.remove(livingArmour); - } - } - - @Override - public List getUpgrades() - { - List upgradeList = new ArrayList(); - - for (int i = 0; i < 10; i++) - { - if (totalDamageDealt >= damageRequired[i]) - { - upgradeList.add(new LivingArmourUpgradeMeleeDecrease(i)); - } - } - - return upgradeList; - } - - @Override - public double getProgress(LivingArmour livingArmour, int currentLevel) - { - return Utils.calculateStandardProgress(totalDamageDealt, damageRequired, currentLevel); - } - - @Override - public boolean providesUpgrade(String key) - { - return key.equals(Constants.Mod.MODID + ".upgrade.meleeDecrease"); - } - - @Override - public void onArmourUpgradeAdded(LivingArmourUpgrade upgrade) - { - if (upgrade instanceof LivingArmourUpgradeMeleeDecrease) - { - int level = upgrade.getUpgradeLevel(); - if (level < damageRequired.length) - { - totalDamageDealt = Math.max(totalDamageDealt, damageRequired[level]); - this.markDirty(); - } - } - } - - @Override - public boolean isTrackerDowngrade() - { - return true; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerQuenched.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerQuenched.java deleted file mode 100644 index c2588d0d..00000000 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerQuenched.java +++ /dev/null @@ -1,129 +0,0 @@ -package WayofTime.bloodmagic.livingArmour.tracker.downgrade; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; -import WayofTime.bloodmagic.api.livingArmour.StatTracker; -import WayofTime.bloodmagic.livingArmour.LivingArmour; -import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeQuenched; -import WayofTime.bloodmagic.util.Utils; - -public class StatTrackerQuenched extends StatTracker -{ - public int totalQuafs = 0; - - public static HashMap changeMap = new HashMap(); - public static int[] quafsRequired = new int[] { 16 }; - - public static void incrementCounter(LivingArmour armour) - { - changeMap.put(armour, changeMap.containsKey(armour) ? changeMap.get(armour) + 1 : 1); - } - - @Override - public String getUniqueIdentifier() - { - return Constants.Mod.MODID + ".tracker.quenched"; - } - - @Override - public void resetTracker() - { - this.totalQuafs = 0; - } - - @Override - public void readFromNBT(NBTTagCompound tag) - { - totalQuafs = tag.getInteger(Constants.Mod.MODID + ".tracker.quenched"); - } - - @Override - public void writeToNBT(NBTTagCompound tag) - { - tag.setInteger(Constants.Mod.MODID + ".tracker.quenched", totalQuafs); - } - - @Override - public boolean onTick(World world, EntityPlayer player, LivingArmour livingArmour) - { - if (changeMap.containsKey(livingArmour)) - { - int change = Math.abs(changeMap.get(livingArmour)); - if (change > 0) - { - totalQuafs += Math.abs(changeMap.get(livingArmour)); - changeMap.put(livingArmour, 0); - - this.markDirty(); - - return true; - } - } - - return false; - } - - @Override - public void onDeactivatedTick(World world, EntityPlayer player, LivingArmour livingArmour) - { - if (changeMap.containsKey(livingArmour)) - { - changeMap.remove(livingArmour); - } - } - - @Override - public List getUpgrades() - { - List upgradeList = new ArrayList(); - - for (int i = 0; i < 1; i++) - { - if (totalQuafs >= quafsRequired[i]) - { - upgradeList.add(new LivingArmourUpgradeQuenched(i)); - } - } - - return upgradeList; - } - - @Override - public double getProgress(LivingArmour livingArmour, int currentLevel) - { - return Utils.calculateStandardProgress(totalQuafs, quafsRequired, currentLevel); - } - - @Override - public boolean providesUpgrade(String key) - { - return key.equals(Constants.Mod.MODID + ".upgrade.quenched"); - } - - @Override - public void onArmourUpgradeAdded(LivingArmourUpgrade upgrade) - { - if (upgrade instanceof LivingArmourUpgradeQuenched) - { - int level = upgrade.getUpgradeLevel(); - if (level < quafsRequired.length) - { - totalQuafs = Math.max(totalQuafs, quafsRequired[level]); - this.markDirty(); - } - } - } - - @Override - public boolean isTrackerDowngrade() - { - return true; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerSlowness.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerSlowness.java deleted file mode 100644 index 05d43081..00000000 --- a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/downgrade/StatTrackerSlowness.java +++ /dev/null @@ -1,141 +0,0 @@ -package WayofTime.bloodmagic.livingArmour.tracker.downgrade; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.MobEffects; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; -import WayofTime.bloodmagic.api.livingArmour.StatTracker; -import WayofTime.bloodmagic.livingArmour.LivingArmour; -import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeSlowness; -import WayofTime.bloodmagic.util.Utils; - -public class StatTrackerSlowness extends StatTracker -{ - public static Map lastPosX = new HashMap(); - public static Map lastPosZ = new HashMap(); - - public static int[] blocksRequired = new int[] { 200, 1000, 2000, 4000, 7000, 15000, 25000, 35000, 50000, 70000 }; - - public double totalMovement = 0; - - @Override - public String getUniqueIdentifier() - { - return Constants.Mod.MODID + ".tracker.slowness"; - } - - @Override - public void resetTracker() - { - this.totalMovement = 0; - } - - @Override - public void readFromNBT(NBTTagCompound tag) - { - totalMovement = tag.getDouble(Constants.Mod.MODID + ".tracker.slowness"); - } - - @Override - public void writeToNBT(NBTTagCompound tag) - { - tag.setDouble(Constants.Mod.MODID + ".tracker.slowness", totalMovement); - - } - - @Override - public boolean onTick(World world, EntityPlayer player, LivingArmour livingArmour) - { - if (!lastPosX.containsKey(player)) - { - lastPosX.put(player, player.posX); - lastPosZ.put(player, player.posZ); - return false; - } - - if (!player.onGround || !player.isPotionActive(MobEffects.SLOWNESS)) - { - return false; - } - - double distanceTravelled = Math.sqrt(Math.pow(lastPosX.get(player) - player.posX, 2) + Math.pow(lastPosZ.get(player) - player.posZ, 2)); - - if (distanceTravelled > 0.0001 && distanceTravelled < 2) - { - totalMovement += distanceTravelled; - - lastPosX.put(player, player.posX); - lastPosZ.put(player, player.posZ); - - markDirty(); - - return true; - } - - lastPosX.put(player, player.posX); - lastPosZ.put(player, player.posZ); - - return false; - } - - @Override - public void onDeactivatedTick(World world, EntityPlayer player, LivingArmour livingArmour) - { - - } - - @Override - public List getUpgrades() - { - List upgradeList = new ArrayList(); - - for (int i = 0; i < 10; i++) - { - if (totalMovement >= blocksRequired[i]) - { - upgradeList.add(new LivingArmourUpgradeSlowness(i)); - } - } - - return upgradeList; - } - - @Override - public double getProgress(LivingArmour livingArmour, int currentLevel) - { - return Utils.calculateStandardProgress(totalMovement, blocksRequired, currentLevel); - } - - @Override - public boolean providesUpgrade(String key) - { - return key.equals(Constants.Mod.MODID + ".upgrade.slowness"); - } - - @Override - public void onArmourUpgradeAdded(LivingArmourUpgrade upgrade) - { - if (upgrade instanceof LivingArmourUpgradeSlowness) - { - int level = upgrade.getUpgradeLevel(); - if (level < blocksRequired.length) - { - totalMovement = Math.max(totalMovement, blocksRequired[level]); - this.markDirty(); - } - } - } - - @Override - public boolean isTrackerDowngrade() - { - return true; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java index 9018fa21..2fb4d4d7 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModArmourTrackers.java @@ -31,11 +31,6 @@ import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSelfSacrifice; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSolarPowered; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSprintAttack; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerStepAssist; -import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerBattleHungry; -import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerDigSlowdown; -import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerMeleeDecrease; -import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerQuenched; -import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerSlowness; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeArrowShot; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeCriticalStrike; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeDigging; @@ -85,12 +80,6 @@ public class ModArmourTrackers LivingArmourHandler.registerStatTracker(StatTrackerNightSight.class); LivingArmourHandler.registerStatTracker(StatTrackerRepairing.class); - LivingArmourHandler.registerStatTracker(StatTrackerMeleeDecrease.class); - LivingArmourHandler.registerStatTracker(StatTrackerSlowness.class); - LivingArmourHandler.registerStatTracker(StatTrackerBattleHungry.class); - LivingArmourHandler.registerStatTracker(StatTrackerQuenched.class); - LivingArmourHandler.registerStatTracker(StatTrackerDigSlowdown.class); - LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeSpeed(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradeDigging(0)); LivingArmourHandler.registerArmourUpgrade(new LivingArmourUpgradePoisonResist(0)); diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index ebd4974e..35a79b64 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -484,7 +484,7 @@ public class ModRecipes ItemStack bowStack = new ItemStack(Items.BOW); Map> dialogueMap = new HashMap>(); - dialogueMap.put(bowStack, Pair.of("bow", new int[] { 1, 200, 400, 600 })); + dialogueMap.put(bowStack, Pair.of("bow", new int[] { 1, 100, 300, 500 })); for (Entry> entry : dialogueMap.entrySet()) { diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualLivingArmourDowngrade.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualLivingArmourDowngrade.java index 7143aa30..f4d3244d 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualLivingArmourDowngrade.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualLivingArmourDowngrade.java @@ -82,7 +82,11 @@ public class RitualLivingArmourDowngrade extends Ritual if (player.isSneaking()) { - //TODO: Check if you are kneeling on top of it. + double distance2 = masterPos.offset(EnumFacing.UP).distanceSqToCenter(player.posX, player.posY, player.posZ); + if (distance2 > 1) + { + return; + } BlockPos chestPos = masterPos.offset(masterRitualStone.getDirection(), 2).offset(EnumFacing.UP); TileEntity tile = world.getTileEntity(chestPos); @@ -106,7 +110,6 @@ public class RitualLivingArmourDowngrade extends Ritual LivingArmourDowngradeRecipe recipe = LivingArmourDowngradeRecipeRegistry.getMatchingRecipe(keyStack, recipeList, world, masterPos); if (recipe != null) { - LivingArmourUpgrade upgrade = recipe.getRecipeOutput(); if (LivingArmour.hasFullSet(player)) { @@ -119,14 +122,8 @@ public class RitualLivingArmourDowngrade extends Ritual if (armour.upgradeArmour(player, upgrade)) { ItemLivingArmour.setLivingArmour(chestStack, armour); - for (int i = 0; i < inv.getSlots(); i++) - { - ItemStack invStack = inv.getStackInSlot(i); - if (invStack != null) - { - inv.extractItem(i, invStack.stackSize, false); - } - } + + recipe.consumeInventory(inv); EntityLightningBolt lightning = new EntityLightningBolt(world, chestPos.getX(), chestPos.getY(), chestPos.getZ(), true); world.spawnEntityInWorld(lightning); diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java index 33ef52d4..0aa39f1d 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java @@ -115,7 +115,7 @@ public class CraftingHandler if (event.getLeft().getItem() == ModItems.UPGRADE_TOME && event.getRight().getItem() == ModItems.UPGRADE_TOME) { LivingArmourUpgrade leftUpgrade = ItemHelper.LivingUpgrades.getUpgrade(event.getLeft()); - if (leftUpgrade != null && ItemHelper.LivingUpgrades.getKey(event.getLeft()).equals(ItemHelper.LivingUpgrades.getKey(event.getRight()))) + if (leftUpgrade != null && !leftUpgrade.isDowngrade() && ItemHelper.LivingUpgrades.getKey(event.getLeft()).equals(ItemHelper.LivingUpgrades.getKey(event.getRight()))) { int leftLevel = ItemHelper.LivingUpgrades.getLevel(event.getLeft()); int rightLevel = ItemHelper.LivingUpgrades.getLevel(event.getRight()); diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java index 18480aa0..77d309ee 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java @@ -15,7 +15,6 @@ import net.minecraft.util.EnumHand; import net.minecraft.world.World; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.living.LivingDeathEvent; -import net.minecraftforge.event.entity.living.LivingEntityUseItemEvent; import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.event.entity.player.ArrowLooseEvent; import net.minecraftforge.event.entity.player.PlayerEvent; @@ -34,7 +33,6 @@ import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeStormTroop import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerArrowShot; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerGrimReaperSprint; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerJump; -import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerQuenched; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeArrowShot; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeGrimReaperSprint; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeJump; @@ -107,33 +105,6 @@ public class LivingArmourHandler } } - @SubscribeEvent - public void onFinishedItem(LivingEntityUseItemEvent.Finish event) - { - if (event.getEntityLiving() instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) event.getEntityLiving(); - ItemStack heldStack = event.getItem(); - - if (heldStack != null && heldStack.getItemUseAction() == EnumAction.DRINK) - { - if (player.getItemInUseCount() <= 1) - { - if (LivingArmour.hasFullSet(player)) - { - ItemStack chestStack = player.getItemStackFromSlot(EntityEquipmentSlot.CHEST); - LivingArmour armour = ItemLivingArmour.getLivingArmour(chestStack); - if (armour != null) - { - //Stat tracker~ - StatTrackerQuenched.incrementCounter(armour); - } - } - } - } - } - } - @SubscribeEvent public void onPlayerClick(PlayerInteractEvent event) { diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java index 1cd5c15d..7089d682 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java @@ -34,9 +34,6 @@ import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerNightSight; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerPhysicalProtect; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSolarPowered; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSprintAttack; -import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerBattleHungry; -import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerDigSlowdown; -import WayofTime.bloodmagic.livingArmour.tracker.downgrade.StatTrackerMeleeDecrease; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeDigging; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeExperience; import WayofTime.bloodmagic.util.Utils; @@ -65,11 +62,6 @@ public class StatTrackerHandler { StatTrackerDigging.incrementCounter(armour); LivingArmourUpgradeDigging.hasDug(armour); - - if (player.isPotionActive(MobEffects.MINING_FATIGUE)) - { - StatTrackerDigSlowdown.incrementCounter(armour); - } } } } @@ -170,12 +162,6 @@ public class StatTrackerHandler { StatTrackerMeleeDamage.incrementCounter(armour, amount); - if (player.isPotionActive(MobEffects.WEAKNESS)) - StatTrackerMeleeDecrease.incrementCounter(armour, amount); - - if (player.isPotionActive(MobEffects.HUNGER)) - StatTrackerBattleHungry.incrementCounter(armour, amount); - if (player.worldObj.getLight(player.getPosition()) <= 9) StatTrackerNightSight.incrementCounter(armour, amount); diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index cc0057a5..5a55b13e 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -496,6 +496,7 @@ tooltip.BloodMagic.livingArmour.upgrade.battleHunger=Battle Hungry tooltip.BloodMagic.livingArmour.upgrade.quenched=Quenched tooltip.BloodMagic.livingArmour.upgrade.meleeDecrease=Dulled Blade tooltip.BloodMagic.livingArmour.upgrade.digSlowdown=Weakened Pick +tooltip.BloodMagic.livingArmour.upgrade.stormTrooper=Storm Trooper tooltip.BloodMagic.livingArmour.upgrade.level=%s (Level %d) tooltip.BloodMagic.livingArmour.upgrade.progress=%s (%d/100) tooltip.BloodMagic.livingArmour.upgrade.points=&6Upgrade points: %s / %s @@ -668,10 +669,10 @@ ritual.BloodMagic.fellingRitual.fellingRange.info=(Cutting) The range that the r ritual.BloodMagic.fellingRitual.chest.info=(Chest) The location of the inventory that the ritual will place the results into. ritual.BloodMagic.pumpRitual.pumpRange.info=(Pump) The region that the ritual will look for fluids to grab from the world. -ritual.BloodMagic.downgradeRitual.dialogue.bow.1=So, Mortal, you wish to gain more power... -ritual.BloodMagic.downgradeRitual.dialogue.bow.200=By kneeling at this altar, you may gain further strength, however you will have to give up something as recompense... -ritual.BloodMagic.downgradeRitual.dialogue.bow.400=All it takes is a little sacrifice. By forfeighting your aim with a bow, you may attain further heights in other aspects. -ritual.BloodMagic.downgradeRitual.dialogue.bow.600=What will you choose... +ritual.BloodMagic.downgradeRitual.dialogue.bow.1=So, mortal, you want to gain more power...? +ritual.BloodMagic.downgradeRitual.dialogue.bow.100=Of course you must know that everything has a cost... I cannot simply grant you more power without you paying something in return... +ritual.BloodMagic.downgradeRitual.dialogue.bow.300=If you lay an offering before me, you will forsake your perception, preventing you from using long-ranged projectiles with any form of accuracy. Arrows will no longer be your key to victory. +ritual.BloodMagic.downgradeRitual.dialogue.bow.500=But in return, I will unlock your armour so that it may grow even further... All you have to do is kneel before this altar with the correct offering... # Chat chat.BloodMagic.altarMaker.setTier=Set Tier to: %d