Merge pull request #709 from Arcaratus/1.9
Improved the API and internal workings
This commit is contained in:
commit
81e9452a21
|
@ -0,0 +1,15 @@
|
||||||
|
package WayofTime.bloodmagic.api.iface;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface used for any item that can store LP in itself
|
||||||
|
*/
|
||||||
|
public interface IItemLPContainer
|
||||||
|
{
|
||||||
|
int getCapacity();
|
||||||
|
|
||||||
|
void setStoredLP(ItemStack stack, int lp);
|
||||||
|
|
||||||
|
int getStoredLP(ItemStack stack);
|
||||||
|
}
|
|
@ -5,5 +5,5 @@ import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
|
||||||
|
|
||||||
public interface IMultiWillTool
|
public interface IMultiWillTool
|
||||||
{
|
{
|
||||||
public EnumDemonWillType getCurrentType(ItemStack stack);
|
EnumDemonWillType getCurrentType(ItemStack stack);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
|
||||||
|
|
||||||
public interface ISentientSwordEffectProvider
|
public interface ISentientSwordEffectProvider
|
||||||
{
|
{
|
||||||
public boolean applyOnHitEffect(EnumDemonWillType type, ItemStack swordStack, ItemStack providerStack, EntityLivingBase attacker, EntityLivingBase target);
|
boolean applyOnHitEffect(EnumDemonWillType type, ItemStack swordStack, ItemStack providerStack, EntityLivingBase attacker, EntityLivingBase target);
|
||||||
|
|
||||||
public boolean providesEffectForWill(EnumDemonWillType type);
|
boolean providesEffectForWill(EnumDemonWillType type);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package WayofTime.bloodmagic.api.impl;
|
package WayofTime.bloodmagic.api.impl;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.iface.IActivatable;
|
import WayofTime.bloodmagic.api.iface.IActivatable;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
@ -18,30 +20,27 @@ import net.minecraft.world.World;
|
||||||
*/
|
*/
|
||||||
public class ItemSigilToggleable extends ItemSigil implements IActivatable
|
public class ItemSigilToggleable extends ItemSigil implements IActivatable
|
||||||
{
|
{
|
||||||
private boolean toggleable;
|
|
||||||
|
|
||||||
public ItemSigilToggleable(int lpUsed)
|
public ItemSigilToggleable(int lpUsed)
|
||||||
{
|
{
|
||||||
super(lpUsed);
|
super(lpUsed);
|
||||||
setToggleable();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setToggleable()
|
|
||||||
{
|
|
||||||
this.toggleable = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean getActivated(ItemStack stack)
|
public boolean getActivated(ItemStack stack)
|
||||||
{
|
{
|
||||||
return stack.getItemDamage() > 0;
|
return stack != null && NBTHelper.checkNBT(stack).getTagCompound().getBoolean(Constants.NBT.ACTIVATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ItemStack setActivatedState(ItemStack stack, boolean activated)
|
public ItemStack setActivatedState(ItemStack stack, boolean activated)
|
||||||
{
|
{
|
||||||
if (this.toggleable)
|
if (stack != null)
|
||||||
stack.setItemDamage(activated ? 1 : 0);
|
{
|
||||||
|
NBTHelper.checkNBT(stack).getTagCompound().setBoolean(Constants.NBT.ACTIVATED, activated);
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
return stack;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -86,7 +86,7 @@ public class BindableHelper
|
||||||
* Deprecated.
|
* Deprecated.
|
||||||
*
|
*
|
||||||
* Now handled automatically with
|
* Now handled automatically with
|
||||||
* {@link WayofTime.bloodmagic.util.handler.EventHandler#interactEvent(PlayerInteractEvent)}
|
* {@link WayofTime.bloodmagic.util.handler.EventHandler#onInteract(PlayerInteractEvent.RightClickItem)}}
|
||||||
*
|
*
|
||||||
* @param stack
|
* @param stack
|
||||||
* - The ItemStack to bind
|
* - The ItemStack to bind
|
||||||
|
@ -105,7 +105,7 @@ public class BindableHelper
|
||||||
* Deprecated.
|
* Deprecated.
|
||||||
*
|
*
|
||||||
* Now handled automatically with
|
* Now handled automatically with
|
||||||
* {@link WayofTime.bloodmagic.util.handler.EventHandler#interactEvent(PlayerInteractEvent)}
|
* {@link WayofTime.bloodmagic.util.handler.EventHandler#onInteract(PlayerInteractEvent.RightClickItem)}}
|
||||||
*
|
*
|
||||||
* @param stack
|
* @param stack
|
||||||
* - The ItemStack to bind
|
* - The ItemStack to bind
|
||||||
|
@ -145,7 +145,7 @@ public class BindableHelper
|
||||||
* Deprecated.
|
* Deprecated.
|
||||||
*
|
*
|
||||||
* Now handled automatically with
|
* Now handled automatically with
|
||||||
* {@link WayofTime.bloodmagic.util.handler.EventHandler#interactEvent(PlayerInteractEvent)}
|
* {@link WayofTime.bloodmagic.util.handler.EventHandler#onInteract(PlayerInteractEvent.RightClickItem)}}
|
||||||
*
|
*
|
||||||
* @param stack
|
* @param stack
|
||||||
* - ItemStack to check
|
* - ItemStack to check
|
||||||
|
|
|
@ -0,0 +1,152 @@
|
||||||
|
package WayofTime.bloodmagic.api.util.helper;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.api.altar.IBloodAltar;
|
||||||
|
import WayofTime.bloodmagic.api.iface.IItemLPContainer;
|
||||||
|
import WayofTime.bloodmagic.api.iface.IUpgradeTrainer;
|
||||||
|
import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler;
|
||||||
|
import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
|
||||||
|
import WayofTime.bloodmagic.item.ItemUpgradeTome;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class ItemHelper
|
||||||
|
{
|
||||||
|
// IItemLPContainer
|
||||||
|
public static class LPContainer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Attempts to fill an altar with the contained LP
|
||||||
|
*
|
||||||
|
* @param altar
|
||||||
|
* - The altar in question
|
||||||
|
* @param itemStack
|
||||||
|
* - The {@link IItemLPContainer} ItemStack filling the altar
|
||||||
|
* @param world
|
||||||
|
* - The world
|
||||||
|
* @param altarPos
|
||||||
|
* - The position of the altar
|
||||||
|
*
|
||||||
|
* @return Whether or not the altar was filled (or at least attempted)
|
||||||
|
*/
|
||||||
|
public static boolean tryAndFillAltar(IBloodAltar altar, ItemStack itemStack, World world, BlockPos altarPos)
|
||||||
|
{
|
||||||
|
if (itemStack.getItem() instanceof IItemLPContainer)
|
||||||
|
{
|
||||||
|
if (!altar.isActive())
|
||||||
|
{
|
||||||
|
IItemLPContainer fillable = (IItemLPContainer) itemStack.getItem();
|
||||||
|
int amount = fillable.getStoredLP(itemStack);
|
||||||
|
|
||||||
|
if (amount > 0)
|
||||||
|
{
|
||||||
|
int filledAmount = altar.fillMainTank(amount);
|
||||||
|
amount -= filledAmount;
|
||||||
|
fillable.setStoredLP(itemStack, amount);
|
||||||
|
world.notifyBlockUpdate(altarPos, world.getBlockState(altarPos), world.getBlockState(altarPos), 3);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the given LP into the {@link IItemLPContainer}'s storage
|
||||||
|
*
|
||||||
|
* @param stack
|
||||||
|
* - The item in question
|
||||||
|
* @param toAdd
|
||||||
|
* - How much LP should be added to the item
|
||||||
|
* @param maxCapacity
|
||||||
|
* - The item's maximum holding capacity
|
||||||
|
*
|
||||||
|
* @return Whether or not LP was added to the item
|
||||||
|
*/
|
||||||
|
public static boolean addLPToItem(ItemStack stack, int toAdd, int maxCapacity)
|
||||||
|
{
|
||||||
|
if (stack.getItem() instanceof IItemLPContainer)
|
||||||
|
{
|
||||||
|
IItemLPContainer fillable = (IItemLPContainer) stack.getItem();
|
||||||
|
stack = NBTHelper.checkNBT(stack);
|
||||||
|
|
||||||
|
if (toAdd < 0)
|
||||||
|
toAdd = 0;
|
||||||
|
|
||||||
|
if (toAdd > maxCapacity)
|
||||||
|
toAdd = maxCapacity;
|
||||||
|
|
||||||
|
fillable.setStoredLP(stack, Math.min(fillable.getStoredLP(stack) + toAdd, maxCapacity));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class LivingUpgrades
|
||||||
|
{
|
||||||
|
public static LivingArmourUpgrade getUpgrade(ItemStack stack)
|
||||||
|
{
|
||||||
|
if (stack.getItem() instanceof ItemUpgradeTome || stack.getItem() instanceof IUpgradeTrainer)
|
||||||
|
{
|
||||||
|
String key = getKey(stack);
|
||||||
|
int level = getLevel(stack);
|
||||||
|
|
||||||
|
return LivingArmourHandler.generateUpgradeFromKey(key, level);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setKey(ItemStack stack, String key)
|
||||||
|
{
|
||||||
|
if (stack.getItem() instanceof ItemUpgradeTome || stack.getItem() instanceof IUpgradeTrainer)
|
||||||
|
{
|
||||||
|
NBTHelper.checkNBT(stack);
|
||||||
|
NBTTagCompound tag = stack.getTagCompound();
|
||||||
|
|
||||||
|
tag.setString("key", key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getKey(ItemStack stack)
|
||||||
|
{
|
||||||
|
if (stack.getItem() instanceof ItemUpgradeTome || stack.getItem() instanceof IUpgradeTrainer)
|
||||||
|
{
|
||||||
|
NBTHelper.checkNBT(stack);
|
||||||
|
NBTTagCompound tag = stack.getTagCompound();
|
||||||
|
|
||||||
|
return tag.getString("key");
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setLevel(ItemStack stack, int level)
|
||||||
|
{
|
||||||
|
if (stack.getItem() instanceof ItemUpgradeTome || stack.getItem() instanceof IUpgradeTrainer)
|
||||||
|
{
|
||||||
|
NBTHelper.checkNBT(stack);
|
||||||
|
NBTTagCompound tag = stack.getTagCompound();
|
||||||
|
|
||||||
|
tag.setInteger("level", level);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getLevel(ItemStack stack)
|
||||||
|
{
|
||||||
|
if (stack.getItem() instanceof ItemUpgradeTome || stack.getItem() instanceof IUpgradeTrainer)
|
||||||
|
{
|
||||||
|
NBTHelper.checkNBT(stack);
|
||||||
|
NBTTagCompound tag = stack.getTagCompound();
|
||||||
|
|
||||||
|
return tag.getInteger("level");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,25 +25,25 @@ public class NetworkHelper
|
||||||
/**
|
/**
|
||||||
* Gets the SoulNetwork for the player.
|
* Gets the SoulNetwork for the player.
|
||||||
*
|
*
|
||||||
* @param name
|
* @param uuid
|
||||||
* - The name of the SoulNetwork owner - this is UUID.toString().
|
* - The UUID of the SoulNetwork owner - this is UUID.toString().
|
||||||
*
|
*
|
||||||
* @return - The SoulNetwork for the given name.
|
* @return - The SoulNetwork for the given name.
|
||||||
*/
|
*/
|
||||||
public static SoulNetwork getSoulNetwork(String name)
|
public static SoulNetwork getSoulNetwork(String uuid)
|
||||||
{
|
{
|
||||||
World world = DimensionManager.getWorld(0);
|
World world = DimensionManager.getWorld(0);
|
||||||
if (world == null || world.getMapStorage() == null) //Hack-ish way to fix the lava crystal.
|
if (world == null || world.getMapStorage() == null) //Hack-ish way to fix the lava crystal.
|
||||||
{
|
{
|
||||||
return new SoulNetwork(name);
|
return new SoulNetwork(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
SoulNetwork network = (SoulNetwork) world.getMapStorage().loadData(SoulNetwork.class, name);
|
SoulNetwork network = (SoulNetwork) world.getMapStorage().loadData(SoulNetwork.class, uuid);
|
||||||
|
|
||||||
if (network == null)
|
if (network == null)
|
||||||
{
|
{
|
||||||
network = new SoulNetwork(name);
|
network = new SoulNetwork(uuid);
|
||||||
world.getMapStorage().setData(name, network);
|
world.getMapStorage().setData(uuid, network);
|
||||||
}
|
}
|
||||||
|
|
||||||
return network;
|
return network;
|
||||||
|
|
|
@ -1,16 +1,12 @@
|
||||||
package WayofTime.bloodmagic.api.util.helper;
|
package WayofTime.bloodmagic.api.util.helper;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
|
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.MobEffects;
|
import net.minecraft.init.MobEffects;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.potion.Potion;
|
|
||||||
import net.minecraft.potion.PotionEffect;
|
import net.minecraft.potion.PotionEffect;
|
||||||
import net.minecraft.server.MinecraftServer;
|
|
||||||
import net.minecraftforge.common.UsernameCache;
|
import net.minecraftforge.common.UsernameCache;
|
||||||
import net.minecraftforge.common.util.FakePlayer;
|
import net.minecraftforge.common.util.FakePlayer;
|
||||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
|
@ -73,6 +69,14 @@ public class PlayerHelper
|
||||||
return stack.getTagCompound().getString(Constants.NBT.OWNER_NAME);
|
return stack.getTagCompound().getString(Constants.NBT.OWNER_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether or not the given player is an "actual" player
|
||||||
|
*
|
||||||
|
* @param player
|
||||||
|
* - The player in question
|
||||||
|
*
|
||||||
|
* @return If the player is fake or not
|
||||||
|
*/
|
||||||
public static boolean isFakePlayer(EntityPlayer player)
|
public static boolean isFakePlayer(EntityPlayer player)
|
||||||
{
|
{
|
||||||
return player != null && (player instanceof FakePlayer || knownFakePlayers.contains(player.getClass().getCanonicalName()));
|
return player != null && (player instanceof FakePlayer || knownFakePlayers.contains(player.getClass().getCanonicalName()));
|
||||||
|
|
|
@ -2,6 +2,7 @@ package WayofTime.bloodmagic.api.util.helper;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.altar.IBloodAltar;
|
import WayofTime.bloodmagic.api.altar.IBloodAltar;
|
||||||
import WayofTime.bloodmagic.registry.ModPotions;
|
import WayofTime.bloodmagic.registry.ModPotions;
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.potion.Potion;
|
import net.minecraft.potion.Potion;
|
||||||
import net.minecraft.potion.PotionEffect;
|
import net.minecraft.potion.PotionEffect;
|
||||||
|
@ -42,6 +43,14 @@ public class PlayerSacrificeHelper
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sacrifices a player's health while the player is under the influence of incense
|
||||||
|
*
|
||||||
|
* @param player
|
||||||
|
* - The player sacrificing
|
||||||
|
*
|
||||||
|
* @return Whether or not the health sacrificing succeeded
|
||||||
|
*/
|
||||||
public static boolean sacrificePlayerHealth(EntityPlayer player)
|
public static boolean sacrificePlayerHealth(EntityPlayer player)
|
||||||
{
|
{
|
||||||
if (player.isPotionActive(soulFrayId))
|
if (player.isPotionActive(soulFrayId))
|
||||||
|
@ -79,17 +88,24 @@ public class PlayerSacrificeHelper
|
||||||
return 1 + amount * scalingOfSacrifice;
|
return 1 + amount * scalingOfSacrifice;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean findAndFillAltar(World world, EntityPlayer player, int amount)
|
/**
|
||||||
|
* Finds the nearest {@link IBloodAltar} and attempts to fill it
|
||||||
|
*
|
||||||
|
* @param world
|
||||||
|
* - The world
|
||||||
|
* @param sacrificingEntity
|
||||||
|
* - The entity having the sacrifice done on (can be {@link EntityPlayer} for self-sacrifice)
|
||||||
|
* @param amount
|
||||||
|
* - The amount of which the altar should be filled
|
||||||
|
*
|
||||||
|
* @return Whether the altar is found and (attempted) filled
|
||||||
|
*/
|
||||||
|
public static boolean findAndFillAltar(World world, EntityLivingBase sacrificingEntity, int amount)
|
||||||
{
|
{
|
||||||
int posX = (int) Math.round(player.posX - 0.5f);
|
IBloodAltar altarEntity = getAltar(world, sacrificingEntity.getPosition());
|
||||||
int posY = (int) player.posY;
|
|
||||||
int posZ = (int) Math.round(player.posZ - 0.5f);
|
|
||||||
IBloodAltar altarEntity = getAltar(world, new BlockPos(posX, posY, posZ));
|
|
||||||
|
|
||||||
if (altarEntity == null)
|
if (altarEntity == null)
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
altarEntity.sacrificialDaggerCall(amount, false);
|
altarEntity.sacrificialDaggerCall(amount, false);
|
||||||
altarEntity.startCycle();
|
altarEntity.startCycle();
|
||||||
|
@ -97,6 +113,16 @@ public class PlayerSacrificeHelper
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the nearest {@link IBloodAltar}
|
||||||
|
*
|
||||||
|
* @param world
|
||||||
|
* - The world
|
||||||
|
* @param blockPos
|
||||||
|
* - The position of where the check should be in (in a 2 block radius from this)
|
||||||
|
*
|
||||||
|
* @return The nearest altar, if no altar is found, then this will return null
|
||||||
|
*/
|
||||||
public static IBloodAltar getAltar(World world, BlockPos blockPos)
|
public static IBloodAltar getAltar(World world, BlockPos blockPos)
|
||||||
{
|
{
|
||||||
TileEntity tileEntity;
|
TileEntity tileEntity;
|
||||||
|
@ -107,7 +133,7 @@ public class PlayerSacrificeHelper
|
||||||
{
|
{
|
||||||
for (int k = -2; k <= 1; k++)
|
for (int k = -2; k <= 1; k++)
|
||||||
{
|
{
|
||||||
tileEntity = world.getTileEntity(new BlockPos(i + blockPos.getX(), k + blockPos.getY(), j + blockPos.getZ()));
|
tileEntity = world.getTileEntity(blockPos.add(i, j, k));
|
||||||
|
|
||||||
if (tileEntity instanceof IBloodAltar)
|
if (tileEntity instanceof IBloodAltar)
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,6 +12,7 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler;
|
import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.ItemHelper.LivingUpgrades;
|
||||||
import WayofTime.bloodmagic.compat.jei.alchemyArray.AlchemyArrayCraftingCategory;
|
import WayofTime.bloodmagic.compat.jei.alchemyArray.AlchemyArrayCraftingCategory;
|
||||||
import WayofTime.bloodmagic.compat.jei.alchemyArray.AlchemyArrayCraftingRecipeHandler;
|
import WayofTime.bloodmagic.compat.jei.alchemyArray.AlchemyArrayCraftingRecipeHandler;
|
||||||
import WayofTime.bloodmagic.compat.jei.alchemyArray.AlchemyArrayCraftingRecipeMaker;
|
import WayofTime.bloodmagic.compat.jei.alchemyArray.AlchemyArrayCraftingRecipeMaker;
|
||||||
|
@ -26,7 +27,6 @@ import WayofTime.bloodmagic.compat.jei.forge.TartaricForgeRecipeHandler;
|
||||||
import WayofTime.bloodmagic.compat.jei.forge.TartaricForgeRecipeMaker;
|
import WayofTime.bloodmagic.compat.jei.forge.TartaricForgeRecipeMaker;
|
||||||
import WayofTime.bloodmagic.compat.jei.orb.ShapedOrbRecipeHandler;
|
import WayofTime.bloodmagic.compat.jei.orb.ShapedOrbRecipeHandler;
|
||||||
import WayofTime.bloodmagic.compat.jei.orb.ShapelessOrbRecipeHandler;
|
import WayofTime.bloodmagic.compat.jei.orb.ShapelessOrbRecipeHandler;
|
||||||
import WayofTime.bloodmagic.item.ItemUpgradeTome;
|
|
||||||
import WayofTime.bloodmagic.registry.ModBlocks;
|
import WayofTime.bloodmagic.registry.ModBlocks;
|
||||||
import WayofTime.bloodmagic.registry.ModItems;
|
import WayofTime.bloodmagic.registry.ModItems;
|
||||||
|
|
||||||
|
@ -65,8 +65,8 @@ public class BloodMagicPlugin extends BlankModPlugin
|
||||||
for (int i = 0; i < maxLevel - 1; i++)
|
for (int i = 0; i < maxLevel - 1; i++)
|
||||||
{
|
{
|
||||||
ItemStack stack = new ItemStack(ModItems.upgradeTome);
|
ItemStack stack = new ItemStack(ModItems.upgradeTome);
|
||||||
ItemUpgradeTome.setKey(stack, key);
|
LivingUpgrades.setKey(stack, key);
|
||||||
ItemUpgradeTome.setLevel(stack, i);
|
LivingUpgrades.setLevel(stack, i);
|
||||||
jeiHelper.getItemBlacklist().addItemToBlacklist(stack);
|
jeiHelper.getItemBlacklist().addItemToBlacklist(stack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package WayofTime.bloodmagic.item;
|
package WayofTime.bloodmagic.item;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
|
||||||
import WayofTime.bloodmagic.api.impl.ItemBindable;
|
import WayofTime.bloodmagic.api.impl.ItemBindable;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
||||||
|
@ -29,7 +28,7 @@ public class ItemBindableBase extends ItemBindable
|
||||||
{
|
{
|
||||||
NBTHelper.checkNBT(stack);
|
NBTHelper.checkNBT(stack);
|
||||||
|
|
||||||
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
|
if (!Strings.isNullOrEmpty(getOwnerUUID(stack)))
|
||||||
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,16 +65,16 @@ public class ItemBloodOrb extends ItemBindableBase implements IBloodOrb, IBindab
|
||||||
return super.onItemRightClick(stack, world, player, hand);
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
|
if (Strings.isNullOrEmpty(getOwnerUUID(stack)))
|
||||||
return super.onItemRightClick(stack, world, player, hand);
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
|
|
||||||
if (world.isRemote)
|
if (world.isRemote)
|
||||||
return super.onItemRightClick(stack, world, player, hand);
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
|
|
||||||
if (stack.getTagCompound().getString(Constants.NBT.OWNER_UUID).equals(PlayerHelper.getUsernameFromPlayer(player)))
|
if (getOwnerUUID(stack).equals(PlayerHelper.getUsernameFromPlayer(player)))
|
||||||
NetworkHelper.setMaxOrb(NetworkHelper.getSoulNetwork(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)), getOrbLevel(stack.getItemDamage()));
|
NetworkHelper.setMaxOrb(NetworkHelper.getSoulNetwork(getOwnerUUID(stack)), getOrbLevel(stack.getItemDamage()));
|
||||||
|
|
||||||
NetworkHelper.getSoulNetwork(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)).addLifeEssence(200, getMaxEssence(stack.getItemDamage()));
|
NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).addLifeEssence(200, getMaxEssence(stack.getItemDamage()));
|
||||||
NetworkHelper.getSoulNetwork(player).hurtPlayer(player, 200);
|
NetworkHelper.getSoulNetwork(player).hurtPlayer(player, 200);
|
||||||
return super.onItemRightClick(stack, world, player, hand);
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@ import net.minecraftforge.fml.common.eventhandler.Event;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
import WayofTime.bloodmagic.api.BlockStack;
|
import WayofTime.bloodmagic.api.BlockStack;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
|
||||||
import WayofTime.bloodmagic.api.ItemStackWrapper;
|
import WayofTime.bloodmagic.api.ItemStackWrapper;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
import WayofTime.bloodmagic.client.IMeshProvider;
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
|
|
@ -26,7 +26,6 @@ import net.minecraftforge.fml.common.eventhandler.Event;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
import WayofTime.bloodmagic.api.BlockStack;
|
import WayofTime.bloodmagic.api.BlockStack;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
|
||||||
import WayofTime.bloodmagic.api.ItemStackWrapper;
|
import WayofTime.bloodmagic.api.ItemStackWrapper;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
import WayofTime.bloodmagic.client.IMeshProvider;
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
@ -84,7 +83,7 @@ public class ItemBoundPickaxe extends ItemBoundTool implements IMeshProvider
|
||||||
|
|
||||||
boolean silkTouch = EnchantmentHelper.getEnchantmentLevel(Enchantments.silkTouch, stack) > 0;
|
boolean silkTouch = EnchantmentHelper.getEnchantmentLevel(Enchantments.silkTouch, stack) > 0;
|
||||||
int fortuneLvl = EnchantmentHelper.getEnchantmentLevel(Enchantments.fortune, stack);
|
int fortuneLvl = EnchantmentHelper.getEnchantmentLevel(Enchantments.fortune, stack);
|
||||||
int range = (int) (charge / 6); //Charge is a max of 30 - want 5 to be the max
|
int range = (charge / 6); //Charge is a max of 30 - want 5 to be the max
|
||||||
|
|
||||||
HashMultiset<ItemStackWrapper> drops = HashMultiset.create();
|
HashMultiset<ItemStackWrapper> drops = HashMultiset.create();
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ import net.minecraftforge.fml.common.eventhandler.Event;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
import WayofTime.bloodmagic.api.BlockStack;
|
import WayofTime.bloodmagic.api.BlockStack;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
|
||||||
import WayofTime.bloodmagic.api.ItemStackWrapper;
|
import WayofTime.bloodmagic.api.ItemStackWrapper;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
import WayofTime.bloodmagic.client.IMeshProvider;
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class ItemBoundSword extends ItemSword implements IBindable, IActivatable
|
||||||
|
|
||||||
tooltip.add(TextHelper.localize("tooltip.BloodMagic." + (getActivated(stack) ? "activated" : "deactivated")));
|
tooltip.add(TextHelper.localize("tooltip.BloodMagic." + (getActivated(stack) ? "activated" : "deactivated")));
|
||||||
|
|
||||||
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
|
if (!Strings.isNullOrEmpty(getOwnerUUID(stack)))
|
||||||
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,20 +113,6 @@ public class ItemBoundSword extends ItemSword implements IBindable, IActivatable
|
||||||
return multimap;
|
return multimap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getActivated(ItemStack stack)
|
|
||||||
{
|
|
||||||
NBTHelper.checkNBT(stack);
|
|
||||||
return stack.getTagCompound().getBoolean(Constants.NBT.ACTIVATED);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack setActivatedState(ItemStack stack, boolean activated)
|
|
||||||
{
|
|
||||||
NBTHelper.checkNBT(stack);
|
|
||||||
stack.getTagCompound().setBoolean(Constants.NBT.ACTIVATED, activated);
|
|
||||||
|
|
||||||
return stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public ItemMeshDefinition getMeshDefinition()
|
public ItemMeshDefinition getMeshDefinition()
|
||||||
|
@ -169,4 +155,24 @@ public class ItemBoundSword extends ItemSword implements IBindable, IActivatable
|
||||||
{
|
{
|
||||||
return stack != null ? NBTHelper.checkNBT(stack).getTagCompound().getString(Constants.NBT.OWNER_UUID) : null;
|
return stack != null ? NBTHelper.checkNBT(stack).getTagCompound().getString(Constants.NBT.OWNER_UUID) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IActivatable
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getActivated(ItemStack stack)
|
||||||
|
{
|
||||||
|
return stack != null && NBTHelper.checkNBT(stack).getTagCompound().getBoolean(Constants.NBT.ACTIVATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack setActivatedState(ItemStack stack, boolean activated)
|
||||||
|
{
|
||||||
|
if (stack != null)
|
||||||
|
{
|
||||||
|
NBTHelper.checkNBT(stack).getTagCompound().setBoolean(Constants.NBT.ACTIVATED, activated);
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -190,7 +190,7 @@ public class ItemBoundTool extends ItemTool implements IBindable, IActivatable
|
||||||
|
|
||||||
NBTHelper.checkNBT(stack);
|
NBTHelper.checkNBT(stack);
|
||||||
|
|
||||||
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
|
if (!Strings.isNullOrEmpty(getOwnerUUID(stack)))
|
||||||
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
||||||
|
|
||||||
super.addInformation(stack, player, tooltip, advanced);
|
super.addInformation(stack, player, tooltip, advanced);
|
||||||
|
@ -258,13 +258,18 @@ public class ItemBoundTool extends ItemTool implements IBindable, IActivatable
|
||||||
@Override
|
@Override
|
||||||
public boolean getActivated(ItemStack stack)
|
public boolean getActivated(ItemStack stack)
|
||||||
{
|
{
|
||||||
return NBTHelper.checkNBT(stack).getTagCompound().getBoolean(Constants.NBT.ACTIVATED);
|
return stack != null && NBTHelper.checkNBT(stack).getTagCompound().getBoolean(Constants.NBT.ACTIVATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack setActivatedState(ItemStack stack, boolean activated)
|
public ItemStack setActivatedState(ItemStack stack, boolean activated)
|
||||||
{
|
{
|
||||||
NBTHelper.checkNBT(stack).getTagCompound().setBoolean(Constants.NBT.ACTIVATED, activated);
|
if (stack != null)
|
||||||
return stack;
|
{
|
||||||
|
NBTHelper.checkNBT(stack).getTagCompound().setBoolean(Constants.NBT.ACTIVATED, activated);
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,11 +9,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.init.SoundEvents;
|
import net.minecraft.init.SoundEvents;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraft.util.SoundCategory;
|
import net.minecraft.util.SoundCategory;
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
|
@ -21,9 +17,8 @@ import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.ConfigHandler;
|
import WayofTime.bloodmagic.ConfigHandler;
|
||||||
import WayofTime.bloodmagic.api.BloodMagicAPI;
|
import WayofTime.bloodmagic.api.BloodMagicAPI;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.DamageSourceBloodMagic;
|
|
||||||
import WayofTime.bloodmagic.api.altar.IBloodAltar;
|
|
||||||
import WayofTime.bloodmagic.client.IVariantProvider;
|
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.PlayerSacrificeHelper;
|
||||||
|
|
||||||
public class ItemDaggerOfSacrifice extends Item implements IVariantProvider
|
public class ItemDaggerOfSacrifice extends Item implements IVariantProvider
|
||||||
{
|
{
|
||||||
|
@ -57,11 +52,11 @@ public class ItemDaggerOfSacrifice extends Item implements IVariantProvider
|
||||||
if (BloodMagicAPI.getEntitySacrificeValues().containsKey(entityName))
|
if (BloodMagicAPI.getEntitySacrificeValues().containsKey(entityName))
|
||||||
lifeEssence = BloodMagicAPI.getEntitySacrificeValues().get(entityName);
|
lifeEssence = BloodMagicAPI.getEntitySacrificeValues().get(entityName);
|
||||||
|
|
||||||
if (findAndFillAltar(attacker.worldObj, target, lifeEssence))
|
if (PlayerSacrificeHelper.findAndFillAltar(attacker.worldObj, target, lifeEssence))
|
||||||
{
|
{
|
||||||
target.worldObj.playSound(null, target.posX, target.posY, target.posZ, SoundEvents.block_fire_extinguish, SoundCategory.BLOCKS, 0.5F, 2.6F + (target.worldObj.rand.nextFloat() - target.worldObj.rand.nextFloat()) * 0.8F);
|
target.worldObj.playSound(null, target.posX, target.posY, target.posZ, SoundEvents.block_fire_extinguish, SoundCategory.BLOCKS, 0.5F, 2.6F + (target.worldObj.rand.nextFloat() - target.worldObj.rand.nextFloat()) * 0.8F);
|
||||||
target.setHealth(-1);
|
target.setHealth(-1);
|
||||||
target.onDeath(new DamageSourceBloodMagic());
|
target.onDeath(BloodMagicAPI.getDamageSource());
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -74,39 +69,4 @@ public class ItemDaggerOfSacrifice extends Item implements IVariantProvider
|
||||||
ret.add(new ImmutablePair<Integer, String>(0, "type=normal"));
|
ret.add(new ImmutablePair<Integer, String>(0, "type=normal"));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean findAndFillAltar(World world, EntityLivingBase sacrifice, int amount)
|
|
||||||
{
|
|
||||||
IBloodAltar bloodAltar = findBloodAltar(world, sacrifice.getPosition());
|
|
||||||
|
|
||||||
if (bloodAltar != null)
|
|
||||||
{
|
|
||||||
bloodAltar.sacrificialDaggerCall(amount, true);
|
|
||||||
bloodAltar.startCycle();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IBloodAltar findBloodAltar(World world, BlockPos blockPos)
|
|
||||||
{
|
|
||||||
TileEntity tileEntity;
|
|
||||||
|
|
||||||
for (int i = -2; i <= 2; i++)
|
|
||||||
{
|
|
||||||
for (int j = -2; j <= 2; j++)
|
|
||||||
{
|
|
||||||
for (int k = -2; k <= 1; k++)
|
|
||||||
{
|
|
||||||
tileEntity = world.getTileEntity(blockPos.add(i, k, j));
|
|
||||||
|
|
||||||
if ((tileEntity instanceof IBloodAltar))
|
|
||||||
return (IBloodAltar) tileEntity;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,12 +13,7 @@ import net.minecraft.item.EnumAction;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.ActionResult;
|
import net.minecraft.util.*;
|
||||||
import net.minecraft.util.EnumActionResult;
|
|
||||||
import net.minecraft.util.EnumHand;
|
|
||||||
import net.minecraft.util.EnumParticleTypes;
|
|
||||||
import net.minecraft.util.SoundCategory;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
@ -31,7 +26,6 @@ import org.apache.commons.lang3.tuple.Pair;
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.api.BloodMagicAPI;
|
import WayofTime.bloodmagic.api.BloodMagicAPI;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.altar.IBloodAltar;
|
|
||||||
import WayofTime.bloodmagic.api.event.SacrificeKnifeUsedEvent;
|
import WayofTime.bloodmagic.api.event.SacrificeKnifeUsedEvent;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
||||||
|
@ -154,7 +148,7 @@ public class ItemSacrificialDagger extends Item implements IVariantProvider
|
||||||
return super.onItemRightClick(stack, world, player, hand);
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
|
|
||||||
// TODO - Check if SoulFray is active
|
// TODO - Check if SoulFray is active
|
||||||
findAndFillAltar(world, player, lpAdded);
|
PlayerSacrificeHelper.findAndFillAltar(world, player, lpAdded);
|
||||||
|
|
||||||
return super.onItemRightClick(stack, world, player, hand);
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
}
|
}
|
||||||
|
@ -168,42 +162,6 @@ public class ItemSacrificialDagger extends Item implements IVariantProvider
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void findAndFillAltar(World world, EntityPlayer player, int amount)
|
|
||||||
{
|
|
||||||
BlockPos pos = player.getPosition();
|
|
||||||
IBloodAltar altarEntity = getAltar(world, pos);
|
|
||||||
|
|
||||||
if (altarEntity == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
altarEntity.sacrificialDaggerCall(amount, false);
|
|
||||||
altarEntity.startCycle();
|
|
||||||
}
|
|
||||||
|
|
||||||
public IBloodAltar getAltar(World world, BlockPos pos)
|
|
||||||
{
|
|
||||||
TileEntity tileEntity;
|
|
||||||
|
|
||||||
for (int i = -2; i <= 2; i++)
|
|
||||||
{
|
|
||||||
for (int j = -2; j <= 2; j++)
|
|
||||||
{
|
|
||||||
for (int k = -2; k <= 1; k++)
|
|
||||||
{
|
|
||||||
BlockPos newPos = pos.add(i, j, k);
|
|
||||||
tileEntity = world.getTileEntity(newPos);
|
|
||||||
|
|
||||||
if (tileEntity instanceof IBloodAltar)
|
|
||||||
{
|
|
||||||
return (IBloodAltar) tileEntity;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5)
|
public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5)
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,7 +4,7 @@ import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler;
|
import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler;
|
||||||
import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
|
import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
import WayofTime.bloodmagic.api.util.helper.ItemHelper.LivingUpgrades;
|
||||||
import WayofTime.bloodmagic.client.IVariantProvider;
|
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||||
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
|
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
|
||||||
import WayofTime.bloodmagic.livingArmour.LivingArmour;
|
import WayofTime.bloodmagic.livingArmour.LivingArmour;
|
||||||
|
@ -14,13 +14,11 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
|
||||||
import net.minecraft.util.ActionResult;
|
import net.minecraft.util.ActionResult;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
|
@ -47,7 +45,8 @@ public class ItemUpgradeTome extends Item implements IVariantProvider
|
||||||
{
|
{
|
||||||
return super.onItemRightClick(stack, world, player, hand);
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
}
|
}
|
||||||
LivingArmourUpgrade upgrade = ItemUpgradeTome.getUpgrade(stack);
|
|
||||||
|
LivingArmourUpgrade upgrade = LivingUpgrades.getUpgrade(stack);
|
||||||
if (upgrade == null)
|
if (upgrade == null)
|
||||||
{
|
{
|
||||||
return super.onItemRightClick(stack, world, player, hand);
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
|
@ -83,8 +82,8 @@ public class ItemUpgradeTome extends Item implements IVariantProvider
|
||||||
for (int i = 0; i < maxLevel; i++)
|
for (int i = 0; i < maxLevel; i++)
|
||||||
{
|
{
|
||||||
ItemStack stack = new ItemStack(this);
|
ItemStack stack = new ItemStack(this);
|
||||||
setKey(stack, key);
|
LivingUpgrades.setKey(stack, key);
|
||||||
setLevel(stack, i);
|
LivingUpgrades.setLevel(stack, i);
|
||||||
list.add(stack);
|
list.add(stack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,52 +97,12 @@ public class ItemUpgradeTome extends Item implements IVariantProvider
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LivingArmourUpgrade getUpgrade(ItemStack stack)
|
|
||||||
{
|
|
||||||
String key = getKey(stack);
|
|
||||||
int level = getLevel(stack);
|
|
||||||
|
|
||||||
return LivingArmourHandler.generateUpgradeFromKey(key, level);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setKey(ItemStack stack, String key)
|
|
||||||
{
|
|
||||||
NBTHelper.checkNBT(stack);
|
|
||||||
NBTTagCompound tag = stack.getTagCompound();
|
|
||||||
|
|
||||||
tag.setString("key", key);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getKey(ItemStack stack)
|
|
||||||
{
|
|
||||||
NBTHelper.checkNBT(stack);
|
|
||||||
NBTTagCompound tag = stack.getTagCompound();
|
|
||||||
|
|
||||||
return tag.getString("key");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setLevel(ItemStack stack, int level)
|
|
||||||
{
|
|
||||||
NBTHelper.checkNBT(stack);
|
|
||||||
NBTTagCompound tag = stack.getTagCompound();
|
|
||||||
|
|
||||||
tag.setInteger("level", level);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getLevel(ItemStack stack)
|
|
||||||
{
|
|
||||||
NBTHelper.checkNBT(stack);
|
|
||||||
NBTTagCompound tag = stack.getTagCompound();
|
|
||||||
|
|
||||||
return tag.getInteger("level");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
||||||
{
|
{
|
||||||
// tooltip.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.livingArmour"))));
|
// tooltip.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.livingArmour"))));
|
||||||
LivingArmourUpgrade upgrade = ItemUpgradeTome.getUpgrade(stack);
|
LivingArmourUpgrade upgrade = LivingUpgrades.getUpgrade(stack);
|
||||||
if (upgrade != null)
|
if (upgrade != null)
|
||||||
{
|
{
|
||||||
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.livingArmour.upgrade.level", TextHelper.localize(upgrade.getUnlocalizedName()), upgrade.getUpgradeLevel() + 1));
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.livingArmour.upgrade.level", TextHelper.localize(upgrade.getUnlocalizedName()), upgrade.getUpgradeLevel() + 1));
|
||||||
|
|
|
@ -5,14 +5,13 @@ import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.iface.IUpgradeTrainer;
|
import WayofTime.bloodmagic.api.iface.IUpgradeTrainer;
|
||||||
import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler;
|
import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler;
|
||||||
import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
|
import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
import WayofTime.bloodmagic.api.util.helper.ItemHelper.LivingUpgrades;
|
||||||
import WayofTime.bloodmagic.client.IVariantProvider;
|
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
|
@ -43,41 +42,17 @@ public class ItemUpgradeTrainer extends Item implements IUpgradeTrainer, IVarian
|
||||||
{
|
{
|
||||||
String key = entry.getKey();
|
String key = entry.getKey();
|
||||||
ItemStack stack = new ItemStack(this);
|
ItemStack stack = new ItemStack(this);
|
||||||
setKey(stack, key);
|
LivingUpgrades.setKey(stack, key);
|
||||||
list.add(stack);
|
list.add(stack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LivingArmourUpgrade getUpgrade(ItemStack stack)
|
|
||||||
{
|
|
||||||
String key = getKey(stack);
|
|
||||||
int level = 0;
|
|
||||||
|
|
||||||
return LivingArmourHandler.generateUpgradeFromKey(key, level);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setKey(ItemStack stack, String key)
|
|
||||||
{
|
|
||||||
NBTHelper.checkNBT(stack);
|
|
||||||
NBTTagCompound tag = stack.getTagCompound();
|
|
||||||
|
|
||||||
tag.setString("key", key);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getKey(ItemStack stack)
|
|
||||||
{
|
|
||||||
NBTHelper.checkNBT(stack);
|
|
||||||
NBTTagCompound tag = stack.getTagCompound();
|
|
||||||
|
|
||||||
return tag.getString("key");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
||||||
{
|
{
|
||||||
// tooltip.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.livingArmour"))));
|
// tooltip.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.livingArmour"))));
|
||||||
LivingArmourUpgrade upgrade = ItemUpgradeTrainer.getUpgrade(stack);
|
LivingArmourUpgrade upgrade = LivingUpgrades.getUpgrade(stack);
|
||||||
if (upgrade != null)
|
if (upgrade != null)
|
||||||
{
|
{
|
||||||
tooltip.add(TextHelper.localize(upgrade.getUnlocalizedName()));
|
tooltip.add(TextHelper.localize(upgrade.getUnlocalizedName()));
|
||||||
|
@ -88,7 +63,7 @@ public class ItemUpgradeTrainer extends Item implements IUpgradeTrainer, IVarian
|
||||||
public List<String> getTrainedUpgrades(ItemStack stack)
|
public List<String> getTrainedUpgrades(ItemStack stack)
|
||||||
{
|
{
|
||||||
List<String> keyList = new ArrayList<String>();
|
List<String> keyList = new ArrayList<String>();
|
||||||
String key = getKey(stack);
|
String key = LivingUpgrades.getKey(stack);
|
||||||
|
|
||||||
if (!key.isEmpty())
|
if (!key.isEmpty())
|
||||||
{
|
{
|
||||||
|
@ -106,7 +81,7 @@ public class ItemUpgradeTrainer extends Item implements IUpgradeTrainer, IVarian
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setKey(stack, keys.get(0));
|
LivingUpgrades.setKey(stack, keys.get(0));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,11 @@ package WayofTime.bloodmagic.item.gear;
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.altar.IAltarManipulator;
|
import WayofTime.bloodmagic.api.altar.IAltarManipulator;
|
||||||
|
import WayofTime.bloodmagic.api.altar.IBloodAltar;
|
||||||
|
import WayofTime.bloodmagic.api.iface.IItemLPContainer;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.ItemHelper.LPContainer;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
import WayofTime.bloodmagic.client.IVariantProvider;
|
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||||
import WayofTime.bloodmagic.tile.TileAltar;
|
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||||
|
@ -23,7 +25,7 @@ import org.apache.commons.lang3.tuple.Pair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator, IVariantProvider
|
public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator, IItemLPContainer, IVariantProvider
|
||||||
{
|
{
|
||||||
public final int CAPACITY = 10000; // Max LP storage
|
public final int CAPACITY = 10000; // Max LP storage
|
||||||
|
|
||||||
|
@ -52,23 +54,10 @@ public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator, I
|
||||||
{
|
{
|
||||||
TileEntity tile = world.getTileEntity(position.getBlockPos());
|
TileEntity tile = world.getTileEntity(position.getBlockPos());
|
||||||
|
|
||||||
if (!(tile instanceof TileAltar))
|
if (!(tile instanceof IBloodAltar))
|
||||||
return super.onItemRightClick(stack, world, player, EnumHand.MAIN_HAND);
|
return super.onItemRightClick(stack, world, player, EnumHand.MAIN_HAND);
|
||||||
|
|
||||||
TileAltar altar = (TileAltar) tile;
|
LPContainer.tryAndFillAltar((IBloodAltar) tile, stack, world, position.getBlockPos());
|
||||||
|
|
||||||
if (!altar.isActive())
|
|
||||||
{
|
|
||||||
int amount = this.getStoredLP(stack);
|
|
||||||
|
|
||||||
if (amount > 0)
|
|
||||||
{
|
|
||||||
int filledAmount = altar.fillMainTank(amount);
|
|
||||||
amount -= filledAmount;
|
|
||||||
setStoredLP(stack, amount);
|
|
||||||
world.notifyBlockUpdate(position.getBlockPos(), world.getBlockState(position.getBlockPos()), world.getBlockState(position.getBlockPos()), 3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,28 +87,26 @@ public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator, I
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addLP(ItemStack stack, int toAdd)
|
// IFillable
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCapacity()
|
||||||
{
|
{
|
||||||
stack = NBTHelper.checkNBT(stack);
|
return this.CAPACITY;
|
||||||
|
|
||||||
if (toAdd < 0)
|
|
||||||
toAdd = 0;
|
|
||||||
|
|
||||||
if (toAdd > CAPACITY)
|
|
||||||
toAdd = CAPACITY;
|
|
||||||
|
|
||||||
setStoredLP(stack, Math.min(getStoredLP(stack) + toAdd, CAPACITY));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStoredLP(ItemStack stack, int lp)
|
|
||||||
{
|
|
||||||
stack = NBTHelper.checkNBT(stack);
|
|
||||||
stack.getTagCompound().setInteger(Constants.NBT.STORED_LP, lp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getStoredLP(ItemStack stack)
|
public int getStoredLP(ItemStack stack)
|
||||||
{
|
{
|
||||||
stack = NBTHelper.checkNBT(stack);
|
return stack != null ? NBTHelper.checkNBT(stack).getTagCompound().getInteger(Constants.NBT.STORED_LP) : 0;
|
||||||
return stack.getTagCompound().getInteger(Constants.NBT.STORED_LP);
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setStoredLP(ItemStack stack, int lp)
|
||||||
|
{
|
||||||
|
if (stack != null)
|
||||||
|
{
|
||||||
|
NBTHelper.checkNBT(stack).getTagCompound().setInteger(Constants.NBT.STORED_LP, lp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,12 @@ package WayofTime.bloodmagic.item.gear;
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.altar.IAltarManipulator;
|
import WayofTime.bloodmagic.api.altar.IAltarManipulator;
|
||||||
|
import WayofTime.bloodmagic.api.altar.IBloodAltar;
|
||||||
|
import WayofTime.bloodmagic.api.iface.IItemLPContainer;
|
||||||
|
import WayofTime.bloodmagic.api.util.helper.ItemHelper.LPContainer;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
import WayofTime.bloodmagic.client.IVariantProvider;
|
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||||
import WayofTime.bloodmagic.tile.TileAltar;
|
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||||
|
@ -24,15 +26,23 @@ import org.apache.commons.lang3.tuple.Pair;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulator, IVariantProvider
|
public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulator, IItemLPContainer, IVariantProvider
|
||||||
{
|
{
|
||||||
/** How much LP per half heart */
|
/**
|
||||||
|
* How much LP per half heart
|
||||||
|
*/
|
||||||
public final int CONVERSION = 100;
|
public final int CONVERSION = 100;
|
||||||
/** Max LP storage */
|
/**
|
||||||
|
* Max LP storage
|
||||||
|
*/
|
||||||
public final int CAPACITY = 10000;
|
public final int CAPACITY = 10000;
|
||||||
/** How often the pack syphons */
|
/**
|
||||||
|
* How often the pack syphons
|
||||||
|
*/
|
||||||
public final int INTERVAL = 20;
|
public final int INTERVAL = 20;
|
||||||
/** How much health is required for the pack to syphon (0 - 1) */
|
/**
|
||||||
|
* How much health is required for the pack to syphon (0 - 1)
|
||||||
|
*/
|
||||||
public final float HEALTHREQ = 0.5f;
|
public final float HEALTHREQ = 0.5f;
|
||||||
|
|
||||||
public ItemPackSelfSacrifice()
|
public ItemPackSelfSacrifice()
|
||||||
|
@ -54,29 +64,17 @@ public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulato
|
||||||
if (position == null)
|
if (position == null)
|
||||||
{
|
{
|
||||||
return super.onItemRightClick(stack, world, player, EnumHand.MAIN_HAND);
|
return super.onItemRightClick(stack, world, player, EnumHand.MAIN_HAND);
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if (position.typeOfHit == RayTraceResult.Type.BLOCK)
|
if (position.typeOfHit == RayTraceResult.Type.BLOCK)
|
||||||
{
|
{
|
||||||
TileEntity tile = world.getTileEntity(position.getBlockPos());
|
TileEntity tile = world.getTileEntity(position.getBlockPos());
|
||||||
|
|
||||||
if (!(tile instanceof TileAltar))
|
if (!(tile instanceof IBloodAltar))
|
||||||
return super.onItemRightClick(stack, world, player, EnumHand.MAIN_HAND);
|
return super.onItemRightClick(stack, world, player, EnumHand.MAIN_HAND);
|
||||||
|
|
||||||
TileAltar altar = (TileAltar) tile;
|
LPContainer.tryAndFillAltar((IBloodAltar) tile, stack, world, position.getBlockPos());
|
||||||
|
|
||||||
if (!altar.isActive())
|
|
||||||
{
|
|
||||||
int amount = this.getStoredLP(stack);
|
|
||||||
|
|
||||||
if (amount > 0)
|
|
||||||
{
|
|
||||||
int filledAmount = altar.fillMainTank(amount);
|
|
||||||
amount -= filledAmount;
|
|
||||||
setStoredLP(stack, amount);
|
|
||||||
world.notifyBlockUpdate(position.getBlockPos(), world.getBlockState(position.getBlockPos()), world.getBlockState(position.getBlockPos()), 3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +92,7 @@ public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulato
|
||||||
if (shouldSyphon & world.getTotalWorldTime() % INTERVAL == 0)
|
if (shouldSyphon & world.getTotalWorldTime() % INTERVAL == 0)
|
||||||
{
|
{
|
||||||
NetworkHelper.getSoulNetwork(player).hurtPlayer(player, 1.0F);
|
NetworkHelper.getSoulNetwork(player).hurtPlayer(player, 1.0F);
|
||||||
addLP(stack, CONVERSION);
|
LPContainer.addLPToItem(stack, CONVERSION, CAPACITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getStoredLP(stack) > CAPACITY)
|
if (getStoredLP(stack) > CAPACITY)
|
||||||
|
@ -117,28 +115,26 @@ public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulato
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addLP(ItemStack stack, int toAdd)
|
// IFillable
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCapacity()
|
||||||
{
|
{
|
||||||
stack = NBTHelper.checkNBT(stack);
|
return this.CAPACITY;
|
||||||
|
|
||||||
if (toAdd < 0)
|
|
||||||
toAdd = 0;
|
|
||||||
|
|
||||||
if (toAdd > CAPACITY)
|
|
||||||
toAdd = CAPACITY;
|
|
||||||
|
|
||||||
setStoredLP(stack, Math.min(getStoredLP(stack) + toAdd, CAPACITY));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStoredLP(ItemStack stack, int lp)
|
|
||||||
{
|
|
||||||
stack = NBTHelper.checkNBT(stack);
|
|
||||||
stack.getTagCompound().setInteger(Constants.NBT.STORED_LP, lp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getStoredLP(ItemStack stack)
|
public int getStoredLP(ItemStack stack)
|
||||||
{
|
{
|
||||||
stack = NBTHelper.checkNBT(stack);
|
return stack != null ? NBTHelper.checkNBT(stack).getTagCompound().getInteger(Constants.NBT.STORED_LP) : 0;
|
||||||
return stack.getTagCompound().getInteger(Constants.NBT.STORED_LP);
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setStoredLP(ItemStack stack, int lp)
|
||||||
|
{
|
||||||
|
if (stack != null)
|
||||||
|
{
|
||||||
|
NBTHelper.checkNBT(stack).getTagCompound().setInteger(Constants.NBT.STORED_LP, lp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class ItemSigilBase extends ItemSigil implements IVariantProvider
|
||||||
|
|
||||||
NBTHelper.checkNBT(stack);
|
NBTHelper.checkNBT(stack);
|
||||||
|
|
||||||
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
|
if (!Strings.isNullOrEmpty(getOwnerName(stack)))
|
||||||
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
||||||
|
|
||||||
super.addInformation(stack, player, tooltip, advanced);
|
super.addInformation(stack, player, tooltip, advanced);
|
||||||
|
|
|
@ -8,19 +8,22 @@ import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.impl.ItemSigilToggleable;
|
import WayofTime.bloodmagic.api.impl.ItemSigilToggleable;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
||||||
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
||||||
import WayofTime.bloodmagic.client.IVariantProvider;
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
import org.apache.commons.lang3.text.WordUtils;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
|
|
||||||
public class ItemSigilToggleableBase extends ItemSigilToggleable implements IVariantProvider
|
public class ItemSigilToggleableBase extends ItemSigilToggleable implements IMeshProvider
|
||||||
{
|
{
|
||||||
protected final String tooltipBase;
|
protected final String tooltipBase;
|
||||||
private final String name;
|
private final String name;
|
||||||
|
@ -28,7 +31,6 @@ public class ItemSigilToggleableBase extends ItemSigilToggleable implements IVar
|
||||||
public ItemSigilToggleableBase(String name, int lpUsed)
|
public ItemSigilToggleableBase(String name, int lpUsed)
|
||||||
{
|
{
|
||||||
super(lpUsed);
|
super(lpUsed);
|
||||||
setToggleable();
|
|
||||||
|
|
||||||
setUnlocalizedName(Constants.Mod.MODID + ".sigil." + name);
|
setUnlocalizedName(Constants.Mod.MODID + ".sigil." + name);
|
||||||
setCreativeTab(BloodMagic.tabBloodMagic);
|
setCreativeTab(BloodMagic.tabBloodMagic);
|
||||||
|
@ -45,16 +47,31 @@ public class ItemSigilToggleableBase extends ItemSigilToggleable implements IVar
|
||||||
super.addInformation(stack, player, tooltip, advanced);
|
super.addInformation(stack, player, tooltip, advanced);
|
||||||
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic." + (getActivated(stack) ? "activated" : "deactivated")));
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic." + (getActivated(stack) ? "activated" : "deactivated")));
|
||||||
|
|
||||||
if (!Strings.isNullOrEmpty(stack.getTagCompound().getString(Constants.NBT.OWNER_UUID)))
|
if (!Strings.isNullOrEmpty(getOwnerName(stack)))
|
||||||
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
tooltip.add(TextHelper.localizeEffect("tooltip.BloodMagic.currentOwner", PlayerHelper.getUsernameFromStack(stack)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Pair<Integer, String>> getVariants()
|
@SideOnly(Side.CLIENT)
|
||||||
|
public ItemMeshDefinition getMeshDefinition()
|
||||||
{
|
{
|
||||||
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
|
return new CustomMeshDefinitionActivatable("ItemSigil" + WordUtils.capitalize(name));
|
||||||
ret.add(new ImmutablePair<Integer, String>(0, "active=false"));
|
}
|
||||||
ret.add(new ImmutablePair<Integer, String>(1, "active=true"));
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public ResourceLocation getCustomLocation()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getVariants()
|
||||||
|
{
|
||||||
|
List<String> ret = new ArrayList<String>();
|
||||||
|
ret.add("active=false");
|
||||||
|
ret.add("active=true");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
|
import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
|
||||||
import WayofTime.bloodmagic.api.livingArmour.StatTracker;
|
import WayofTime.bloodmagic.api.livingArmour.StatTracker;
|
||||||
import WayofTime.bloodmagic.api.ritual.*;
|
import WayofTime.bloodmagic.api.ritual.*;
|
||||||
import WayofTime.bloodmagic.item.ItemUpgradeTome;
|
import WayofTime.bloodmagic.api.util.helper.ItemHelper.LivingUpgrades;
|
||||||
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
|
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
|
||||||
import WayofTime.bloodmagic.livingArmour.LivingArmour;
|
import WayofTime.bloodmagic.livingArmour.LivingArmour;
|
||||||
import WayofTime.bloodmagic.registry.ModItems;
|
import WayofTime.bloodmagic.registry.ModItems;
|
||||||
|
@ -66,8 +66,8 @@ public class RitualUpgradeRemove extends Ritual
|
||||||
String upgradeKey = entry.getKey();
|
String upgradeKey = entry.getKey();
|
||||||
|
|
||||||
ItemStack upgradeStack = new ItemStack(ModItems.upgradeTome);
|
ItemStack upgradeStack = new ItemStack(ModItems.upgradeTome);
|
||||||
ItemUpgradeTome.setKey(upgradeStack, upgradeKey);
|
LivingUpgrades.setKey(upgradeStack, upgradeKey);
|
||||||
ItemUpgradeTome.setLevel(upgradeStack, upgrade.getUpgradeLevel());
|
LivingUpgrades.setLevel(upgradeStack, upgrade.getUpgradeLevel());
|
||||||
|
|
||||||
boolean successful = armour.removeUpgrade(player, upgrade);
|
boolean successful = armour.removeUpgrade(player, upgrade);
|
||||||
|
|
||||||
|
|
|
@ -224,7 +224,6 @@ public class ChatUtil
|
||||||
*/
|
*/
|
||||||
public static class PacketNoSpamChat implements IMessage
|
public static class PacketNoSpamChat implements IMessage
|
||||||
{
|
{
|
||||||
|
|
||||||
private ITextComponent[] chatLines;
|
private ITextComponent[] chatLines;
|
||||||
|
|
||||||
public PacketNoSpamChat()
|
public PacketNoSpamChat()
|
||||||
|
@ -260,7 +259,6 @@ public class ChatUtil
|
||||||
|
|
||||||
public static class Handler implements IMessageHandler<PacketNoSpamChat, IMessage>
|
public static class Handler implements IMessageHandler<PacketNoSpamChat, IMessage>
|
||||||
{
|
{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IMessage onMessage(PacketNoSpamChat message, MessageContext ctx)
|
public IMessage onMessage(PacketNoSpamChat message, MessageContext ctx)
|
||||||
{
|
{
|
||||||
|
|
|
@ -71,10 +71,7 @@ import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
|
||||||
import WayofTime.bloodmagic.api.soul.IDemonWill;
|
import WayofTime.bloodmagic.api.soul.IDemonWill;
|
||||||
import WayofTime.bloodmagic.api.soul.IDemonWillWeapon;
|
import WayofTime.bloodmagic.api.soul.IDemonWillWeapon;
|
||||||
import WayofTime.bloodmagic.api.soul.PlayerDemonWillHandler;
|
import WayofTime.bloodmagic.api.soul.PlayerDemonWillHandler;
|
||||||
import WayofTime.bloodmagic.api.util.helper.BindableHelper;
|
import WayofTime.bloodmagic.api.util.helper.*;
|
||||||
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
|
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
|
||||||
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
|
|
||||||
import WayofTime.bloodmagic.block.BlockAltar;
|
import WayofTime.bloodmagic.block.BlockAltar;
|
||||||
import WayofTime.bloodmagic.demonAura.PosXY;
|
import WayofTime.bloodmagic.demonAura.PosXY;
|
||||||
import WayofTime.bloodmagic.demonAura.WillChunk;
|
import WayofTime.bloodmagic.demonAura.WillChunk;
|
||||||
|
@ -83,7 +80,6 @@ import WayofTime.bloodmagic.entity.projectile.EntitySentientArrow;
|
||||||
import WayofTime.bloodmagic.item.ItemAltarMaker;
|
import WayofTime.bloodmagic.item.ItemAltarMaker;
|
||||||
import WayofTime.bloodmagic.item.ItemExperienceBook;
|
import WayofTime.bloodmagic.item.ItemExperienceBook;
|
||||||
import WayofTime.bloodmagic.item.ItemInscriptionTool;
|
import WayofTime.bloodmagic.item.ItemInscriptionTool;
|
||||||
import WayofTime.bloodmagic.item.ItemUpgradeTome;
|
|
||||||
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
|
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
|
||||||
import WayofTime.bloodmagic.item.armour.ItemSentientArmour;
|
import WayofTime.bloodmagic.item.armour.ItemSentientArmour;
|
||||||
import WayofTime.bloodmagic.item.gear.ItemPackSacrifice;
|
import WayofTime.bloodmagic.item.gear.ItemPackSacrifice;
|
||||||
|
@ -356,7 +352,7 @@ public class EventHandler
|
||||||
int totalLP = Math.round(damageDone * ConfigHandler.sacrificialPackConversion);
|
int totalLP = Math.round(damageDone * ConfigHandler.sacrificialPackConversion);
|
||||||
|
|
||||||
if (shouldSyphon)
|
if (shouldSyphon)
|
||||||
pack.addLP(player.getItemStackFromSlot(EntityEquipmentSlot.CHEST), totalLP);
|
ItemHelper.LPContainer.addLPToItem(player.getItemStackFromSlot(EntityEquipmentSlot.CHEST), totalLP, pack.CAPACITY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -370,8 +366,8 @@ public class EventHandler
|
||||||
{
|
{
|
||||||
ItemStack output = new ItemStack(ModItems.upgradeTome);
|
ItemStack output = new ItemStack(ModItems.upgradeTome);
|
||||||
output = NBTHelper.checkNBT(output);
|
output = NBTHelper.checkNBT(output);
|
||||||
ItemUpgradeTome.setKey(output, Constants.Mod.MODID + ".upgrade.revealing");
|
ItemHelper.LivingUpgrades.setKey(output, Constants.Mod.MODID + ".upgrade.revealing");
|
||||||
ItemUpgradeTome.setLevel(output, 1);
|
ItemHelper.LivingUpgrades.setLevel(output, 1);
|
||||||
event.setCost(1);
|
event.setCost(1);
|
||||||
|
|
||||||
event.setOutput(output);
|
event.setOutput(output);
|
||||||
|
@ -382,16 +378,16 @@ public class EventHandler
|
||||||
|
|
||||||
if (event.getLeft().getItem() == ModItems.upgradeTome && event.getRight().getItem() == ModItems.upgradeTome)
|
if (event.getLeft().getItem() == ModItems.upgradeTome && event.getRight().getItem() == ModItems.upgradeTome)
|
||||||
{
|
{
|
||||||
LivingArmourUpgrade leftUpgrade = ItemUpgradeTome.getUpgrade(event.getLeft());
|
LivingArmourUpgrade leftUpgrade = ItemHelper.LivingUpgrades.getUpgrade(event.getLeft());
|
||||||
if (leftUpgrade != null && ItemUpgradeTome.getKey(event.getLeft()).equals(ItemUpgradeTome.getKey(event.getRight())))
|
if (leftUpgrade != null && ItemHelper.LivingUpgrades.getKey(event.getLeft()).equals(ItemHelper.LivingUpgrades.getKey(event.getRight())))
|
||||||
{
|
{
|
||||||
int leftLevel = ItemUpgradeTome.getLevel(event.getLeft());
|
int leftLevel = ItemHelper.LivingUpgrades.getLevel(event.getLeft());
|
||||||
int rightLevel = ItemUpgradeTome.getLevel(event.getRight());
|
int rightLevel = ItemHelper.LivingUpgrades.getLevel(event.getRight());
|
||||||
|
|
||||||
if (leftLevel == rightLevel && leftLevel < leftUpgrade.getMaxTier() - 1)
|
if (leftLevel == rightLevel && leftLevel < leftUpgrade.getMaxTier() - 1)
|
||||||
{
|
{
|
||||||
ItemStack outputStack = event.getLeft().copy();
|
ItemStack outputStack = event.getLeft().copy();
|
||||||
ItemUpgradeTome.setLevel(outputStack, leftLevel + 1);
|
ItemHelper.LivingUpgrades.setLevel(outputStack, leftLevel + 1);
|
||||||
event.setCost(leftLevel + 2);
|
event.setCost(leftLevel + 2);
|
||||||
|
|
||||||
event.setOutput(outputStack);
|
event.setOutput(outputStack);
|
||||||
|
@ -403,10 +399,10 @@ public class EventHandler
|
||||||
|
|
||||||
if (event.getLeft().getItem() instanceof IUpgradeTrainer && event.getRight().getItem() == ModItems.upgradeTome)
|
if (event.getLeft().getItem() instanceof IUpgradeTrainer && event.getRight().getItem() == ModItems.upgradeTome)
|
||||||
{
|
{
|
||||||
LivingArmourUpgrade rightUpgrade = ItemUpgradeTome.getUpgrade(event.getRight());
|
LivingArmourUpgrade rightUpgrade = ItemHelper.LivingUpgrades.getUpgrade(event.getRight());
|
||||||
if (rightUpgrade != null)
|
if (rightUpgrade != null)
|
||||||
{
|
{
|
||||||
String key = ItemUpgradeTome.getKey(event.getRight());
|
String key = ItemHelper.LivingUpgrades.getKey(event.getRight());
|
||||||
ItemStack outputStack = event.getLeft().copy();
|
ItemStack outputStack = event.getLeft().copy();
|
||||||
List<String> keyList = new ArrayList<String>();
|
List<String> keyList = new ArrayList<String>();
|
||||||
keyList.add(key);
|
keyList.add(key);
|
||||||
|
|
Loading…
Reference in a new issue