Package thaumic.tinkerer.common.item.kami

Source Code of thaumic.tinkerer.common.item.kami.ItemSkyPearl

/**
* This class was created by <Vazkii>. It's distributed as
* part of the ThaumicTinkerer Mod.
*
* ThaumicTinkerer is Open Source and distributed under a
* Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License
* (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB)
*
* ThaumicTinkerer is a Derivative Work on Thaumcraft 4.
* Thaumcraft 4 (c) Azanor 2012
* (http://www.minecraftforum.net/topic/1585216-)
*
* File Created @ [Jan 10, 2014, 5:26:45 PM (GMT)]
*/
package thaumic.tinkerer.common.item.kami;

import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.codechicken.lib.vec.Vector3;
import thaumic.tinkerer.client.core.proxy.TTClientProxy;
import thaumic.tinkerer.common.ThaumicTinkerer;
import thaumic.tinkerer.common.block.kami.BlockWarpGate;
import thaumic.tinkerer.common.core.helper.ItemNBTHelper;
import thaumic.tinkerer.common.core.helper.MiscHelper;
import thaumic.tinkerer.common.lib.LibItemNames;
import thaumic.tinkerer.common.lib.LibResearch;
import thaumic.tinkerer.common.registry.ItemKamiBase;
import thaumic.tinkerer.common.registry.ThaumicTinkererInfusionRecipe;
import thaumic.tinkerer.common.registry.ThaumicTinkererRecipe;
import thaumic.tinkerer.common.research.IRegisterableResearch;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;

public class ItemSkyPearl extends ItemKamiBase {

  public static final String TAG_X = "x";
  public static final String TAG_Y = "y";
  public static final String TAG_Z = "z";
  public static final String TAG_DIM = "dim";

  public ItemSkyPearl() {
    super();
    setMaxStackSize(1);
  }

  @Override
  public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) {
    Block block = par3World.getBlock(par4, par5, par6);
    if (block == ThaumicTinkerer.registry.getFirstBlockFromClass(BlockWarpGate.class) && !isAttuned(par1ItemStack)) {
      setValues(par1ItemStack, par4, par5, par6, par2EntityPlayer.dimension);
      par3World.playSoundAtEntity(par2EntityPlayer, "random.orb", 0.3F, 0.1F);
    }

    return true;
  }

  @Override
  public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {
    if (par3EntityPlayer.isSneaking() && isAttuned(par1ItemStack)) {
      par2World.playSoundAtEntity(par3EntityPlayer, "random.orb", 0.3F, 0.1F);
      ItemNBTHelper.setInt(par1ItemStack, TAG_Y, -1);
    }

    return par1ItemStack;
  }

  @Override
  public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
    addInfo(par1ItemStack, par2EntityPlayer.dimension, Vector3.fromEntityCenter(par2EntityPlayer), par3List, false);
  }

  public static void addInfo(ItemStack stack, int dim, Vector3 pos, List<String> list, boolean simpleMode) {
    if (isAttuned(stack)) {
      int x = getX(stack);
      int y = getY(stack);
      int z = getZ(stack);
      list.add("X: " + x);
      if (!simpleMode)
        list.add("Y: " + y);
      list.add("Z: " + z);
      if (getDim(stack) != dim) {
        if (!simpleMode)
          list.add(EnumChatFormatting.RED + StatCollector.translateToLocal("ttmisc.differentDim"));
      } else
        list.add(EnumChatFormatting.BLUE + StatCollector.translateToLocal("ttmisc.distance") + ": " + new BigDecimal(MiscHelper.pointDistanceSpace(x, simpleMode ? 0 : y, z, pos.x, simpleMode ? 0 : pos.y, pos.z)).setScale(2, RoundingMode.UP).toString() + "m");
    }
  }

  @Override
  public boolean hasEffect(ItemStack par1ItemStack) {
    return isAttuned(par1ItemStack);
  }

  public static void setValues(ItemStack stack, int x, int y, int z, int dim) {
    ItemNBTHelper.setInt(stack, TAG_X, x);
    ItemNBTHelper.setInt(stack, TAG_Y, y);
    ItemNBTHelper.setInt(stack, TAG_Z, z);
    ItemNBTHelper.setInt(stack, TAG_DIM, dim);
  }

  public static boolean isAttuned(ItemStack stack) {
    return ItemNBTHelper.detectNBT(stack) && ItemNBTHelper.getInt(stack, TAG_Y, -1) != -1;
  }

  public static int getX(ItemStack stack) {
    if (!isAttuned(stack))
      return 0;

    return ItemNBTHelper.getInt(stack, TAG_X, 0);
  }

  public static int getY(ItemStack stack) {
    if (!isAttuned(stack))
      return 0;

    return ItemNBTHelper.getInt(stack, TAG_Y, 0);
  }

  public static int getZ(ItemStack stack) {
    if (!isAttuned(stack))
      return 0;

    return ItemNBTHelper.getInt(stack, TAG_Z, 0);
  }

  public static int getDim(ItemStack stack) {
    if (!isAttuned(stack))
      return 0;

    return ItemNBTHelper.getInt(stack, TAG_DIM, 0);
  }

  @Override
  public EnumRarity getRarity(ItemStack par1ItemStack) {
    return TTClientProxy.kamiRarity;
  }

  @Override
  public String getItemName() {
    return LibItemNames.SKY_PEARL;
  }

  @Override
  public IRegisterableResearch getResearchItem() {
    return null;
  }

  @Override
  public ThaumicTinkererRecipe getRecipeItem() {
    return new ThaumicTinkererInfusionRecipe(LibResearch.KEY_SKY_PEARL, LibResearch.KEY_WARP_GATE, new ItemStack(ThaumicTinkerer.registry.getFirstItemFromClass(ItemSkyPearl.class), 2), 6, new AspectList().add(Aspect.TRAVEL, 32).add(Aspect.ELDRITCH, 32).add(Aspect.FLIGHT, 32).add(Aspect.AIR, 16), new ItemStack(Items.ender_pearl),
        new ItemStack(ThaumicTinkerer.registry.getFirstItemFromClass(ItemKamiResource.class)), new ItemStack(ThaumicTinkerer.registry.getFirstItemFromClass(ItemKamiResource.class), 1, 7), new ItemStack(Blocks.lapis_block), new ItemStack(Items.diamond));

  }
}
TOP

Related Classes of thaumic.tinkerer.common.item.kami.ItemSkyPearl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.