Files
refinedstorage/src/main/java/storagecraft/item/ItemWirelessGrid.java
2015-12-29 12:04:22 +01:00

134 lines
4.0 KiB
Java
Executable File

package storagecraft.item;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import storagecraft.StorageCraft;
import storagecraft.StorageCraftGUI;
import storagecraft.block.EnumGridType;
import storagecraft.tile.TileGrid;
import storagecraft.tile.TileWirelessTransmitter;
import java.util.List;
public class ItemWirelessGrid extends ItemBase
{
public static final String NBT_WIRELESS_TRANSMITTER_X = "WirelessTransmitterX";
public static final String NBT_WIRELESS_TRANSMITTER_Y = "WirelessTransmitterY";
public static final String NBT_WIRELESS_TRANSMITTER_Z = "WirelessTransmitterZ";
public ItemWirelessGrid()
{
super("wireless_grid");
setMaxStackSize(1);
setHasSubtypes(true);
setMaxDamage(0);
}
@Override
public void getSubItems(Item item, CreativeTabs tab, List list)
{
for (int i = 0; i < 2; ++i)
{
list.add(new ItemStack(item, 1, i));
}
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean b)
{
if (isValid(stack))
{
list.add(StatCollector.translateToLocalFormatted("misc.storagecraft:wireless_grid.tooltip", getX(stack), getY(stack), getZ(stack)));
}
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
if (!world.isRemote)
{
if (isValid(stack))
{
if (isInRange(stack, player))
{
int x = getX(stack);
int y = getY(stack);
int z = getZ(stack);
TileEntity tile = world.getTileEntity(new BlockPos(x, y, z));
if (tile instanceof TileWirelessTransmitter)
{
TileWirelessTransmitter wirelessTransmitter = (TileWirelessTransmitter) tile;
if (wirelessTransmitter.isWorking())
{
TileGrid grid = wirelessTransmitter.getGrid(stack.getItemDamage() == 1 ? EnumGridType.CRAFTING : EnumGridType.NORMAL);
if (grid == null)
{
player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("misc.storagecraft:wireless_grid.no_grid." + stack.getItemDamage())));
} else
{
player.openGui(StorageCraft.INSTANCE, StorageCraftGUI.GRID, world, grid.getPos().getX(), grid.getPos().getY(), grid.getPos().getZ());
}
} else
{
player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("misc.storagecraft:wireless_grid.not_working")));
}
} else
{
player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("misc.storagecraft:wireless_grid.not_found")));
}
} else
{
player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("misc.storagecraft:wireless_grid.out_of_range")));
}
} else
{
player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("misc.storagecraft:wireless_grid.not_set." + stack.getItemDamage())));
}
}
return stack;
}
public boolean isCrafting(ItemStack stack)
{
return stack.getItemDamage() == 1;
}
public int getX(ItemStack stack)
{
return stack.getTagCompound().getInteger(NBT_WIRELESS_TRANSMITTER_X);
}
public int getY(ItemStack stack)
{
return stack.getTagCompound().getInteger(NBT_WIRELESS_TRANSMITTER_Y);
}
public int getZ(ItemStack stack)
{
return stack.getTagCompound().getInteger(NBT_WIRELESS_TRANSMITTER_Z);
}
public boolean isInRange(ItemStack stack, EntityPlayer player)
{
return (int) Math.sqrt(Math.pow(getX(stack) - player.posX, 2) + Math.pow(getY(stack) - player.posY, 2) + Math.pow(getZ(stack) - player.posZ, 2)) < 64;
}
public boolean isValid(ItemStack stack)
{
return stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_WIRELESS_TRANSMITTER_X) && stack.getTagCompound().hasKey(NBT_WIRELESS_TRANSMITTER_Y) && stack.getTagCompound().hasKey(NBT_WIRELESS_TRANSMITTER_Z);
}
}