134 lines
4.0 KiB
Java
Executable File
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);
|
|
}
|
|
}
|