package mods.ocminecart.common.items;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import mods.ocminecart.OCMinecart;
import mods.ocminecart.common.assemble.util.TooltipUtil;
import mods.ocminecart.common.entityextend.RemoteExtenderRegister;
import mods.ocminecart.common.items.interfaces.ItemEntityInteract;
import mods.ocminecart.network.ModNetwork;
import mods.ocminecart.network.message.ItemUseMessage;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.settings.GameSettings;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityMinecart;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import org.lwjgl.input.Keyboard;
import java.util.List;
public class ItemRemoteAnalyzer extends Item implements ItemEntityInteract{
public ItemRemoteAnalyzer(){
super();
this.setMaxStackSize(1);
this.setTextureName(OCMinecart.MODID+":remoteanalyzer");
this.setUnlocalizedName(OCMinecart.MODID+".remoteanalyzer");
}
public boolean doesSneakBypassUse(World world, int x, int y, int z, EntityPlayer player){ return true; }
//Called in the EventHandler
public boolean onEntityClick(EntityPlayer p, Entity e, ItemStack s, Type t){
if(e instanceof EntityMinecart){
if(p.worldObj.isRemote) return true;
if(RemoteExtenderRegister.hasRemote((EntityMinecart) e) &&
RemoteExtenderRegister.getExtender((EntityMinecart) e).isEnabled()){
if(t==Type.RIGHT_CLICK){
RemoteExtenderRegister.getExtender((EntityMinecart) e).onAnalyzeModule(p);
NBTTagCompound usedat = new NBTTagCompound();
usedat.setString("address", RemoteExtenderRegister.getExtender((EntityMinecart) e).getAddress());
ModNetwork.sendToNearPlayers(new ItemUseMessage(1,p.getEntityId(),usedat), e.posX, e.posY, e.posZ, e.worldObj);
}
else if(t==Type.LEFT_CLICK){
if(RemoteExtenderRegister.getExtender((EntityMinecart) e).editableByPlayer(p,false))
p.openGui(OCMinecart.instance, 2, e.worldObj, e.getEntityId(), -10, 0);
else{
NBTTagCompound usedat = new NBTTagCompound();
usedat.setInteger("type", 1);
ModNetwork.channel.sendTo(new ItemUseMessage(1,p.getEntityId(),usedat), (EntityPlayerMP) p);
}
}
}
else if(RemoteExtenderRegister.hasRemote((EntityMinecart) e))
p.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.LIGHT_PURPLE+"No Module found."));
else
p.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.LIGHT_PURPLE+"No Module installable."));
return true;
}
return false;
}
@SideOnly(Side.CLIENT)
public void onMPUsage(EntityPlayer p, NBTTagCompound data){
if(p!=Minecraft.getMinecraft().thePlayer) return;
if(data.hasKey("type") && data.getInteger("type")==1){
p.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED+
StatCollector.translateToLocal("chat."+OCMinecart.MODID+".owneronly")));
}
else if(p.isSneaking() && Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){
GuiScreen.setClipboardString(data.getString("address"));
p.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("chat."+OCMinecart.MODID+".clipboard")));
}
p.swingItem();
}
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean adv) {
if(!Keyboard.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode())){
String key = GameSettings.getKeyDisplayString(Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode());
String formkey = "[" + EnumChatFormatting.WHITE + key + EnumChatFormatting.GRAY + "]";
list.add(StatCollector.translateToLocalFormatted("tooltip."+OCMinecart.MODID+".moreinfo", formkey));
}
else{
list.addAll(TooltipUtil.trimString(StatCollector.translateToLocal("tooltip."+OCMinecart.MODID+".remoteanalyzer.desc")));
}
}
}