Save resource packs to replay file and use those during replay
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user