diff --git a/libs/replaystudio-0.0.1-SNAPSHOT-all.jar b/libs/replaystudio-0.0.1-SNAPSHOT-all.jar index 4a506ed4..b5b7ec72 100644 Binary files a/libs/replaystudio-0.0.1-SNAPSHOT-all.jar and b/libs/replaystudio-0.0.1-SNAPSHOT-all.jar differ diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/replayeditor/GuiTrimPart.java b/src/main/java/eu/crushedpixel/replaymod/gui/replayeditor/GuiTrimPart.java index d95cb727..9f563d34 100755 --- a/src/main/java/eu/crushedpixel/replaymod/gui/replayeditor/GuiTrimPart.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/replayeditor/GuiTrimPart.java @@ -32,7 +32,7 @@ public class GuiTrimPart extends GuiStudioPart { @Override public void applyFilters(File replayFile, File outputFile) { try { - StudioImplementation.trimReplay(replayFile, false, getStartTimestamp(), getEndTimestamp(), outputFile); + StudioImplementation.trimReplay(replayFile, getStartTimestamp(), getEndTimestamp(), outputFile); } catch(Exception e) { e.printStackTrace(); } diff --git a/src/main/java/eu/crushedpixel/replaymod/studio/StudioImplementation.java b/src/main/java/eu/crushedpixel/replaymod/studio/StudioImplementation.java index 7da83e9b..e16cf85a 100755 --- a/src/main/java/eu/crushedpixel/replaymod/studio/StudioImplementation.java +++ b/src/main/java/eu/crushedpixel/replaymod/studio/StudioImplementation.java @@ -1,33 +1,29 @@ 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; import de.johni0702.replaystudio.filter.RemoveFilter; import de.johni0702.replaystudio.filter.SquashFilter; import de.johni0702.replaystudio.io.ReplayOutputStream; +import de.johni0702.replaystudio.replay.ReplayFile; +import de.johni0702.replaystudio.replay.ReplayMetaData; +import de.johni0702.replaystudio.replay.ZipReplayFile; 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 { - public static void trimReplay(File replayFile, boolean isTmcpr, int beginning, int ending, File outputFile) throws IOException { + public static void trimReplay(File file, int beginning, int ending, File outputFile) throws IOException { ReplayStudio studio = new ReplayStudio(); studio.setWrappingEnabled(false); - PacketStream stream = studio.createReplayStream(new FileInputStream(replayFile), isTmcpr); + ReplayFile replayFile = new ZipReplayFile(studio, file); + + PacketStream stream = studio.createReplayStream(replayFile.getPacketData(), true); stream.addFilter(new SquashFilter(), -1, beginning); stream.addFilter(new RemoveFilter(), ending, -1); @@ -38,11 +34,7 @@ public class StudioImplementation { stream.addFilter(ctf, beginning, ending); - File temp = File.createTempFile("trimmed", "tmcpr"); - temp.deleteOnExit(); - - FileOutputStream fos = new FileOutputStream(temp); - ReplayOutputStream out = new ReplayOutputStream(studio, fos); + ReplayOutputStream out = replayFile.writePacketData(); PacketData packetData; while((packetData = stream.next()) != null) { @@ -54,25 +46,12 @@ public class StudioImplementation { out.close(); - ReplayFile replay = new ReplayFile(replayFile); - ReplayMetaData metaData = replay.metadata().get(); + ReplayMetaData metaData = replayFile.getMetaData(); ending = Math.min(metaData.getDuration(), ending); metaData.setDuration(ending - beginning); + replayFile.writeMetaData(metaData); - Map resourcePackIndex = replay.resourcePackIndex().get(); - Map resourcePacks = new HashMap(); - 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, resourcePacks, resourcePackIndex); + replayFile.saveTo(outputFile); } //TODO Work with Johni to connect multiple Replay Files