Implemented most of the framework required for training specific Living Armour Upgrades.

This commit is contained in:
WayofTime 2016-02-14 21:50:32 -05:00
parent 01d4bdffa2
commit 64efaf854b
24 changed files with 322 additions and 13 deletions

View file

@ -1,21 +1,23 @@
package WayofTime.bloodmagic.livingArmour;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.world.World;
import WayofTime.bloodmagic.api.iface.IUpgradeTrainer;
import WayofTime.bloodmagic.api.livingArmour.ILivingArmour;
import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler;
import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
import WayofTime.bloodmagic.api.livingArmour.StatTracker;
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
import WayofTime.bloodmagic.util.ChatUtil;
import WayofTime.bloodmagic.util.helper.TextHelper;
@ -122,6 +124,19 @@ public class LivingArmour implements ILivingArmour
upgrade.onTick(world, player, this);
}
List<String> allowedUpgradesList = new ArrayList<String>();
for (ItemStack stack : player.inventory.mainInventory)
{
if (stack != null && stack.getItem() instanceof IUpgradeTrainer)
{
List<String> keyList = ((IUpgradeTrainer) stack.getItem()).getTrainedUpgrades(stack);
if (!keyList.isEmpty())
{
allowedUpgradesList.addAll(keyList);
}
}
}
for (Entry<String, StatTracker> entry : trackerMap.entrySet())
{
StatTracker tracker = entry.getValue();
@ -131,6 +146,25 @@ public class LivingArmour implements ILivingArmour
continue;
}
if (!allowedUpgradesList.isEmpty())
{
boolean allowed = false;
for (String key : allowedUpgradesList)
{
if (tracker.providesUpgrade(key))
{
allowed = true;
break;
}
}
if (!allowed)
{
continue;
}
}
if (tracker.onTick(world, player, this))
{
List<LivingArmourUpgrade> upgradeList = tracker.getUpgrades();
@ -140,6 +174,7 @@ public class LivingArmour implements ILivingArmour
upgradeArmour(player, upgrade);
}
}
}
}

View file

@ -85,4 +85,10 @@ public class StatTrackerArrowShot extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.arrowShot");
}
}

View file

@ -85,4 +85,10 @@ public class StatTrackerDigging extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.digging");
}
}

View file

@ -87,4 +87,10 @@ public class StatTrackerFood extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.knockback");
}
}

View file

@ -92,4 +92,10 @@ public class StatTrackerGrimReaperSprint extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.grimReaper");
}
}

View file

@ -85,4 +85,10 @@ public class StatTrackerHealthboost extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.health");
}
}

View file

@ -85,4 +85,10 @@ public class StatTrackerMeleeDamage extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.meleeDamage");
}
}

View file

@ -98,4 +98,10 @@ public class StatTrackerMovement extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.movement");
}
}

View file

@ -85,4 +85,10 @@ public class StatTrackerPhysicalProtect extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.physicalProtect");
}
}

View file

@ -71,4 +71,10 @@ public class StatTrackerPoison extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.poisonResist");
}
}

View file

@ -86,4 +86,10 @@ public class StatTrackerSelfSacrifice extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.selfSacrifice");
}
}

View file

@ -85,4 +85,10 @@ public class StatTrackerSolarPowered extends StatTracker
return upgradeList;
}
@Override
public boolean providesUpgrade(String key)
{
return key.equals(Constants.Mod.MODID + ".upgrade.solarPowered");
}
}