package zmaster587.advancedRocketry.item; import java.util.List; import zmaster587.advancedRocketry.api.Configuration; import zmaster587.advancedRocketry.api.stations.ISpaceObject; import zmaster587.advancedRocketry.stations.SpaceObjectManager; import zmaster587.libVulpes.util.Vector3F; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; /** * MetaData corresponds to the id */ public class ItemStationChip extends ItemIdWithName { private static final String uuidIdentifier = "UUID"; public ItemStationChip() { //setMaxDamage(Integer.MAX_VALUE); setHasSubtypes(true); } public void setTakeoffCoords(ItemStack stack, Vector3F<Float> pos, int dimid) { setTakeoffCoords(stack, pos.x, pos.y, pos.z, dimid); } public void setTakeoffCoords(ItemStack stack, float x, float y, float z, int dimid) { NBTTagCompound nbt; if(stack.hasTagCompound()) nbt = stack.getTagCompound(); else nbt = new NBTTagCompound(); NBTTagCompound nbtEntry; if(nbt.hasKey("dimid" + dimid)) nbtEntry = nbt.getCompoundTag("dimid" + dimid); else nbtEntry = new NBTTagCompound(); nbtEntry.setFloat("x", x); nbtEntry.setFloat("y", y); nbtEntry.setFloat("z", z); nbt.setTag("dimid" + dimid, nbtEntry); stack.setTagCompound(nbt); } /** * @param stack * @return Vector3F containing the takeoff coords or null if there is none */ public Vector3F<Float> getTakeoffCoords(ItemStack stack, int dimid) { if(stack.hasTagCompound()) { NBTTagCompound nbt = stack.getTagCompound(); if(nbt.hasKey("dimid" + dimid)) { nbt = nbt.getCompoundTag("dimid" + dimid); return new Vector3F<Float>(nbt.getFloat("x"), nbt.getFloat("y"),nbt.getFloat("z")); } } return null; } public static long getUUID(ItemStack stack) { if(stack.hasTagCompound()) return stack.getTagCompound().getLong(uuidIdentifier); return 0; } public static void setUUID(ItemStack stack, long uuid) { NBTTagCompound nbt; if(stack.hasTagCompound()) nbt = stack.getTagCompound(); else nbt = new NBTTagCompound(); nbt.setLong(uuidIdentifier,uuid); stack.setTagCompound(nbt); } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(getUUID(stack) == 0) list.add(EnumChatFormatting.GRAY + "Unprogrammed"); else { list.add(EnumChatFormatting.GREEN + "Station " + getUUID(stack)); super.addInformation(stack, player, list, bool); if(player.worldObj.provider.dimensionId == Configuration.spaceDimId) { ISpaceObject obj = SpaceObjectManager.getSpaceManager().getSpaceStationFromBlockCoords((int)player.posX, (int)player.posZ); if(obj != null) { Vector3F<Float> vec = getTakeoffCoords(stack, obj.getOrbitingPlanetId()); if(vec != null) { list.add("X: " + vec.x); list.add("Z: " + vec.z); } else { list.add("X: N/A"); list.add("Z: N/A"); } } } } } }