package com.jared.mysticaltrinkets.api;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemSpade;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
public class LeveledShovel extends ItemSpade {
private int level;
private int xp = 0;
private int[] levelXP = { 100, 300, 500, 1000 };
public LeveledShovel(ToolMaterial material, int level0XP, int level1XP, int level2XP, int level3XP) {
super(material);
this.setMaxStackSize(1);
this.levelXP[0] = level0XP;
this.levelXP[1] = level1XP;
this.levelXP[2] = level2XP;
this.levelXP[3] = level3XP;
this.bFull3D = true;
}
public void onUpdate(ItemStack itemstack, World world, Entity entity, int par4, boolean par5) {
NBTTagCompound nbt = itemstack.getTagCompound();
if (nbt != null) {
if (!nbt.hasKey("mysticalMaxXP") || nbt.getInteger("mysticalMaxXP") < levelXP[0]) {
nbt.setInteger("mysticalMaxXP", levelXP[0]);
}
if (!nbt.hasKey("mysticalLevel")) {
nbt.setInteger("mysticalLevel", 0);
}
if (!nbt.hasKey("mysticalXP")) {
nbt.setInteger("mysticalXP", 0);
}
if (nbt.getInteger("mysticalXP") < levelXP[0] && !nbt.getBoolean("level0")) {
nbt.setInteger("mysticalMaxXP", levelXP[0]);
nbt.setInteger("mysticalLevel", 0);
nbt.setBoolean("level0", true);
nbt.setBoolean("level1", false);
nbt.setBoolean("level2", false);
nbt.setBoolean("level3", false);
nbt.setBoolean("level4", false);
itemstack.damageItem(-25, (EntityLivingBase) entity);
}
if (nbt.getInteger("mysticalXP") > levelXP[0] && !nbt.getBoolean("level1") && nbt.getBoolean("level0")) {
nbt.setInteger("mysticalLevel", 1);
nbt.setInteger("mysticalMaxXP", levelXP[1]);
nbt.setBoolean("level0", true);
nbt.setBoolean("level1", true);
nbt.setBoolean("level2", false);
nbt.setBoolean("level3", false);
nbt.setBoolean("level4", false);
if (world.rand.nextInt(2) == 0) {
itemstack.addEnchantment(Enchantment.efficiency, 1);
} else {
itemstack.addEnchantment(Enchantment.unbreaking, 1);
}
itemstack.damageItem(-50, (EntityLivingBase) entity);
}
if (nbt.getInteger("mysticalXP") > levelXP[1] && !nbt.getBoolean("level2") && nbt.getBoolean("level1")) {
nbt.setInteger("mysticalLevel", 2);
nbt.setInteger("mysticalMaxXP", levelXP[2]);
nbt.setBoolean("level0", true);
nbt.setBoolean("level1", true);
nbt.setBoolean("level2", true);
nbt.setBoolean("level3", false);
nbt.setBoolean("level4", false);
if (world.rand.nextInt(2) == 0) {
itemstack.addEnchantment(Enchantment.efficiency, 2);
} else {
itemstack.addEnchantment(Enchantment.unbreaking, 2);
}
itemstack.damageItem(-75, (EntityLivingBase) entity);
}
if (nbt.getInteger("mysticalXP") > levelXP[2] && !nbt.getBoolean("level3") && nbt.getBoolean("level2")) {
nbt.setInteger("mysticalLevel", 3);
nbt.setInteger("mysticalMaxXP", levelXP[3]);
nbt.setBoolean("level0", true);
nbt.setBoolean("level1", true);
nbt.setBoolean("level2", true);
nbt.setBoolean("level3", true);
nbt.setBoolean("level4", false);
if (world.rand.nextInt(2) == 0) {
itemstack.addEnchantment(Enchantment.efficiency, 3);
} else {
itemstack.addEnchantment(Enchantment.unbreaking, 3);
}
itemstack.damageItem(-100, (EntityLivingBase) entity);
}
if (nbt.getInteger("mysticalXP") > levelXP[3] + 1 && !nbt.getBoolean("level4") && nbt.getBoolean("level3")) {
nbt.setInteger("mysticalLevel", 4);
nbt.setInteger("mysticalMaxXP", levelXP[3]);
nbt.setBoolean("level0", true);
nbt.setBoolean("level1", true);
nbt.setBoolean("level2", true);
nbt.setBoolean("level3", true);
nbt.setBoolean("level4", true);
if (world.rand.nextInt(2) == 0) {
itemstack.addEnchantment(Enchantment.silkTouch, 1);
}
itemstack.damageItem(-200, (EntityLivingBase) entity);
}
}
}
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean par4) {
NBTTagCompound nbt = itemstack.getTagCompound();
if (nbt != null) {
if (!nbt.hasKey("mysticalMaxXP") || nbt.getInteger("mysticalMaxXP") < levelXP[0]) {
nbt.setInteger("mysticalMaxXP", levelXP[0]);
}
if (!nbt.hasKey("mysticalLevel")) {
nbt.setInteger("mysticalLevel", 0);
}
if (!nbt.hasKey("mysticalXP")) {
nbt.setInteger("mysticalXP", 0);
}
list.add(EnumChatFormatting.DARK_AQUA + "Level: " + nbt.getInteger("mysticalLevel"));
list.add(EnumChatFormatting.LIGHT_PURPLE + "XP: " + nbt.getInteger("mysticalXP") + "/" + nbt.getInteger("mysticalMaxXP"));
if(!(nbt.getInteger("mysticalLevel") <=3)){
list.remove(EnumChatFormatting.DARK_AQUA + "Level: " + nbt.getInteger("mysticalLevel"));
list.remove(EnumChatFormatting.LIGHT_PURPLE + "XP: " + nbt.getInteger("mysticalXP") + "/" + nbt.getInteger("mysticalMaxXP"));
list.add(EnumChatFormatting.DARK_AQUA + "Max Level");
}
}
}
public boolean onBlockDestroyed(ItemStack itemstack, World world, Block block, int x, int y, int z, EntityLivingBase entity) {
int i = 1;
NBTTagCompound nbt = itemstack.getTagCompound();
if (nbt != null) {
if (nbt.getInteger("mysticalLevel") < 4) {
nbt.setInteger("mysticalXP", nbt.getInteger("mysticalXP") + world.rand.nextInt(4)+1);
}
}
itemstack.damageItem(i, entity);
return true;
}
}