From 34172cd737448c9bff5d29eb84b7930abf581d6c Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 11 Mar 2018 12:17:18 +0100 Subject: [PATCH 1/8] Fix race condition due to ReplaySender in async mode during setup() The ReplaySender used to be started in async mode even before the call to setup(). If the ReplaySender restarts the replay before the setup() call finishes, that call may instead produce a NPE in clientToServerHandshake(). To fix this race condition, the ReplaySender is always started in sync mode and only switched to async after the setup() call. --- src/main/java/com/replaymod/replay/ReplayHandler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/replaymod/replay/ReplayHandler.java b/src/main/java/com/replaymod/replay/ReplayHandler.java index 84f70867..32ed21c3 100755 --- a/src/main/java/com/replaymod/replay/ReplayHandler.java +++ b/src/main/java/com/replaymod/replay/ReplayHandler.java @@ -82,7 +82,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(); @@ -90,6 +90,8 @@ public class ReplayHandler { overlay.setVisible(true); FML_BUS.post(new ReplayOpenEvent.Post(this)); + + replaySender.setAsyncMode(asyncMode); } void restartedReplay() { From 13d5586583c4f805b1df3f5cebaec1b0dd8b30fb Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 11 Mar 2018 12:19:23 +0100 Subject: [PATCH 2/8] Fix trimming of replays not actually removing any packets (fixes #113) The init method of the Squash filter has never been called therefore it had never registered its packets and was never able to properly function. --- .../java/com/replaymod/editor/gui/GuiReplayEditor.java | 9 +++++++-- src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java | 8 ++++---- 2 files changed, 11 insertions(+), 6 deletions(-) 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()) ); }); } From 76be6c1d2e566f929e305fcee0a7824558a7ace2 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 11 Mar 2018 13:42:28 +0100 Subject: [PATCH 3/8] Fix dead lock when jumping backwards in time during rendering A jump backwards in time entails unloading the current world and with it the ChunkRenderDispatcher that the ChunkLoadingRenderGlobal has locked. --- .../hooks/ChunkLoadingRenderGlobal.java | 23 +++++++++++++++---- .../render/mixin/MixinRenderGlobal.java | 15 ++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java b/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java index d2a9844d..0b8bf90a 100644 --- a/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java +++ b/src/main/java/com/replaymod/render/hooks/ChunkLoadingRenderGlobal.java @@ -22,15 +22,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 a5cd2885..1eb1d3cb 100644 --- a/src/main/java/com/replaymod/render/mixin/MixinRenderGlobal.java +++ b/src/main/java/com/replaymod/render/mixin/MixinRenderGlobal.java @@ -9,6 +9,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 @@ -66,4 +67,18 @@ 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); + } + } } From 48b39fe551615f3ef1b381f273b614c559f438a3 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 11 Mar 2018 20:51:56 +0100 Subject: [PATCH 4/8] Update MCProtocolLib (via ReplayStudio) Primarily because of 1728e10 Default to no team color when receiving unknown values. 63e06fa Remove hard bitsPerEntry limit, enforce minimum of 4. 6de0593 Add CustomStatistic as fallback for custom or unimplemented statistic IDs. --- gradle/reprod/checksums.txt | 32 ++++++++++++++++---------------- versions/common.gradle | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/gradle/reprod/checksums.txt b/gradle/reprod/checksums.txt index 3761b918..1deeb35c 100644 --- a/gradle/reprod/checksums.txt +++ b/gradle/reprod/checksums.txt @@ -26,22 +26,22 @@ f539e2ca00d43e3d2261b7334eb05137f0eb1d3d5e3cc2c2716b0071e27783ed /com/github/Min fe525f413965d4f5f65b70f08b90b3d3f944714f665e2c5636a6e8fec08d3c74 /com/github/MinecraftForge/Srg2Source/ea4ea62/Srg2Source-ea4ea62.pom ecf57aab63509ec0ce3937c2215bc3a2e3cb6357cd11095978db18bd3251731a /com/github/ModCoderPack/MCInjector/7258466/MCInjector-7258466.jar dc7ed1f4f0ddd8f5ce3b449db944907a5eb2855dbbbc59b08dad1247ebafba33 /com/github/ModCoderPack/MCInjector/7258466/MCInjector-7258466.pom -eec4d746869133803b0b3c8a8036a6fb1ec95c52951a0c83cd712f8414eb2155 /com/github/ReplayMod/ReplayStudio/1.10.2/9fd96a7/1.10.2-9fd96a7.jar -4ab7d385c3bb8ff5f644d7581ba01e8f53bf901391bc3db4a42671d691fe10a3 /com/github/ReplayMod/ReplayStudio/1.10.2/9fd96a7/1.10.2-9fd96a7.pom -2b1cc3bb7e47f0e211d9a4f6460094cac923d6225570c3f7050d7ca400797ca3 /com/github/ReplayMod/ReplayStudio/1.11.2/9fd96a7/1.11.2-9fd96a7.jar -5c7a1016aec5d110283b7da5d2275624c9620f4b7e280243d36a3d91fdc9a634 /com/github/ReplayMod/ReplayStudio/1.11.2/9fd96a7/1.11.2-9fd96a7.pom -0b5b847e3632c9af689d6962784055199b32480776d6677c3af7a5222a5d7aa8 /com/github/ReplayMod/ReplayStudio/1.11/9fd96a7/1.11-9fd96a7.jar -264e3bc6f5e46a779e69693a8923b7ec0ab293c0b44aebdef8ae1384e60ca9cd /com/github/ReplayMod/ReplayStudio/1.11/9fd96a7/1.11-9fd96a7.pom -a57a2413914bcd3d28303fd8f15311ea75c71190a709301016e8d4a2a5b8594d /com/github/ReplayMod/ReplayStudio/1.12.1/9fd96a7/1.12.1-9fd96a7.jar -d5de52fb3678b934f9ff79010cf5f9b5808d4dbecea12176a68ba48770058292 /com/github/ReplayMod/ReplayStudio/1.12.1/9fd96a7/1.12.1-9fd96a7.pom -8e394540ae4f7e482418bac8fc62b960e7d6684d0c775de4cbe31a5b6e8265ba /com/github/ReplayMod/ReplayStudio/1.12.2/9fd96a7/1.12.2-9fd96a7.jar -52fffb013931c1665fec82a4b8fa689746ced42ba3aa9bf9ec0e31cb5795dd45 /com/github/ReplayMod/ReplayStudio/1.12.2/9fd96a7/1.12.2-9fd96a7.pom -4a63fcc6f9028eb3861ffa2bfa530946a3bfb08740a63b079438cd63483e25d6 /com/github/ReplayMod/ReplayStudio/1.12/9fd96a7/1.12-9fd96a7.jar -84dc441594bfc55066bc47e220bec2c29b13078f43bf4825ea2efb627ac77e48 /com/github/ReplayMod/ReplayStudio/1.12/9fd96a7/1.12-9fd96a7.pom -05815d75c608c7a595e0b05e253dd061f0399192d5ff801bd4638f91e2977ea9 /com/github/ReplayMod/ReplayStudio/1.8/9fd96a7/1.8-9fd96a7.jar -c8f68dd69574d0a60fd4da65dd719015f15dc39689c11ec82d996d73abafb1df /com/github/ReplayMod/ReplayStudio/1.8/9fd96a7/1.8-9fd96a7.pom -a0860a4846512e77944e4fd3e22e27e239606748aba10b4e3c0f8965439b6208 /com/github/ReplayMod/ReplayStudio/1.9.4/9fd96a7/1.9.4-9fd96a7.jar -8b4d5ad45fc62539a5add40e944e6fb22ad2b4d3954ed5b16f3f2a3b688da010 /com/github/ReplayMod/ReplayStudio/1.9.4/9fd96a7/1.9.4-9fd96a7.pom +70429d88b6f4705ce385491500afa126e936447f992c7d4221d0751e8f0f7c50 /com/github/ReplayMod/ReplayStudio/1.10.2/e6f898d/1.10.2-e6f898d.pom +4d7e34aa0ca77482fb2d4c6617ac556e1c0dfcb1be1e651578200d7198ee3cfc /com/github/ReplayMod/ReplayStudio/1.10.2/e6f898d/1.10.2-e6f898d.jar +c449a20fa5c6365d7c16c3fc3b81fa5f260becc962075d1c02c5a998e4c1c36f /com/github/ReplayMod/ReplayStudio/1.11.2/e6f898d/1.11.2-e6f898d.pom +3feaeb7ddfc841318f842dbd850aff858222ad4abca31ddfffa8c5c2f8c0ae67 /com/github/ReplayMod/ReplayStudio/1.11.2/e6f898d/1.11.2-e6f898d.jar +d55fffd172e435aff8cb31338a7dea43cc7b19eb0af074de0faefad4864f5493 /com/github/ReplayMod/ReplayStudio/1.11/e6f898d/1.11-e6f898d.pom +7fb4e0b0e8e4c0cada73c7091064d50131dfaadf257619f10f391fb8ed341f3c /com/github/ReplayMod/ReplayStudio/1.11/e6f898d/1.11-e6f898d.jar +b758ff30bfc9297a9c13d5ca607fc9096a43682a46951d9ad1cefa5400e4d5fe /com/github/ReplayMod/ReplayStudio/1.12.1/e6f898d/1.12.1-e6f898d.pom +08690338d01adc76e1bbee5077e7f9ab8efa68c78c28b03fafd453ced2528bfe /com/github/ReplayMod/ReplayStudio/1.12.1/e6f898d/1.12.1-e6f898d.jar +561716bffe975418b7bf2067621d931dbd685e9f961d5ce40d1f8841d84570a3 /com/github/ReplayMod/ReplayStudio/1.12.2/e6f898d/1.12.2-e6f898d.pom +0c4e0f20a09925b529795aef86192d90dc94360eefd6b49e7f38d74930e2b7f6 /com/github/ReplayMod/ReplayStudio/1.12.2/e6f898d/1.12.2-e6f898d.jar +b5ccd97d108791fc24627e056116ca05f9e47bfa8a9f1ba4e9d0d730a91460aa /com/github/ReplayMod/ReplayStudio/1.12/e6f898d/1.12-e6f898d.pom +b2126228c5e49c8ed1d7c9da5a59280bfd63c24b0507ee34097c64ee31837ee1 /com/github/ReplayMod/ReplayStudio/1.12/e6f898d/1.12-e6f898d.jar +21cd9c0581ddedd4e7bb2dda9db82b56c2ff5b2b9e71859803fa892fec459fcb /com/github/ReplayMod/ReplayStudio/1.8/e6f898d/1.8-e6f898d.pom +44046515c61f1d2ae73cf37949b460b2e48dfdb70bfcef0c0a09e3a5ad0e8ab9 /com/github/ReplayMod/ReplayStudio/1.8/e6f898d/1.8-e6f898d.jar +481c532b43ddfcb7c9025abf37d2e502935e2343a08c496b029e12826d682de8 /com/github/ReplayMod/ReplayStudio/1.9.4/e6f898d/1.9.4-e6f898d.pom +f2090b2bd7acdff598ef53f1a997572d774752dc6115f176bbe925026d5ac0ab /com/github/ReplayMod/ReplayStudio/1.9.4/e6f898d/1.9.4-e6f898d.jar 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/versions/common.gradle b/versions/common.gradle index 81d78a7f..8b008d84 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -79,7 +79,7 @@ dependencies { def studioVersion = project.name if (studioVersion == '1.8.9') studioVersion = '1.8' - shade("com.github.ReplayMod.ReplayStudio:$studioVersion:9fd96a7"){ + shade("com.github.ReplayMod.ReplayStudio:$studioVersion:e6f898d"){ exclude group: 'com.google.guava', module: 'guava' // provided by MC exclude group: 'org.projectlombok', module: 'lombok' // runtime only for @SneakyThrows which isn't used } From 221991bf2c1f19534f3a6481c02f9149412ffd56 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Thu, 15 Mar 2018 21:56:46 +0100 Subject: [PATCH 5/8] Do not shade gson lib (fixes #115) The gson lib is provided by MC anyway. Additionally, by shading it, we relocate the lib via the FG reobfJar task which doesn't properly handle annotations causing the Mixin lib's MixinConfig to no longer parse properly. --- gradle/reprod/checksums.txt | 32 ++++++++++++++++---------------- versions/common.gradle | 4 +++- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/gradle/reprod/checksums.txt b/gradle/reprod/checksums.txt index 1deeb35c..8cc26694 100644 --- a/gradle/reprod/checksums.txt +++ b/gradle/reprod/checksums.txt @@ -26,22 +26,22 @@ f539e2ca00d43e3d2261b7334eb05137f0eb1d3d5e3cc2c2716b0071e27783ed /com/github/Min fe525f413965d4f5f65b70f08b90b3d3f944714f665e2c5636a6e8fec08d3c74 /com/github/MinecraftForge/Srg2Source/ea4ea62/Srg2Source-ea4ea62.pom ecf57aab63509ec0ce3937c2215bc3a2e3cb6357cd11095978db18bd3251731a /com/github/ModCoderPack/MCInjector/7258466/MCInjector-7258466.jar dc7ed1f4f0ddd8f5ce3b449db944907a5eb2855dbbbc59b08dad1247ebafba33 /com/github/ModCoderPack/MCInjector/7258466/MCInjector-7258466.pom -70429d88b6f4705ce385491500afa126e936447f992c7d4221d0751e8f0f7c50 /com/github/ReplayMod/ReplayStudio/1.10.2/e6f898d/1.10.2-e6f898d.pom -4d7e34aa0ca77482fb2d4c6617ac556e1c0dfcb1be1e651578200d7198ee3cfc /com/github/ReplayMod/ReplayStudio/1.10.2/e6f898d/1.10.2-e6f898d.jar -c449a20fa5c6365d7c16c3fc3b81fa5f260becc962075d1c02c5a998e4c1c36f /com/github/ReplayMod/ReplayStudio/1.11.2/e6f898d/1.11.2-e6f898d.pom -3feaeb7ddfc841318f842dbd850aff858222ad4abca31ddfffa8c5c2f8c0ae67 /com/github/ReplayMod/ReplayStudio/1.11.2/e6f898d/1.11.2-e6f898d.jar -d55fffd172e435aff8cb31338a7dea43cc7b19eb0af074de0faefad4864f5493 /com/github/ReplayMod/ReplayStudio/1.11/e6f898d/1.11-e6f898d.pom -7fb4e0b0e8e4c0cada73c7091064d50131dfaadf257619f10f391fb8ed341f3c /com/github/ReplayMod/ReplayStudio/1.11/e6f898d/1.11-e6f898d.jar -b758ff30bfc9297a9c13d5ca607fc9096a43682a46951d9ad1cefa5400e4d5fe /com/github/ReplayMod/ReplayStudio/1.12.1/e6f898d/1.12.1-e6f898d.pom -08690338d01adc76e1bbee5077e7f9ab8efa68c78c28b03fafd453ced2528bfe /com/github/ReplayMod/ReplayStudio/1.12.1/e6f898d/1.12.1-e6f898d.jar -561716bffe975418b7bf2067621d931dbd685e9f961d5ce40d1f8841d84570a3 /com/github/ReplayMod/ReplayStudio/1.12.2/e6f898d/1.12.2-e6f898d.pom -0c4e0f20a09925b529795aef86192d90dc94360eefd6b49e7f38d74930e2b7f6 /com/github/ReplayMod/ReplayStudio/1.12.2/e6f898d/1.12.2-e6f898d.jar -b5ccd97d108791fc24627e056116ca05f9e47bfa8a9f1ba4e9d0d730a91460aa /com/github/ReplayMod/ReplayStudio/1.12/e6f898d/1.12-e6f898d.pom -b2126228c5e49c8ed1d7c9da5a59280bfd63c24b0507ee34097c64ee31837ee1 /com/github/ReplayMod/ReplayStudio/1.12/e6f898d/1.12-e6f898d.jar -21cd9c0581ddedd4e7bb2dda9db82b56c2ff5b2b9e71859803fa892fec459fcb /com/github/ReplayMod/ReplayStudio/1.8/e6f898d/1.8-e6f898d.pom -44046515c61f1d2ae73cf37949b460b2e48dfdb70bfcef0c0a09e3a5ad0e8ab9 /com/github/ReplayMod/ReplayStudio/1.8/e6f898d/1.8-e6f898d.jar -481c532b43ddfcb7c9025abf37d2e502935e2343a08c496b029e12826d682de8 /com/github/ReplayMod/ReplayStudio/1.9.4/e6f898d/1.9.4-e6f898d.pom -f2090b2bd7acdff598ef53f1a997572d774752dc6115f176bbe925026d5ac0ab /com/github/ReplayMod/ReplayStudio/1.9.4/e6f898d/1.9.4-e6f898d.jar +5a3ec92e5507df0c39475a7162104bdaebf9846b3ff057bc8beb62b0e600a58b /com/github/ReplayMod/ReplayStudio/1.10.2/6cfc69b/1.10.2-6cfc69b.pom +1e464084d1471e7b11994a62f5b837e8e2d0d2786481c6c63b26c1d91820dd0d /com/github/ReplayMod/ReplayStudio/1.10.2/6cfc69b/1.10.2-6cfc69b.jar +cdae4a16367dd0f6c921e45364fd8a4bc6b8b864a690d30acd97ec5138c4259c /com/github/ReplayMod/ReplayStudio/1.11.2/6cfc69b/1.11.2-6cfc69b.pom +a155ed9db00891c34c4c5032b90f1b959cc3b9beeea1dcbb54c5125ee29cf0a8 /com/github/ReplayMod/ReplayStudio/1.11.2/6cfc69b/1.11.2-6cfc69b.jar +a9d2c26ec4a56ab6714d7887504fffb71b728af91809a2c20b31be0d08e94dc5 /com/github/ReplayMod/ReplayStudio/1.11/6cfc69b/1.11-6cfc69b.pom +49b230872bf25d3568f90bab46a786f58d8c8f9044255f37c53e65b19a321ca0 /com/github/ReplayMod/ReplayStudio/1.11/6cfc69b/1.11-6cfc69b.jar +6acdb31e12dbe3df1e339ca2622484f67f7cd7d7ae55210612f17d028aa4114f /com/github/ReplayMod/ReplayStudio/1.12.2/6cfc69b/1.12.2-6cfc69b.pom +2beee4b8946d787f228ad3a9c2c6fdd9243f0972406d3bbb182b7929c6291170 /com/github/ReplayMod/ReplayStudio/1.12.2/6cfc69b/1.12.2-6cfc69b.jar +2abd042a4465d3efeb636181c66ab58fa8b4165818d80f59f322e06efc69e386 /com/github/ReplayMod/ReplayStudio/1.12.1/6cfc69b/1.12.1-6cfc69b.pom +add89b61bbfd24a2eccffadfa6b5293d8fbb9dd0bde2bc332553208b57faf461 /com/github/ReplayMod/ReplayStudio/1.12.1/6cfc69b/1.12.1-6cfc69b.jar +0dd0ea826dd559d151ffa6d78f90c88fd0b69062f9f34610283144d8bef75f6d /com/github/ReplayMod/ReplayStudio/1.12/6cfc69b/1.12-6cfc69b.pom +d5761025f4ff975753f4f5ae044fb0bba3a0d2e85ac4698c123f3bd80d88bbc5 /com/github/ReplayMod/ReplayStudio/1.12/6cfc69b/1.12-6cfc69b.jar +479a762a47c1bcdaf44586594793b2d6a8f4d12b784826373ab80f52f01b3a24 /com/github/ReplayMod/ReplayStudio/1.8/6cfc69b/1.8-6cfc69b.pom +cd5b202b4f9857147d4a1c5ead57242dccc10daee7895aeeead4155046f307f9 /com/github/ReplayMod/ReplayStudio/1.8/6cfc69b/1.8-6cfc69b.jar +c1e24a8d5dbf77c5f1d0e3d1604a752951ef7036979e4023bbfc7eb08e6e877b /com/github/ReplayMod/ReplayStudio/1.9.4/6cfc69b/1.9.4-6cfc69b.pom +6f734a6825344b818c2d0774410e27e57904c29974a2f8919c4e98e1bdcb82a0 /com/github/ReplayMod/ReplayStudio/1.9.4/6cfc69b/1.9.4-6cfc69b.jar 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/versions/common.gradle b/versions/common.gradle index 8b008d84..bfd388e6 100644 --- a/versions/common.gradle +++ b/versions/common.gradle @@ -61,6 +61,8 @@ if (System.getenv('REPRODUCIBLE_BUILD') == '1') repositories.all convertRepoToHt configurations { shade compile.extendsFrom shade + + shade.exclude group: 'com.google.code.gson', module: 'gson' // provided by MC } dependencies { @@ -79,7 +81,7 @@ dependencies { def studioVersion = project.name if (studioVersion == '1.8.9') studioVersion = '1.8' - shade("com.github.ReplayMod.ReplayStudio:$studioVersion:e6f898d"){ + shade("com.github.ReplayMod.ReplayStudio:$studioVersion:6cfc69b"){ exclude group: 'com.google.guava', module: 'guava' // provided by MC exclude group: 'org.projectlombok', module: 'lombok' // runtime only for @SneakyThrows which isn't used } From 31a9e4eaf6d82cb14f65854c63e448dc6bc314d0 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Thu, 15 Mar 2018 22:17:51 +0100 Subject: [PATCH 6/8] Fix preprocessor not processing ifdef --- versions/preprocessor.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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") From 9cdd1bbca848e0adb576854529137caf039fb9e6 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Thu, 15 Mar 2018 22:56:40 +0100 Subject: [PATCH 7/8] Sign jars based on current commit instead of tag --- gradle/reprod/setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 0a26f59c9c5ac6ec72b8bdb758ef126f2d10e28d Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Thu, 15 Mar 2018 23:12:53 +0100 Subject: [PATCH 8/8] Release 2.1.2 --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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