package mekanism.common.item;
import java.util.List;
import mekanism.api.Coord4D;
import mekanism.api.EnumColor;
import mekanism.common.Mekanism;
import mekanism.common.security.IOwnerItem;
import mekanism.common.util.ItemDataUtils;
import mekanism.common.util.LangUtils;
import mekanism.common.util.SecurityUtils;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.world.World;
public class ItemPortableTeleporter extends ItemEnergized implements IOwnerItem
{
public ItemPortableTeleporter()
{
super(1000000);
}
@Override
public void addInformation(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag)
{
list.add(SecurityUtils.getOwnerDisplay(entityplayer.getName(), getOwner(itemstack)));
if(getFrequency(itemstack) != null)
{
list.add(EnumColor.INDIGO + LangUtils.localize("gui.frequency") + ": " + EnumColor.GREY + getFrequency(itemstack));
list.add(EnumColor.INDIGO + LangUtils.localize("gui.mode") + ": " + EnumColor.GREY + LangUtils.localize("gui." + (isPrivateMode(itemstack) ? "private" : "public")));
}
super.addInformation(itemstack, entityplayer, list, flag);
}
@Override
public ActionResult<ItemStack> onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer, EnumHand hand)
{
if(!world.isRemote)
{
if(getOwner(itemstack) == null)
{
setOwner(itemstack, entityplayer.getName());
entityplayer.addChatMessage(new TextComponentString(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + LangUtils.localize("gui.nowOwn")));
}
else {
if(SecurityUtils.canAccess(entityplayer, itemstack))
{
entityplayer.openGui(Mekanism.instance, 14, world, hand.ordinal(), 0, 0);
}
else {
SecurityUtils.displayNoAccess(entityplayer);
}
}
}
return new ActionResult(EnumActionResult.SUCCESS, itemstack);
}
public static double calculateEnergyCost(Entity entity, Coord4D coords)
{
if(coords == null)
{
return 0;
}
int neededEnergy = 1000;
if(entity.worldObj.provider.getDimension() != coords.dimensionId)
{
neededEnergy += 10000;
}
int distance = (int)entity.getDistance(coords.xCoord, coords.yCoord, coords.zCoord);
neededEnergy+=(distance*10);
return neededEnergy;
}
@Override
public boolean canSend(ItemStack itemStack)
{
return false;
}
@Override
public String getOwner(ItemStack stack)
{
if(ItemDataUtils.hasData(stack, "owner"))
{
return ItemDataUtils.getString(stack, "owner");
}
return null;
}
@Override
public void setOwner(ItemStack stack, String owner)
{
setFrequency(stack, null);
setPrivateMode(stack, false);
if(owner == null || owner.isEmpty())
{
ItemDataUtils.removeData(stack, "owner");
return;
}
ItemDataUtils.setString(stack, "owner", owner);
}
@Override
public boolean hasOwner(ItemStack stack)
{
return true;
}
public boolean isPrivateMode(ItemStack stack)
{
return ItemDataUtils.getBoolean(stack, "private");
}
public void setPrivateMode(ItemStack stack, boolean isPrivate)
{
ItemDataUtils.setBoolean(stack, "private", isPrivate);
}
public String getFrequency(ItemStack stack)
{
if(ItemDataUtils.hasData(stack, "frequency"))
{
return ItemDataUtils.getString(stack, "frequency");
}
return null;
}
public void setFrequency(ItemStack stack, String frequency)
{
if(frequency == null || frequency.isEmpty())
{
ItemDataUtils.removeData(stack, "frequency");
return;
}
ItemDataUtils.setString(stack, "frequency", frequency);
}
}