Upgradeable foci

Yep. Finally. They're not all fully complete, but the basics are there
This commit is contained in:
KryptonCaptain committed 2017-05-27 10:05:50 +08:00
1 parent cb230093d5
commit bd07066f16
13 files changed
+221 -55

No files matched your search

@@ -49,7 +49,7 @@ import java.util.List;
public class ItemFocusDeflect extends ItemModFocus {
public static List<Class<?>> DeflectBlacklist = new ArrayList<Class<?>>();
AspectList visUsage = new AspectList().add(Aspect.ORDER, 8).add(Aspect.AIR, 4);
private static final AspectList visUsage = new AspectList().add(Aspect.ORDER, 8).add(Aspect.AIR, 4);
public static void setupBlackList()
@@ -61,8 +61,14 @@ public class ItemFocusDeflect extends ItemModFocus {
}
}
public static void protectFromProjectiles(EntityPlayer p) {
List<Entity> projectiles = p.worldObj.getEntitiesWithinAABB(IProjectile.class, AxisAlignedBB.getBoundingBox(p.posX - 4, p.posY - 4, p.posZ - 4, p.posX + 3, p.posY + 3, p.posZ + 3));
public static void protectFromProjectiles(EntityPlayer p, ItemStack stack) {
int range = 0;
if (stack != null) {
ItemWandCasting wand = (ItemWandCasting) stack.getItem();
range = wand.getFocusEnlarge(stack);
}
List<Entity> projectiles = p.worldObj.getEntitiesWithinAABB(IProjectile.class, AxisAlignedBB.getBoundingBox(p.posX - (4 + range), p.posY - (4 + range), p.posZ - (4 + range), p.posX + (3 + range), p.posY + (3 + range), p.posZ + (3 + range)));
for (Entity e : projectiles) {
if (CheckBlackList(e) || ProjectileHelper.getOwner(e) == p)
@@ -79,8 +85,22 @@ public class ItemFocusDeflect extends ItemModFocus {
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack focusstack, int rank) {
return new FocusUpgradeType[]{FocusUpgradeType.frugal};
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemstack, int rank)
{
switch (rank)
{
case 1:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 2:
return new FocusUpgradeType[] { FocusUpgradeType.frugal, FocusUpgradeType.enlarge};
case 3:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 4:
return new FocusUpgradeType[] { FocusUpgradeType.frugal, FocusUpgradeType.enlarge};
case 5:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
}
return null;
}
private static boolean CheckBlackList(Entity entity) {
@@ -105,7 +125,7 @@ public class ItemFocusDeflect extends ItemModFocus {
ItemWandCasting wand = (ItemWandCasting) stack.getItem();
if (wand.consumeAllVis(stack, p, getVisCost(stack), true, false))
protectFromProjectiles(p);
protectFromProjectiles(p, stack);
}
@Override
@@ -126,14 +146,10 @@ public class ItemFocusDeflect extends ItemModFocus {
@Override
public AspectList getVisCost(ItemStack stack) {
float modifier=this.getUpgradeLevel(stack,FocusUpgradeType.frugal)*0.10f;
AspectList cost=visUsage.copy();
for(Aspect a:visUsage.getAspects())
{
cost.remove(a, (int) Math.round(cost.getAmount(a)*modifier));
}
return cost;
return visUsage;
}
@Override
@@ -33,6 +33,7 @@ import thaumcraft.api.ThaumcraftApi;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.research.ResearchPage;
import thaumcraft.api.wands.FocusUpgradeType;
import thaumcraft.common.config.Config;
import thaumcraft.common.config.ConfigItems;
import thaumcraft.common.items.wands.ItemWandCasting;
@@ -255,6 +256,28 @@ public class ItemFocusDislocation extends ItemModFocus {
public AspectList getVisCost(ItemStack stack) {
return visUsage;
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemstack, int rank)
{
switch (rank)
{
case 1:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 2:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 3:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 4:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 5:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
}
return null;
}
static {
blacklist.add(Blocks.piston_extension);
@@ -23,6 +23,7 @@ import net.minecraft.world.World;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.research.ResearchPage;
import thaumcraft.api.wands.FocusUpgradeType;
import thaumcraft.common.config.Config;
import thaumcraft.common.config.ConfigBlocks;
import thaumcraft.common.config.ConfigItems;
@@ -43,8 +44,7 @@ public class ItemFocusEnderChest extends ItemModFocus {
public static final AspectList visUsage = new AspectList().add(Aspect.ENTROPY, 100).add(Aspect.ORDER, 100);
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list,
boolean par4) {
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) {
super.addInformation(stack, player, list, par4);
if (Loader.isModLoaded("EnderStorage")) {
EnderStorageFunctions.addFocusInformation(stack, player, list, par4);
@@ -89,6 +89,28 @@ public class ItemFocusEnderChest extends ItemModFocus {
public AspectList getVisCost(ItemStack stack) {
return visUsage;
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemstack, int rank)
{
switch (rank)
{
case 1:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 2:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 3:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 4:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 5:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
}
return null;
}
@Override
public String getItemName() {
@@ -89,8 +89,22 @@ public class ItemFocusFlight extends ItemModFocus {
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemStack, int i) {
return new FocusUpgradeType[]{FocusUpgradeType.treasure, FocusUpgradeType.potency};
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemstack, int rank)
{
switch (rank)
{
case 1:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 2:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 3:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 4:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 5:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
}
return null;
}
@Override
@@ -17,6 +17,7 @@ package thaumic.tinkerer.common.item.foci;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
@@ -53,7 +54,7 @@ public class ItemFocusHeal extends ItemModFocus {
if (!wand.consumeAllVis(stack, p, visUsage, false, false) || !p.shouldHeal())
return;
int potency = this.getUpgradeLevel(stack, FocusUpgradeType.potency);
int potency = wand.getFocusPotency(stack);
if (!playerHealData.containsKey(p.getGameProfile().getName()))
playerHealData.put(p.getGameProfile().getName(), 0);
@@ -67,8 +68,11 @@ public class ItemFocusHeal extends ItemModFocus {
playerHealData.put(p.getGameProfile().getName(), 0);
wand.consumeAllVis(stack, p, visUsage, true, false);
p.heal(1);
p.heal(1 + potency);
p.worldObj.playSoundAtEntity(p, "thaumcraft:wand", 0.5F, 1F);
//System.out.println("potency"+potency);
//System.out.println("progress"+progress);
//System.out.println("progress"+progress+" >= "+30+" - potency"+potency+" * 10 / 3"+" ("+(30-potency*10/3));
}
}
@@ -108,9 +112,28 @@ public class ItemFocusHeal extends ItemModFocus {
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemStack, int i) {
return new FocusUpgradeType[]{FocusUpgradeType.treasure, FocusUpgradeType.potency};
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemstack, int rank)
{
switch (rank)
{
case 1:
return new FocusUpgradeType[] { FocusUpgradeType.frugal, FocusUpgradeType.potency };
case 2:
return new FocusUpgradeType[] { FocusUpgradeType.frugal, FocusUpgradeType.potency};
case 3:
return new FocusUpgradeType[] { FocusUpgradeType.frugal, FocusUpgradeType.potency};
case 4:
return new FocusUpgradeType[] { FocusUpgradeType.frugal, FocusUpgradeType.potency};
case 5:
return new FocusUpgradeType[] { FocusUpgradeType.frugal, FocusUpgradeType.potency };
}
return null;
}
//public static FocusUpgradeType chainlightning = new FocusUpgradeType(17, new ResourceLocation("thaumcraft", "textures/foci/chainlightning.png"), "focus.upgrade.chainlightning.name", "focus.upgrade.chainlightning.text", new AspectList().add(Aspect.WEATHER, 1));
//public static FocusUpgradeType earthshock = new FocusUpgradeType(18, new ResourceLocation("thaumcraft", "textures/foci/earthshock.png"), "focus.upgrade.earthshock.name", "focus.upgrade.earthshock.text", new AspectList().add(Aspect.WEATHER, 1));
@Override
public String getItemName() {
@@ -111,7 +111,7 @@ public class ItemFocusSmelt extends ItemModFocus {
}
if (!decremented) {
int potency = this.getUpgradeLevel(stack, FocusUpgradeType.potency);
int potency = wand.getFocusPotency(stack); //TODO review what this does
playerData.put(p.getGameProfile().getName(), new SmeltData(pos, 20 - Math.min(3, potency) * 5));
} else{
// Sound
@@ -156,8 +156,22 @@ public class ItemFocusSmelt extends ItemModFocus {
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemStack, int i) {
return new FocusUpgradeType[]{FocusUpgradeType.treasure, FocusUpgradeType.potency};
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemstack, int rank)
{
switch (rank)
{
case 1:
return new FocusUpgradeType[] { FocusUpgradeType.frugal/*, FocusUpgradeType.potency*/};
case 2:
return new FocusUpgradeType[] { FocusUpgradeType.frugal/*, FocusUpgradeType.potency*/};
case 3:
return new FocusUpgradeType[] { FocusUpgradeType.frugal/*, FocusUpgradeType.potency*/};
case 4:
return new FocusUpgradeType[] { FocusUpgradeType.frugal/*, FocusUpgradeType.potency*/};
case 5:
return new FocusUpgradeType[] { FocusUpgradeType.frugal/*, FocusUpgradeType.potency*/};
}
return null;
}
static class SmeltData {
@@ -85,15 +85,31 @@ public class ItemFocusTelekinesis extends ItemModFocus {
return visUsage;
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemStack, int i) {
return new FocusUpgradeType[0];
}
@Override
public boolean isVisCostPerTick(ItemStack stack) {
return true;
}
//TODO add range upgrades
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemstack, int rank)
{
switch (rank)
{
case 1:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 2:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 3:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 4:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 5:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
}
return null;
}
@Override
public String getItemName() {
@@ -93,12 +93,13 @@ public abstract class ItemModFocus extends ItemFocusBasic implements ITTinkererI
public ThaumicTinkererRecipe getRecipeItem() {
return null;
}
/*
@Override
public boolean isItemTool(ItemStack par1ItemStack) {
return true;
}
*/
/*
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) {
AspectList cost = getVisCost(stack);
@@ -107,7 +108,7 @@ public abstract class ItemModFocus extends ItemFocusBasic implements ITTinkererI
addVisCostTooltip(cost, stack, player, list, par4);
}
}
*/
protected void addVisCostTooltip(AspectList cost, ItemStack stack, EntityPlayer player, List list, boolean par4) {
for (Aspect aspect : cost.getAspectsSorted()) {
float amount = cost.getAmount(aspect) / 100.0F;
@@ -115,10 +116,6 @@ public abstract class ItemModFocus extends ItemFocusBasic implements ITTinkererI
}
}
@Override
public int getItemEnchantability() {
return 5;
}
@Override
public EnumRarity getRarity(ItemStack itemstack) {
@@ -175,7 +172,9 @@ public abstract class ItemModFocus extends ItemFocusBasic implements ITTinkererI
return false;
}
public boolean canApplyUpgrade(ItemStack focusstack, EntityPlayer player, FocusUpgradeType type, int rank) {
return true;
}
}
@@ -78,7 +78,7 @@ public class ItemGemChest extends ItemIchorclothArmorAdv {
if (armor.getItemDamage() == 1 || !ThaumicTinkerer.proxy.armorStatus(player))
return;
ItemFocusDeflect.protectFromProjectiles(player);
ItemFocusDeflect.protectFromProjectiles(player, null);
}
@Override
@@ -41,7 +41,7 @@ import thaumic.tinkerer.common.research.ResearchHelper;
public class ItemFocusRecall extends ItemModKamiFocus {
AspectList cost = new AspectList().add(Aspect.AIR, 4000).add(Aspect.EARTH, 4000).add(Aspect.ORDER, 4000);
private static final AspectList visUsage = new AspectList().add(Aspect.AIR, 4000).add(Aspect.EARTH, 4000).add(Aspect.ORDER, 4000);
public ItemFocusRecall() {
super();
@@ -94,8 +94,26 @@ public class ItemFocusRecall extends ItemModKamiFocus {
@Override
public AspectList getVisCost(ItemStack stack) {
return cost;
return visUsage;
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemstack, int rank)
{
switch (rank)
{
case 1:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 2:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 3:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 4:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
case 5:
return new FocusUpgradeType[] { FocusUpgradeType.frugal};
}
return null;
}
@Override
@@ -36,7 +36,7 @@ import thaumic.tinkerer.common.research.ResearchHelper;
public class ItemFocusShadowbeam extends ItemModKamiFocus {
AspectList cost = new AspectList().add(Aspect.ORDER, 25).add(Aspect.ENTROPY, 25).add(Aspect.AIR, 15);
private static final AspectList visUsage = new AspectList().add(Aspect.ORDER, 25).add(Aspect.ENTROPY, 25).add(Aspect.AIR, 15);
public ItemFocusShadowbeam() {
super();
@@ -47,9 +47,9 @@ public class ItemFocusShadowbeam extends ItemModKamiFocus {
@Override
public void onUsingFocusTick(ItemStack stack, EntityPlayer player, int count) {
ItemWandCasting wand = (ItemWandCasting) stack.getItem();
int potency = wand.getFocusPotency(stack); //TODO verify effect
if (!player.worldObj.isRemote && wand.consumeAllVis(stack, player, getVisCost(stack), true, false)) {
int potency = 0;
if (player.worldObj.rand.nextInt(10) == 0)
player.worldObj.playSoundAtEntity(player, "thaumcraft:brain", 0.5F, 1F);
@@ -76,7 +76,26 @@ public class ItemFocusShadowbeam extends ItemModKamiFocus {
@Override
public AspectList getVisCost(ItemStack stack) {
return cost;
return visUsage;
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemstack, int rank)
{
switch (rank)
{
case 1:
return new FocusUpgradeType[] { FocusUpgradeType.frugal/*, FocusUpgradeType.potency*/};
case 2:
return new FocusUpgradeType[] { FocusUpgradeType.frugal/*, FocusUpgradeType.potency*/};
case 3:
return new FocusUpgradeType[] { FocusUpgradeType.frugal/*, FocusUpgradeType.potency*/};
case 4:
return new FocusUpgradeType[] { FocusUpgradeType.frugal/*, FocusUpgradeType.potency*/};
case 5:
return new FocusUpgradeType[] { FocusUpgradeType.frugal/*, FocusUpgradeType.potency*/};
}
return null;
}
@@ -31,7 +31,7 @@ import java.util.List;
public class ItemFocusXPDrain extends ItemModKamiFocus {
AspectList cost = new AspectList();
AspectList visUsage = new AspectList();
private int lastGiven = 0;
@Override
@@ -89,14 +89,19 @@ public class ItemFocusXPDrain extends ItemModKamiFocus {
@Override
protected void addVisCostTooltip(AspectList cost, ItemStack stack, EntityPlayer player, List list, boolean par4) {
list.add(StatCollector.translateToLocal(isVisCostPerTick(stack) ? "item.Focus.cost2" : "item.Focus.cost1"));
list.add(" " + EnumChatFormatting.GREEN + StatCollector.translateToLocal("ttmisc.experience") + EnumChatFormatting.WHITE + " x " + getXpUse(stack));
}
@Override
public AspectList getVisCost(ItemStack stack) {
return cost;
return visUsage;
}
@Override
public boolean canApplyUpgrade(ItemStack focusstack, EntityPlayer player, FocusUpgradeType type, int rank) {
return false;
}
@Override
@@ -95,24 +95,21 @@ public abstract class ItemModKamiFocus extends ItemFocusBasic implements ITTinke
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) {
super.addInformation(stack, player, list, par4);
AspectList cost = getVisCost(stack);
if (cost != null) {
list.add(StatCollector.translateToLocal(isVisCostPerTick(stack) ? "item.Focus.cost2" : "item.Focus.cost1"));
//list.add(StatCollector.translateToLocal(isVisCostPerTick(stack) ? "item.Focus.cost2" : "item.Focus.cost1"));
addVisCostTooltip(cost, stack, player, list, par4);
}
}
protected void addVisCostTooltip(AspectList cost, ItemStack stack, EntityPlayer player, List list, boolean par4) {
for (Aspect aspect : cost.getAspectsSorted()) {
/*for (Aspect aspect : cost.getAspectsSorted()) {
float amount = cost.getAmount(aspect) / 100.0F;
list.add(" " + '\u00a7' + aspect.getChatcolor() + aspect.getName() + '\u00a7' + "r x " + amount);
}
}*/
}
@Override
public int getItemEnchantability() {
return 5;
}
@Override
public EnumRarity getRarity(ItemStack itemstack) {
@@ -175,8 +172,8 @@ public abstract class ItemModKamiFocus extends ItemFocusBasic implements ITTinke
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack itemStack, int i) {
return new FocusUpgradeType[]{FocusUpgradeType.frugal};
public boolean canApplyUpgrade(ItemStack focusstack, EntityPlayer player, FocusUpgradeType type, int rank) {
return true;
}
}