BloodMagic/src/main/java/WayofTime/bloodmagic/item/ItemBloodOrb.java

131 lines
4.4 KiB
Java
Raw Normal View History

package WayofTime.bloodmagic.item;
import WayofTime.bloodmagic.BloodMagic;
2017-08-15 21:30:48 -07:00
import WayofTime.bloodmagic.api.iface.IBindable;
import WayofTime.bloodmagic.api.orb.BloodOrb;
import WayofTime.bloodmagic.api.orb.IBloodOrb;
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
import WayofTime.bloodmagic.api.util.helper.PlayerHelper;
import WayofTime.bloodmagic.core.RegistrarBloodMagic;
2017-08-15 21:30:48 -07:00
import WayofTime.bloodmagic.util.helper.TextHelper;
import com.google.common.base.Strings;
2017-08-15 20:21:54 -07:00
import net.minecraft.client.util.ITooltipFlag;
2016-03-18 16:50:33 -04:00
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.*;
2016-03-18 16:50:33 -04:00
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable;
2017-08-15 21:30:48 -07:00
import java.util.List;
2017-08-15 21:30:48 -07:00
public class ItemBloodOrb extends ItemBindableBase implements IBloodOrb, IBindable {
public ItemBloodOrb() {
setUnlocalizedName(BloodMagic.MODID + ".orb");
this.setMaxDamage(0);
setHasSubtypes(true);
}
@Override
2017-08-15 21:30:48 -07:00
public String getUnlocalizedName(ItemStack stack) {
BloodOrb orb = getOrb(stack);
if (orb == null)
return super.getUnlocalizedName(stack);
return super.getUnlocalizedName(stack) + "." + orb.getName();
}
@Override
2017-08-15 21:30:48 -07:00
public void getSubItems(CreativeTabs creativeTab, NonNullList<ItemStack> list) {
if (!isInCreativeTab(creativeTab))
return;
for (BloodOrb orb : RegistrarBloodMagic.BLOOD_ORBS) {
ItemStack orbStack = new ItemStack(this);
NBTTagCompound tag = new NBTTagCompound();
tag.setString("orb", orb.getRegistryName().toString());
orbStack.setTagCompound(tag);
list.add(orbStack);
}
}
@Override
2017-08-15 21:30:48 -07:00
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) {
2017-01-01 22:26:42 -08:00
ItemStack stack = player.getHeldItem(hand);
BloodOrb orb = getOrb(stack);
if (orb == null)
return ActionResult.newResult(EnumActionResult.FAIL, stack);
if (world == null)
2017-01-01 22:26:42 -08:00
return super.onItemRightClick(world, player, hand);
2016-04-24 10:06:28 -07:00
world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F);
if (PlayerHelper.isFakePlayer(player))
2017-01-01 22:26:42 -08:00
return super.onItemRightClick(world, player, hand);
2017-08-15 21:30:48 -07:00
if (!stack.hasTagCompound()) {
2017-01-01 22:26:42 -08:00
return super.onItemRightClick(world, player, hand);
2016-02-07 18:21:28 -05:00
}
if (Strings.isNullOrEmpty(getOwnerUUID(stack)))
2017-01-01 22:26:42 -08:00
return super.onItemRightClick(world, player, hand);
if (world.isRemote)
2017-01-01 22:26:42 -08:00
return super.onItemRightClick(world, player, hand);
if (getOwnerUUID(stack).equals(PlayerHelper.getUsernameFromPlayer(player)))
NetworkHelper.setMaxOrb(NetworkHelper.getSoulNetwork(getOwnerUUID(stack)), orb.getTier());
NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).add(200, orb.getCapacity());
NetworkHelper.getSoulNetwork(player).hurtPlayer(player, 200);
2017-01-01 22:26:42 -08:00
return super.onItemRightClick(world, player, hand);
}
@Override
@SideOnly(Side.CLIENT)
2017-08-15 21:30:48 -07:00
public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag flag) {
2017-01-02 01:18:29 -08:00
tooltip.add(TextHelper.localizeEffect("tooltip.bloodmagic.orb.desc"));
BloodOrb orb = getOrb(stack);
2017-08-15 20:21:54 -07:00
if (flag.isAdvanced() && orb != null)
tooltip.add(TextHelper.localizeEffect("tooltip.bloodmagic.orb.owner", orb.getRegistryName().getResourceDomain()));
2017-08-15 20:21:54 -07:00
super.addInformation(stack, world, tooltip, flag);
}
@Override
2017-08-15 21:30:48 -07:00
public ItemStack getContainerItem(ItemStack stack) {
return stack.copy();
}
@Override
2017-08-15 21:30:48 -07:00
public boolean hasContainerItem(ItemStack stack) {
return true;
}
// IBindable
@Override
2017-08-15 21:30:48 -07:00
public boolean onBind(EntityPlayer player, ItemStack stack) {
return true;
}
// IBloodOrb
@Nullable
@Override
public BloodOrb getOrb(ItemStack stack) {
if (!stack.hasTagCompound())
return null;
ResourceLocation id = new ResourceLocation(stack.getTagCompound().getString("orb"));
return RegistrarBloodMagic.BLOOD_ORBS.getValue(id);
}
}