package zmaster587.advancedRocketry.item;
import java.util.LinkedList;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import zmaster587.advancedRocketry.AdvancedRocketry;
import zmaster587.advancedRocketry.api.satellite.SatelliteBase;
import zmaster587.advancedRocketry.dimension.DimensionManager;
import zmaster587.advancedRocketry.inventory.GuiHandler;
import zmaster587.advancedRocketry.inventory.modules.ModuleOreMapper;
import zmaster587.advancedRocketry.satellite.SatelliteOreMapping;
import zmaster587.libVulpes.inventory.modules.IModularInventory;
import zmaster587.libVulpes.inventory.modules.ModuleBase;
public class ItemOreScanner extends Item implements IModularInventory {
@Override
public void addInformation(ItemStack stack, EntityPlayer player,
List list, boolean arg5) {
SatelliteBase sat = DimensionManager.getInstance().getSatellite(this.getSatelliteID(stack));
SatelliteOreMapping mapping = null;
if(sat instanceof SatelliteOreMapping)
mapping = (SatelliteOreMapping)sat;
if(!stack.hasTagCompound())
list.add("Unprogrammed");
else if(mapping == null)
list.add("Satellite not yet launched");
else if(mapping.getDimensionId() == player.worldObj.provider.dimensionId) {
list.add("Connected");
list.add("Max Zoom: " + mapping.getZoomRadius());
list.add("Can filter ore: " + mapping.canFilterOre());
}
else
list.add("Not Connected");
super.addInformation(stack, player, list, arg5);
}
public void setSatelliteID(ItemStack stack, long id) {
NBTTagCompound nbt;
if(!stack.hasTagCompound())
nbt = new NBTTagCompound();
else
nbt = stack.getTagCompound();
nbt.setLong("id", id);
stack.setTagCompound(nbt);
}
public long getSatelliteID(ItemStack stack) {
NBTTagCompound nbt;
if(!stack.hasTagCompound())
return -1;
nbt = stack.getTagCompound();
return nbt.getLong("id");
}
@Override
public ItemStack onItemRightClick(ItemStack stack, World world,
EntityPlayer player) {
if(!player.worldObj.isRemote)
player.openGui(AdvancedRocketry.instance, GuiHandler.guiId.OreMappingSatellite.ordinal(), world, (int)player.posX, (int)getSatelliteID(stack), (int)player.posZ);
return super.onItemRightClick(stack, world, player);
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player,World world, int x, int y, int z,int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_) {
if(!player.worldObj.isRemote)
player.openGui(AdvancedRocketry.instance, GuiHandler.guiId.OreMappingSatellite.ordinal(), world, x, (int)getSatelliteID(stack), z);
return super.onItemUse(stack, player, world, x, y,z, p_77648_7_, p_77648_8_, p_77648_9_, p_77648_10_);
}
public void interactSatellite(SatelliteBase satellite,EntityPlayer player, World world, int x, int y, int z) {
satellite.performAction(player, world,x,y,z);
}
@Override
public List<ModuleBase> getModules(int id, EntityPlayer player) {
List<ModuleBase> modules = new LinkedList<ModuleBase>();
modules.add(new ModuleOreMapper(0, 0));
return modules;
}
@Override
public String getModularInventoryName() {
return null;
}
@Override
public boolean canInteractWithContainer(EntityPlayer entity) {
return true;
}
}