From b8521c8bbf351846913f48694a275077fde35754 Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 27 Feb 2020 23:01:23 -0400 Subject: [PATCH] run all tasks when warping --- .../mixins/MinecraftServer_tickspeedMixin.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/carpet/mixins/MinecraftServer_tickspeedMixin.java b/src/main/java/carpet/mixins/MinecraftServer_tickspeedMixin.java index d6629d10..ac475142 100644 --- a/src/main/java/carpet/mixins/MinecraftServer_tickspeedMixin.java +++ b/src/main/java/carpet/mixins/MinecraftServer_tickspeedMixin.java @@ -3,8 +3,10 @@ package carpet.mixins; import carpet.helpers.TickSpeed; import carpet.utils.CarpetProfiler; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.ServerTask; import net.minecraft.util.Util; import net.minecraft.util.profiler.DisableableProfiler; +import net.minecraft.util.thread.ReentrantThreadExecutor; import org.apache.logging.log4j.Logger; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -17,7 +19,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.function.BooleanSupplier; @Mixin(MinecraftServer.class) -public abstract class MinecraftServer_tickspeedMixin +public abstract class MinecraftServer_tickspeedMixin extends ReentrantThreadExecutor { @Shadow private volatile boolean running; @@ -31,6 +33,11 @@ public abstract class MinecraftServer_tickspeedMixin @Shadow @Final private DisableableProfiler profiler; + public MinecraftServer_tickspeedMixin(String name) + { + super(name); + } + @Shadow protected abstract void tick(BooleanSupplier booleanSupplier_1); @Shadow protected abstract boolean shouldKeepTicking(); @@ -117,7 +124,12 @@ public abstract class MinecraftServer_tickspeedMixin this.profiler.swap("nextTickWait"); this.field_19249 = true; this.field_19248 = Math.max(Util.getMeasuringTimeMs() + /*50L*/ msThisTick, this.timeReference); - this.method_16208(); + if (TickSpeed.time_warp_start_time != 0) + { + runTasks(); + runTasks(() -> !hasRunningTasks() ); + } + else { this.method_16208(); } this.profiler.pop(); this.profiler.endTick(); this.loading = true;