Save resource packs to replay file and use those during replay

This commit is contained in:
johni0702
2015-05-29 12:10:06 +02:00
parent 95e2c932f0
commit 37d31408bd
7 changed files with 323 additions and 115 deletions

View File

@@ -1,5 +1,6 @@
package eu.crushedpixel.replaymod.studio;
import com.google.common.io.Files;
import com.google.gson.JsonObject;
import de.johni0702.replaystudio.PacketData;
import de.johni0702.replaystudio.filter.ChangeTimestampFilter;
@@ -9,13 +10,17 @@ import de.johni0702.replaystudio.io.ReplayOutputStream;
import de.johni0702.replaystudio.stream.PacketStream;
import de.johni0702.replaystudio.studio.ReplayStudio;
import eu.crushedpixel.replaymod.recording.ReplayMetaData;
import eu.crushedpixel.replaymod.utils.ReplayFile;
import eu.crushedpixel.replaymod.utils.ReplayFileIO;
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class StudioImplementation {
@@ -49,13 +54,25 @@ public class StudioImplementation {
out.close();
ReplayMetaData metaData = ReplayFileIO.getMetaData(replayFile);
ReplayFile replay = new ReplayFile(replayFile);
ReplayMetaData metaData = replay.metadata().get();
ending = Math.min(metaData.getDuration(), ending);
metaData.setDuration(ending - beginning);
Map<Integer, String> resourcePackIndex = replay.resourcePackIndex().get();
Map<String, File> resourcePacks = new HashMap<String, File>();
File tempFolder = Files.createTempDir();
for (String hash : resourcePackIndex.values()) {
if (!resourcePacks.containsKey(hash)) {
File resourcePack = new File(tempFolder, hash);
IOUtils.copy(replay.resourcePack(hash).get(), new FileOutputStream(resourcePack));
resourcePacks.put(hash, resourcePack);
}
}
outputFile.createNewFile();
ReplayFileIO.writeReplayFile(outputFile, temp, metaData);
ReplayFileIO.writeReplayFile(outputFile, temp, metaData, resourcePacks, resourcePackIndex);
}
//TODO Work with Johni to connect multiple Replay Files