package zmaster587.advancedRocketry.stations; import java.util.HashMap; import java.util.Map.Entry; import zmaster587.advancedRocketry.api.Configuration; import zmaster587.advancedRocketry.api.DataStorage.DataType; import zmaster587.advancedRocketry.api.dimension.IDimensionProperties; import zmaster587.advancedRocketry.api.satellite.IDataHandler; import zmaster587.advancedRocketry.dimension.DimensionManager; import zmaster587.advancedRocketry.world.util.MultiData; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.Constants.NBT; public class SpaceObjectAsteroid extends SpaceObjectBase implements IDataHandler { HashMap<Block, Integer> compositionMapping; int numberOfBlocks; long uuid; MultiData data; public SpaceObjectAsteroid() { data = new MultiData(); data.setMaxData(5000); setId(-1); } public SpaceObjectAsteroid(HashMap<Block, Integer> compositionMapping, long uuid, int numBlocks) { this(); this.numberOfBlocks = numBlocks; this.compositionMapping = compositionMapping; this.uuid = uuid; } public boolean registered() { return getId() != -1; } public long getAsteroidId() { return uuid; } public void setAsteroidId(long id) { uuid = id; } public HashMap<Block, Integer> getCompositionMapping() { return compositionMapping; } public int getNumberOfBlocks() { return numberOfBlocks; } public void registerWithSpaceObjectManager() { SpaceObjectManager.getSpaceManager().registerTemporarySpaceObject(this, -1,net.minecraftforge.common.DimensionManager.getWorld(Configuration.spaceDimId).getTotalWorldTime() + 100000); } public static void generateAsteroid(World world, int x, int y, int z) { } @Override public void writeToNbt(NBTTagCompound nbt) { super.writeToNbt(nbt); NBTTagList list = new NBTTagList(); for(Entry<Block, Integer> entry : compositionMapping.entrySet()) { NBTTagCompound tag = new NBTTagCompound(); tag.setInteger("id", Block.getIdFromBlock(entry.getKey())); tag.setInteger("amt", entry.getValue()); list.appendTag(tag); } nbt.setTag("composition", list); nbt.setInteger("numBlocks", numberOfBlocks); nbt.setLong("uuid",uuid); data.writeToNBT(nbt); } @Override public void readFromNbt(NBTTagCompound nbt) { super.readFromNbt(nbt); NBTTagList list = nbt.getTagList("composition", NBT.TAG_COMPOUND); compositionMapping.clear(); for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound tag = list.getCompoundTagAt(i); int blockId = tag.getInteger("id"); int rarity = tag.getInteger("amt"); compositionMapping.put(Block.getBlockById(blockId), rarity); } numberOfBlocks = nbt.getInteger("numBlocks"); uuid = nbt.getLong("uuid"); data.readFromNBT(nbt); } @Override public int extractData(int maxAmount, DataType type, ForgeDirection dir, boolean commit) { // TODO Auto-generated method stub return 0; } @Override public int addData(int maxAmount, DataType type, ForgeDirection dir, boolean commit) { // TODO Auto-generated method stub return 0; } @Override public void setProperties(IDimensionProperties properties) { // TODO Auto-generated method stub } @Override public float getOrbitalDistance() { return getProperties().getParentOrbitalDistance(); } @Override public void setOrbitalDistance(float finalVel) { } }