203 lines
7.1 KiB
Java
203 lines
7.1 KiB
Java
package com.bernard.torch.items;
|
|
|
|
import baubles.api.BaubleType;
|
|
import baubles.api.IBauble;
|
|
import com.bernard.torch.api.ITorchRechargable;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import java.util.List;
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
|
import net.minecraft.creativetab.CreativeTabs;
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.init.Blocks;
|
|
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;
|
|
|
|
|
|
|
|
|
|
public class TorchAmulet
|
|
extends Item
|
|
implements IBauble, ITorchRechargable
|
|
{
|
|
public static int yRelative = 0;
|
|
|
|
public static final int size = 4;
|
|
public static final int ecart = 5;
|
|
public static final int maxYRelative = 5;
|
|
public static final int minYRelative = -5;
|
|
public static final int[] maxTorchesFromMeta = { 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144 };
|
|
|
|
public static String[] names = { "torch_amulet", "coal_torch_amulet", "iron_torch_amulet", "quartz_torch_amulet", "gold_torch_amulet", "redstone_torch_amulet", "lapis_torch_amulet", "diamond_torch_amulet", "emerald_torch_amulet" };
|
|
|
|
|
|
public static IIcon[] textures = new IIcon[names.length];
|
|
|
|
public TorchAmulet() {
|
|
setMaxStackSize(1);
|
|
setHasSubtypes(true);
|
|
}
|
|
|
|
public void addInformation(ItemStack itemstack, EntityPlayer player, List l, boolean flag)
|
|
{
|
|
super.addInformation(itemstack, player, l, flag);
|
|
if ((itemstack.stackTagCompound == null) || (!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) {
|
|
itemstack.stackTagCompound = new NBTTagCompound();
|
|
int meta = itemstack.getMetadata();
|
|
if (meta >= maxTorchesFromMeta.length)
|
|
meta = 0;
|
|
itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]);
|
|
}
|
|
l.add("Torches left :" + itemstack.stackTagCompound.getInteger("TorchesLeft"));
|
|
}
|
|
|
|
|
|
public int getMetadata(int meta)
|
|
{
|
|
return meta;
|
|
}
|
|
|
|
public String getUnlocalizedName(ItemStack stack)
|
|
{
|
|
int meta = stack.getMetadata();
|
|
if ((meta < 0) || (meta >= names.length))
|
|
meta = 0;
|
|
return names[meta];
|
|
}
|
|
|
|
public void registerIcons(IIconRegister iconregister) {
|
|
for (int i = 0; i < names.length; i++)
|
|
{
|
|
textures[i] = iconregister.registerIcon("torch_mod:" + names[i]);
|
|
}
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public void getSubItems(Item i, CreativeTabs creativeTabs, List list)
|
|
{
|
|
for (int metadata = 0; metadata < names.length; metadata++)
|
|
{
|
|
list.add(new ItemStack(i, 1, metadata));
|
|
}
|
|
}
|
|
|
|
public IIcon getIconFromDamage(int meta)
|
|
{
|
|
if ((meta < 0) || (meta >= names.length))
|
|
meta = 0;
|
|
return textures[meta];
|
|
}
|
|
|
|
public void onCreated(ItemStack itemstack, World w, EntityPlayer pl)
|
|
{
|
|
super.onCreated(itemstack, w, pl);
|
|
if ((itemstack.stackTagCompound == null) ||
|
|
(!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) {
|
|
itemstack.stackTagCompound = new NBTTagCompound();
|
|
int meta = itemstack.getMetadata();
|
|
if (meta >= maxTorchesFromMeta.length)
|
|
meta = 0;
|
|
itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]);
|
|
}
|
|
}
|
|
|
|
|
|
public BaubleType getBaubleType(ItemStack itemstack)
|
|
{
|
|
return BaubleType.AMULET;
|
|
}
|
|
|
|
public void onWornTick(ItemStack itemstack, EntityLivingBase player)
|
|
{
|
|
if ((itemstack.stackTagCompound == null) ||
|
|
(!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) {
|
|
itemstack.stackTagCompound = new NBTTagCompound();
|
|
int meta = itemstack.getMetadata();
|
|
if (meta >= maxTorchesFromMeta.length)
|
|
meta = 0;
|
|
itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]);
|
|
}
|
|
if (itemstack.stackTagCompound.getInteger("TorchesLeft") > 0) {
|
|
int modX = (int)player.posX - (int)player.posX % 5;
|
|
int modZ = (int)player.posZ - (int)player.posZ % 5;
|
|
int y = (int)player.posY;
|
|
for (int x = -20; x <= 20; x += 5) {
|
|
for (int z = -20; z <= 20; z += 5) {
|
|
if (placeTorch(player.worldObj, modX + x, y + yRelative, modZ + z)) {
|
|
itemstack.stackTagCompound.setInteger("TorchesLeft", itemstack.stackTagCompound.getInteger("TorchesLeft") - 1);
|
|
}
|
|
}
|
|
}
|
|
yRelative = yRelative == 4 ? -5 : yRelative + 1;
|
|
}
|
|
}
|
|
|
|
public boolean placeTorch(World w, int x, int y, int z) {
|
|
if ((Blocks.torch.canPlaceBlockAt(w, x, y, z)) && (w.isAirBlock(x, y, z))) {
|
|
w.setBlock(x, y, z, Blocks.torch);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void onEquipped(ItemStack itemstack, EntityLivingBase player)
|
|
{
|
|
if ((itemstack.stackTagCompound == null) ||
|
|
(!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) {
|
|
itemstack.stackTagCompound = new NBTTagCompound();
|
|
int meta = itemstack.getMetadata();
|
|
if (meta >= maxTorchesFromMeta.length)
|
|
meta = 0;
|
|
itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void onUnequipped(ItemStack itemstack, EntityLivingBase player) {}
|
|
|
|
|
|
public boolean canEquip(ItemStack itemstack, EntityLivingBase player)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public boolean canUnequip(ItemStack itemstack, EntityLivingBase player)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public void recharge(ItemStack itemstack, int lux)
|
|
{
|
|
int meta = itemstack.getMetadata();
|
|
if ((itemstack.stackTagCompound == null) ||
|
|
(!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) {
|
|
itemstack.stackTagCompound = new NBTTagCompound();
|
|
if (meta >= maxTorchesFromMeta.length)
|
|
meta = 0;
|
|
itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]);
|
|
}
|
|
itemstack.stackTagCompound.setInteger("TorchesLeft", Math.min(itemstack.stackTagCompound.getInteger("TorchesLeft") + lux, maxTorchesFromMeta[meta]));
|
|
}
|
|
|
|
public int getLuxNedded(ItemStack itemstack)
|
|
{
|
|
int meta = itemstack.getMetadata();
|
|
if ((itemstack.stackTagCompound == null) ||
|
|
(!itemstack.stackTagCompound.hasKey("TorchesLeft", 3))) {
|
|
itemstack.stackTagCompound = new NBTTagCompound();
|
|
if (meta >= maxTorchesFromMeta.length)
|
|
meta = 0;
|
|
itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]);
|
|
}
|
|
return maxTorchesFromMeta[meta] - itemstack.stackTagCompound.getInteger("TorchesLeft");
|
|
}
|
|
}
|
|
|
|
|