package zmaster587.advancedRocketry.mission;
import java.util.LinkedList;
import java.util.List;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
import net.minecraftforge.oredict.OreDictionary;
import zmaster587.advancedRocketry.api.Configuration;
import zmaster587.advancedRocketry.api.IInfrastructure;
import zmaster587.advancedRocketry.api.DataStorage.DataType;
import zmaster587.advancedRocketry.entity.EntityRocket;
import zmaster587.advancedRocketry.entity.EntityStationDeployedRocket;
import zmaster587.advancedRocketry.item.ItemAsteroidChip;
import zmaster587.libVulpes.LibVulpes;
import zmaster587.libVulpes.util.BlockPosition;
public class MissionGasCollection extends MissionResourceCollection {
Fluid gasFluid;
public MissionGasCollection() {
super();
}
public MissionGasCollection(long l, EntityRocket entityRocket, LinkedList<IInfrastructure> connectedInfrastructure, Fluid gasFluid) {
super((long) (l*Configuration.gasCollectionMult), entityRocket, connectedInfrastructure);
this.gasFluid = gasFluid;
}
@Override
public String getName() {
return LibVulpes.proxy.getLocalizedString("mission.gascollection.name");
}
@Override
public void onMissionComplete() {
if((int)rocketStats.getStatTag("intakePower") > 0 && gasFluid != null) {
int amountOfGas = Integer.MAX_VALUE;
Fluid type = gasFluid;//FluidRegistry.getFluid("hydrogen");
//Fill gas tanks
for(TileEntity tile : this.rocketStorage.getFluidTiles()) {
amountOfGas -= ((IFluidHandler)tile).fill(ForgeDirection.UNKNOWN, new FluidStack(type, amountOfGas), true);
if(amountOfGas == 0)
break;
}
}
EntityStationDeployedRocket rocket = new EntityStationDeployedRocket(DimensionManager.getWorld(launchDimension), rocketStorage, rocketStats, x, y, z);
rocket.setFuelAmount(0);
World world = DimensionManager.getWorld(launchDimension);
rocket.readMissionPersistantNBT(missionPersistantNBT);
ForgeDirection dir = rocket.forwardDirection;
rocket.forceSpawn = true;
rocket.setPosition(dir.offsetX*64d + rocket.launchLocation.x + (rocketStorage.getSizeX() % 2 == 0 ? 0 : 0.5d), y, dir.offsetZ*64d + rocket.launchLocation.z + (rocketStorage.getSizeZ() % 2 == 0 ? 0 : 0.5d));
world.spawnEntityInWorld(rocket);
rocket.setInOrbit(true);
rocket.setInFlight(true);
//rocket.motionY = -1.0;
for(BlockPosition i : infrastructureCoords) {
TileEntity tile = world.getTileEntity(i.x, i.y, i.z);
if(tile instanceof IInfrastructure) {
((IInfrastructure)tile).unlinkMission();
rocket.linkInfrastructure(((IInfrastructure)tile));
}
}
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setString("gas", gasFluid.getName());
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
gasFluid = FluidRegistry.getFluid(nbt.getString("gas"));
}
}