diff --git a/gradle/reprod/checksums.txt b/gradle/reprod/checksums.txt index 4ede2f3c..789f3fa2 100644 --- a/gradle/reprod/checksums.txt +++ b/gradle/reprod/checksums.txt @@ -30,24 +30,24 @@ cddfc1a07301f2fa07a5e1b6897e455d397d6d5c547d45082c267a1ee2c75f70 /com/github/Mod 7191124b8491d36b9fc1eb1a4e0f8ef710a4b98e27dde92854c24d45457fd9d0 /com/github/ModCoderPack/MCInjector/05aa80e/MCInjector-05aa80e.pom ecf57aab63509ec0ce3937c2215bc3a2e3cb6357cd11095978db18bd3251731a /com/github/ModCoderPack/MCInjector/7258466/MCInjector-7258466.jar dc7ed1f4f0ddd8f5ce3b449db944907a5eb2855dbbbc59b08dad1247ebafba33 /com/github/ModCoderPack/MCInjector/7258466/MCInjector-7258466.pom -6ebdbbf19772568d89e9655b5d64c26b1050d9326c8c2e61f64ab33b9650d56f /com/github/ReplayMod/ReplayStudio/1.10.2/24a6ad9/1.10.2-24a6ad9.jar -ab6a1dfa190ddfe8db5258c32363a9fee8e273b43478b948c8b79163d305b523 /com/github/ReplayMod/ReplayStudio/1.10.2/24a6ad9/1.10.2-24a6ad9.pom -01e9dee0e8ce43579f0cd9a360e9059d1443653e964dbe98ba5ac726657f1098 /com/github/ReplayMod/ReplayStudio/1.11.2/24a6ad9/1.11.2-24a6ad9.jar -e688800f492d466b3edf21e1d3a8e7e33f02094bc00af41a938a1901cb954a3d /com/github/ReplayMod/ReplayStudio/1.11.2/24a6ad9/1.11.2-24a6ad9.pom -e9a6a2d1ced27eb8c79c822fff17a2526b80a46565db7d80c291786e72aab2b6 /com/github/ReplayMod/ReplayStudio/1.11/24a6ad9/1.11-24a6ad9.jar -ec2508e54ebf32139af2de851f5ff953c5f9f20f8d0ad2a32d967ca36a3df170 /com/github/ReplayMod/ReplayStudio/1.11/24a6ad9/1.11-24a6ad9.pom -be3a00aeb83309589a5eb5f362c8be4c2a7618254bd83e4ad5e4c68979594134 /com/github/ReplayMod/ReplayStudio/1.12.1/24a6ad9/1.12.1-24a6ad9.jar -5b71b67fcfc0f9b841544fbdfc5341782e0b872137b7e6c580eeb255849b6ddd /com/github/ReplayMod/ReplayStudio/1.12.1/24a6ad9/1.12.1-24a6ad9.pom -a3b7366e9464df440b7d35aa763514d0d4f3561352ff46fd20d4fbd72199d9e4 /com/github/ReplayMod/ReplayStudio/1.12.2/24a6ad9/1.12.2-24a6ad9.jar -648c604e39a264df7fa7ec2a2e23316c6603ef0514f97ed2469e9fa0df8b2f88 /com/github/ReplayMod/ReplayStudio/1.12.2/24a6ad9/1.12.2-24a6ad9.pom -e879a28f1214a31a713a5e913a340c800924af8cef874f4c4b6fe87dfd168a5a /com/github/ReplayMod/ReplayStudio/1.12/24a6ad9/1.12-24a6ad9.jar -f76387ad6cf25314254e09a46fa4d3cf1316e73cc8d7dcc519ff043cedf5e011 /com/github/ReplayMod/ReplayStudio/1.12/24a6ad9/1.12-24a6ad9.pom -7bbfd0a7208a54a6504fcc55ab1923657290eb5f875b8a7a0e90b38c30ac3bf2 /com/github/ReplayMod/ReplayStudio/1.7.10/24a6ad9/1.7.10-24a6ad9.jar -0859e94b2301b922a5b3c708af5cfd3a5258472f0e96c1d5fa03d46ae1904a0d /com/github/ReplayMod/ReplayStudio/1.7.10/24a6ad9/1.7.10-24a6ad9.pom -a8004aa2fe87255b9de92d100347a76eda0c4922a082e1656a402825c21f29d4 /com/github/ReplayMod/ReplayStudio/1.8/24a6ad9/1.8-24a6ad9.jar -826c406986c4ffd5d2abd0b9c0b8184cdf65ac14aa1c8eb885c2ee7b34b9bc2d /com/github/ReplayMod/ReplayStudio/1.8/24a6ad9/1.8-24a6ad9.pom -2d828c6bf155a91c345b21202fe03d8ceaa5c3ad8db0e0c0cc8fde77adc465f6 /com/github/ReplayMod/ReplayStudio/1.9.4/24a6ad9/1.9.4-24a6ad9.jar -c5be0021f31bfd1e9c792b24f2811816430450b91e98452cef33392dda00696e /com/github/ReplayMod/ReplayStudio/1.9.4/24a6ad9/1.9.4-24a6ad9.pom +2a0317d30d61fb285cc53fa20e2e70f8415cd450bd7dd27316ede1958bd0026a /com/github/ReplayMod/ReplayStudio/1.10.2/464e18a/1.10.2-464e18a.jar +4d23573378855cb19ed826fbf64af7933176009968c346a0dc90db0aaf0b1085 /com/github/ReplayMod/ReplayStudio/1.10.2/464e18a/1.10.2-464e18a.pom +0c2fc451112aea29afea627c6f960c6c2d802bf9ce5171e13141d765cabd1bd3 /com/github/ReplayMod/ReplayStudio/1.11.2/464e18a/1.11.2-464e18a.jar +05897bc9d94d22c632d2f92acb61d3b5a4524bb2c87e084c843d48ec2859b5d0 /com/github/ReplayMod/ReplayStudio/1.11.2/464e18a/1.11.2-464e18a.pom +72a34922cd66c11c4828ea5a6a59a22c7e84704eba6d6569dcb7946c861c6150 /com/github/ReplayMod/ReplayStudio/1.11/464e18a/1.11-464e18a.jar +652eebb442f3735b6dd826f1dfc0b9b0a4a15cc5cbc8838829680593cd1d329c /com/github/ReplayMod/ReplayStudio/1.11/464e18a/1.11-464e18a.pom +09b16315282ff3d230473ef8c1ebc8ecbedecc9e1cfacc11a25c8cf33804df58 /com/github/ReplayMod/ReplayStudio/1.12.1/464e18a/1.12.1-464e18a.jar +1fce1aed0a6d8ec2d98963657affc067cb4e07c919dcb82b08c67567375da4fd /com/github/ReplayMod/ReplayStudio/1.12.1/464e18a/1.12.1-464e18a.pom +09f3bb46fcfe5717824ef98b1fe1ddd168dbaab9bb9733638b372eafdb38e8ea /com/github/ReplayMod/ReplayStudio/1.12.2/464e18a/1.12.2-464e18a.jar +8cfc8fadf77620baea61e9939466ec09c352628867562039fd3fb0d19077de7d /com/github/ReplayMod/ReplayStudio/1.12.2/464e18a/1.12.2-464e18a.pom +5a2768d35614ff979587e7cbfb1e47ee583d6abae5c37d987d092d937ddab1df /com/github/ReplayMod/ReplayStudio/1.12/464e18a/1.12-464e18a.jar +9a3839e479d182c36e0d1c50c5546f4ab2be874c0edf391b8c2da06f0f826b0d /com/github/ReplayMod/ReplayStudio/1.12/464e18a/1.12-464e18a.pom +4608a10f2be2d7d85b63497c0ef1b5c8b6240b219de72507a375349f4060a7c6 /com/github/ReplayMod/ReplayStudio/1.7.10/464e18a/1.7.10-464e18a.jar +932c417dead3f4fde2518ebd97bcb7911f5bdccc015bff8f8a02bbd0e0652150 /com/github/ReplayMod/ReplayStudio/1.7.10/464e18a/1.7.10-464e18a.pom +3e71190a4715c3b75c5cc0c370446ddcd140d0aed81f699a1bb8613d22828060 /com/github/ReplayMod/ReplayStudio/1.8/464e18a/1.8-464e18a.jar +25eec3876744c665225511ab1d6f786e2a763b18e99c29305cabed06187868e5 /com/github/ReplayMod/ReplayStudio/1.8/464e18a/1.8-464e18a.pom +12aab719873f618d2d9fecd39792b95391d33f2a63e59a6def4683603c941234 /com/github/ReplayMod/ReplayStudio/1.9.4/464e18a/1.9.4-464e18a.jar +02fff38653316815a7b0208959fa58d92ccd4ec9eef51b2c9d4b0d0383a72361 /com/github/ReplayMod/ReplayStudio/1.9.4/464e18a/1.9.4-464e18a.pom bfdcda4cbf23f28392384818a1417c2d6df687e15ce77530ef96381393102f8a /com/github/SpongePowered/MixinGradle/dcfaf61/MixinGradle-dcfaf61.jar 3552e0c04817d91d1b6671a051d0e1d952c8b6a8eec57b54e829de9fa3ddf002 /com/github/SpongePowered/MixinGradle/dcfaf61/MixinGradle-dcfaf61.pom c6ebd74cd6108b8c372c95b842725ee5bd6d3303ba26cb00f18bc92f80b47956 /com/github/tony19/named-regexp/0.2.3/named-regexp-0.2.3.jar diff --git a/gradle/reprod/setup.sh b/gradle/reprod/setup.sh index 1ec58939..791a1b66 100755 --- a/gradle/reprod/setup.sh +++ b/gradle/reprod/setup.sh @@ -44,7 +44,7 @@ popd # Back to root ./gradlew -Preprod $PROXY_SETTINGS -I gradle/reprod/init.gradle "$@" -if [ "$SIGNED_JAR" == "1" ]; then +if [ "$(git blame -p version.txt | head -n1 | cut -d' ' -f1)" == "$(git rev-parse HEAD)" ]; then echo "Trying to fetch signature for resulting jar files.." pushd versions for ver in */; do diff --git a/src/main/java/com/replaymod/editor/gui/GuiReplayEditor.java b/src/main/java/com/replaymod/editor/gui/GuiReplayEditor.java index 05322765..359c3164 100644 --- a/src/main/java/com/replaymod/editor/gui/GuiReplayEditor.java +++ b/src/main/java/com/replaymod/editor/gui/GuiReplayEditor.java @@ -36,6 +36,7 @@ import de.johni0702.minecraft.gui.popup.GuiYesNoPopup; import de.johni0702.minecraft.gui.utils.Colors; import net.minecraft.crash.CrashReport; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.util.ReadableDimension; import javax.annotation.Nullable; @@ -123,7 +124,8 @@ public class GuiReplayEditor extends GuiScreen { return button; } - public void save(File inputFile, PacketStream.FilterInfo...filters) { + @SafeVarargs + public final void save(File inputFile, Pair... filters) { save(Utils.fileNameToReplayName(inputFile.getName()), (outputFile) -> { Studio studio = new ReplayStudio(); File tmpDir = null; @@ -146,7 +148,10 @@ public class GuiReplayEditor extends GuiScreen { PacketStream stream = studio.createReplayStream(in, true); stream.addFilter(new ProgressFilter(metaData.getDuration())); - for (PacketStream.FilterInfo info : filters) { + for (Pair pair : filters) { + PacketStream.FilterInfo info = pair.getLeft(); + JsonObject config = pair.getRight(); + info.getFilter().init(studio, config); stream.addFilter(info.getFilter(), info.getFrom(), info.getTo()); LOGGER.debug("Added filter {}", info); } diff --git a/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java b/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java index 3bff46f8..3947214d 100644 --- a/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java +++ b/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java @@ -22,6 +22,7 @@ import net.minecraft.client.resources.I18n; import net.minecraft.crash.CrashReport; import org.apache.commons.io.IOCase; import org.apache.commons.io.filefilter.SuffixFileFilter; +import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.util.Dimension; import java.io.File; @@ -133,12 +134,11 @@ public class GuiTrimPanel extends GuiPanel { ChangeTimestampFilter ctf = new ChangeTimestampFilter(); JsonObject config = new JsonObject(); config.addProperty("offset", -start); - ctf.init(null, config); // Pass filters to save dialog gui.save(inputReplays.getSelectedValue(), - new PacketStream.FilterInfo(new SquashFilter(), -1, start), - new PacketStream.FilterInfo(ctf, start, end), - new PacketStream.FilterInfo(new RemoveFilter(), end, -1) + Pair.of(new PacketStream.FilterInfo(new SquashFilter(), -1, start), new JsonObject()), + Pair.of(new PacketStream.FilterInfo(ctf, start, end), config), + Pair.of(new PacketStream.FilterInfo(new RemoveFilter(), end, -1), new JsonObject()) ); }); } diff --git a/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java b/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java index 4f2c27b0..8fe6c2b9 100644 --- a/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java +++ b/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java @@ -23,15 +23,30 @@ import static com.replaymod.core.versions.MCVer.*; public class ChunkLoadingRenderGlobal { private final RenderGlobal hooked; - private final ChunkRenderDispatcher renderDispatcher; - private final JailingQueue workerJailingQueue; - private final CustomChunkRenderWorker renderWorker; + private ChunkRenderDispatcher renderDispatcher; + private JailingQueue workerJailingQueue; + private CustomChunkRenderWorker renderWorker; private int frame; @SuppressWarnings("unchecked") public ChunkLoadingRenderGlobal(RenderGlobal renderGlobal) { this.hooked = renderGlobal; - this.renderDispatcher = renderGlobal.renderDispatcher; + + setup(renderGlobal.renderDispatcher); + } + + public void updateRenderDispatcher(ChunkRenderDispatcher renderDispatcher) { + if (this.renderDispatcher != null) { + workerJailingQueue.freeAll(); + this.renderDispatcher = null; + } + if (renderDispatcher != null) { + setup(renderDispatcher); + } + } + + private void setup(ChunkRenderDispatcher renderDispatcher) { + this.renderDispatcher = renderDispatcher; this.renderWorker = new CustomChunkRenderWorker(renderDispatcher, new RegionRenderCacheBuilder()); int workerThreads = renderDispatcher.listThreadedWorkers.size(); diff --git a/src/main/java/com/replaymod/render/mixin/MixinRenderGlobal.java b/src/main/java/com/replaymod/render/mixin/MixinRenderGlobal.java index a5364b63..c81175b0 100644 --- a/src/main/java/com/replaymod/render/mixin/MixinRenderGlobal.java +++ b/src/main/java/com/replaymod/render/mixin/MixinRenderGlobal.java @@ -10,6 +10,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; //#if MC<10904 @@ -67,5 +68,19 @@ public abstract class MixinRenderGlobal { ci.cancel(); } } + + @Inject(method = "setWorldAndLoadRenderers", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/chunk/ChunkRenderDispatcher;stopWorkerThreads()V")) + private void stopWorkerThreadsAndChunkLoadingRenderGlobal(CallbackInfo ci) { + if (replayModRender_hook != null) { + replayModRender_hook.updateRenderDispatcher(null); + } + } + + @Inject(method = "loadRenderers", at = @At(value = "RETURN")) + private void setupChunkLoadingRenderGlobal(CallbackInfo ci) { + if (replayModRender_hook != null) { + replayModRender_hook.updateRenderDispatcher(renderDispatcher); + } + } } //#endif diff --git a/src/main/java/com/replaymod/replay/ReplayHandler.java b/src/main/java/com/replaymod/replay/ReplayHandler.java index a14dde9a..bd96b467 100755 --- a/src/main/java/com/replaymod/replay/ReplayHandler.java +++ b/src/main/java/com/replaymod/replay/ReplayHandler.java @@ -95,7 +95,7 @@ public class ReplayHandler { markers = new ArrayList<>(replayFile.getMarkers().or(Collections.emptySet())); - replaySender = new ReplaySender(this, replayFile, asyncMode); + replaySender = new ReplaySender(this, replayFile, false); setup(); @@ -103,6 +103,8 @@ public class ReplayHandler { overlay.setVisible(true); FML_BUS.post(new ReplayOpenEvent.Post(this)); + + replaySender.setAsyncMode(asyncMode); } void restartedReplay() { diff --git a/version.txt b/version.txt index 3e3c2f1e..eca07e4c 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.1.1 +2.1.2 diff --git a/versions/common.gradle b/versions/common.gradle index 0545473d..1ff1aec0 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -115,6 +115,8 @@ repositories { configurations { shade compile.extendsFrom shade + + shade.exclude group: 'com.google.code.gson', module: 'gson' // provided by MC } dependencies { @@ -133,7 +135,7 @@ dependencies { def studioVersion = "${(int)(mcVersion/10000)}.${(int)(mcVersion/100)%100}" + (mcVersion%100==0 ? '' : ".${mcVersion%100}") if (studioVersion == '1.8.9') studioVersion = '1.8' - shade("com.github.ReplayMod.ReplayStudio:$studioVersion:24a6ad9"){ + shade("com.github.ReplayMod.ReplayStudio:$studioVersion:464e18a"){ exclude group: 'com.google.guava', module: 'guava' // provided by MC exclude group: 'org.projectlombok', module: 'lombok' // runtime only for @SneakyThrows which isn't used } diff --git a/versions/preprocessor.gradle b/versions/preprocessor.gradle index 40310f94..5d47dee0 100644 --- a/versions/preprocessor.gradle +++ b/versions/preprocessor.gradle @@ -65,7 +65,10 @@ static def convertSource(Map kws, Map vars, Lis } } } else if (trimmed.startsWith(kws.ifdef)) { - ifStack.push(null) + def result = vars.containsKey(trimmed.substring(kws.ifdef.length())) + ifStack.push(result) + indentStack.push(getIndent(line)) + active &= result } else if (trimmed.startsWith(kws.endif)) { if (ifStack.isEmpty()) { throw new ParserException("Unexpected endif in line $n of $fileName")