blob: 981cd7fa7c4b08a7aee03dd7ce328952fee1b349 [file] [log] [blame] [raw]
package com.gildedgames.the_aether.items;
import com.gildedgames.the_aether.Aether;
import com.gildedgames.the_aether.api.AetherAPI;
import com.gildedgames.the_aether.api.moa.AetherMoaType;
import com.gildedgames.the_aether.entities.passive.mountable.Moa;
import com.gildedgames.the_aether.registry.creative_tabs.AetherCreativeTabs;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.List;
public class MoaEgg extends Item {
@SideOnly(Side.CLIENT)
private IIcon spotIcon;
public MoaEgg() {
this.setMaxStackSize(1);
this.setCreativeTab(AetherCreativeTabs.misc);
this.setTextureName(Aether.find("misc/egg/moa_egg"));
}
@Override
@SideOnly(Side.CLIENT)
public boolean requiresMultipleRenderPasses() {
return true;
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamageForRenderPass(int p_77618_1_, int p_77618_2_) {
return p_77618_2_ > 0 ? this.spotIcon : super.getIconFromDamageForRenderPass(p_77618_1_, p_77618_2_);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister registry) {
super.registerIcons(registry);
this.spotIcon = registry.registerIcon(Aether.find("misc/egg/moa_egg_spot"));
}
@Override
public CreativeTabs[] getCreativeTabs() {
return CreativeTabs.creativeTabArray;
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int facing, float hitX, float hitY, float hitZ) {
if (player.capabilities.isCreativeMode) {
Moa moa = new Moa(world, AetherAPI.instance().getMoaType(stack.getTagCompound().getInteger("typeId")));
moa.setPositionAndRotation(x, y + 1, z, 1F, 1F);
moa.setPlayerGrown(true);
if (!world.isRemote) {
world.spawnEntityInWorld(moa);
}
return true;
}
return super.onItemUse(stack, player, world, x, y, z, facing, hitX, hitY, hitZ);
}
@Override
@SuppressWarnings({"unchecked", "rawtypes"})
public void getSubItems(Item item, CreativeTabs tab, List subItems) {
for (int moaTypeSize = 0; moaTypeSize < AetherAPI.instance().getMoaTypeSize(); ++moaTypeSize) {
ItemStack stack = new ItemStack(this);
NBTTagCompound compound = new NBTTagCompound();
AetherMoaType moaType = AetherAPI.instance().getMoaType(moaTypeSize);
if (moaType.getCreativeTab() == tab || tab == null || tab == CreativeTabs.tabAllSearch) {
compound.setInteger("typeId", moaTypeSize);
stack.setTagCompound(compound);
subItems.add(stack);
}
}
}
@Override
public boolean getShareTag() {
return true;
}
@Override
public int getColorFromItemStack(ItemStack stack, int renderPass) {
NBTTagCompound tag = stack.getTagCompound();
if (tag != null) {
AetherMoaType moaType = AetherAPI.instance().getMoaType(tag.getInteger("typeId"));
return moaType.getMoaEggColor();
}
return AetherAPI.instance().getMoaType(0).getMoaEggColor();
}
public AetherMoaType getMoaTypeFromItemStack(ItemStack stack) {
NBTTagCompound tag = stack.getTagCompound();
if (tag != null) {
AetherMoaType moaType = AetherAPI.instance().getMoaType(tag.getInteger("typeId"));
return moaType;
}
return AetherAPI.instance().getMoaType(0);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
NBTTagCompound tag = stack.getTagCompound();
if (tag != null && stack.getTagCompound().hasKey("typeId")) {
AetherMoaType moaType = AetherAPI.instance().getMoaType(tag.getInteger("typeId"));
return "item." + moaType.getRegistryName().getResourcePath().replace(" ", "_").toLowerCase() + "_moa_egg.name";
}
return super.getUnlocalizedName();
}
@Override
public String getItemStackDisplayName(ItemStack stack) {
return super.getItemStackDisplayName(stack).replace(".name", "");
}
public static ItemStack getStackFromType(AetherMoaType type) {
ItemStack stack = new ItemStack(AetherItems.moa_egg);
NBTTagCompound tag = new NBTTagCompound();
tag.setInteger("typeId", AetherAPI.instance().getMoaTypeId(type));
stack.setTagCompound(tag);
return stack;
}
}