From aa6d7bcfaa02a8323be70a6e5db94b1bfe2fa218 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Thu, 7 Apr 2016 14:05:36 -0400 Subject: [PATCH] WTP, SourceTree? --- .../tracker/StatTrackerStepAssist.java | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerStepAssist.java diff --git a/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerStepAssist.java b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerStepAssist.java new file mode 100644 index 00000000..fc33c3f0 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/livingArmour/tracker/StatTrackerStepAssist.java @@ -0,0 +1,111 @@ +package WayofTime.bloodmagic.livingArmour.tracker; + +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.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.upgrade.LivingArmourUpgradeStepAssist; + +public class StatTrackerStepAssist extends StatTracker +{ + public static Map lastPosX = new HashMap(); + public static Map lastPosZ = new HashMap(); + + public static int blocksRequired = 1000; + + public double totalMovement = 0; + + @Override + public String getUniqueIdentifier() + { + return Constants.Mod.MODID + ".tracker.stepAssist"; + } + + @Override + public void resetTracker() + { + this.totalMovement = 0; + } + + @Override + public void readFromNBT(NBTTagCompound tag) + { + totalMovement = tag.getDouble(Constants.Mod.MODID + ".tracker.stepAssist"); + } + + @Override + public void writeToNBT(NBTTagCompound tag) + { + tag.setDouble(Constants.Mod.MODID + ".tracker.stepAssist", 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.stepHeight < 1) + { + 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) + { + double previousMovement = totalMovement; + totalMovement += distanceTravelled; + + lastPosX.put(player, player.posX); + lastPosZ.put(player, player.posZ); + + markDirty(); + + return previousMovement < blocksRequired && totalMovement >= blocksRequired; + } + + 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(); + + if (totalMovement >= blocksRequired) + { + upgradeList.add(new LivingArmourUpgradeStepAssist(0)); + } + + return upgradeList; + } + + @Override + public boolean providesUpgrade(String key) + { + return key.equals(Constants.Mod.MODID + ".upgrade.stepAssist"); + } +}