Implemented most of the framework required for training specific Living Armour Upgrades.
This commit is contained in:
parent
01d4bdffa2
commit
64efaf854b
24 changed files with 322 additions and 13 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue