From 716cf8c64945cbfb49318499e0190d1d6bf1c4fb Mon Sep 17 00:00:00 2001 From: gnembon Date: Mon, 24 Jun 2019 15:19:58 -0300 Subject: [PATCH] 1.14.3 and fabric server crash fix/omission --- gradle.properties | 4 +- .../mixins/ServerChunkManager_tickMixin.java | 22 +++++++++++ .../ThreadedAnvilChunkStorage_tickMixin.java | 38 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 1 + 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/main/java/carpet/mixins/ThreadedAnvilChunkStorage_tickMixin.java diff --git a/gradle.properties b/gradle.properties index f87ef46c..5a5a3144 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use # or better: https://modmuss50.me/fabric.html - minecraft_version=1.14.3-pre4 - yarn_mappings=1.14.3-pre4+build.1 + minecraft_version=1.14.3 + yarn_mappings=1.14.3+build.1 loader_version=0.4.8+build.155 # Mod Properties diff --git a/src/main/java/carpet/mixins/ServerChunkManager_tickMixin.java b/src/main/java/carpet/mixins/ServerChunkManager_tickMixin.java index 969051e7..5b0999f5 100644 --- a/src/main/java/carpet/mixins/ServerChunkManager_tickMixin.java +++ b/src/main/java/carpet/mixins/ServerChunkManager_tickMixin.java @@ -24,6 +24,9 @@ public abstract class ServerChunkManager_tickMixin CarpetProfiler.ProfilerToken currentSection; + /* Replaced with ThreadedAnvilCHunkStorage_Mixin path and separately isolated spawning and random ticks here + ticket manager is not worth its own section at this point - will fall into rest, until its fixed. + @Inject(method = "tick(Ljava/util/function/BooleanSupplier;)V", at = @At( value = "CONSTANT", args = "stringValue=purge" @@ -67,6 +70,25 @@ public abstract class ServerChunkManager_tickMixin CarpetProfiler.end_current_section(currentSection); } } + */ + + + + + @Inject(method = "tickChunks", at = @At("HEAD")) + private void startSpawningSection(CallbackInfo ci) + { + currentSection = CarpetProfiler.start_section(world, "Spawning and Random Ticks", CarpetProfiler.TYPE.GENERAL); + } + + @Inject(method = "tickChunks", at = @At("RETURN")) + private void stopSpawningSection(CallbackInfo ci) + { + if (currentSection != null) + { + CarpetProfiler.end_current_section(currentSection); + } + } //// Tick freeze @Redirect(method = "tickChunks", at = @At( diff --git a/src/main/java/carpet/mixins/ThreadedAnvilChunkStorage_tickMixin.java b/src/main/java/carpet/mixins/ThreadedAnvilChunkStorage_tickMixin.java new file mode 100644 index 00000000..35044b84 --- /dev/null +++ b/src/main/java/carpet/mixins/ThreadedAnvilChunkStorage_tickMixin.java @@ -0,0 +1,38 @@ +package carpet.mixins; + +import carpet.utils.CarpetProfiler; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.server.world.ThreadedAnvilChunkStorage; +import org.spongepowered.asm.mixin.Final; +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.callback.CallbackInfo; + +import java.util.function.BooleanSupplier; + +@Mixin(ThreadedAnvilChunkStorage.class) +public class ThreadedAnvilChunkStorage_tickMixin +{ + @Shadow @Final private ServerWorld world; + CarpetProfiler.ProfilerToken currentSection; + + @Inject(method = "tick", at = @At("HEAD")) + private void startProfilerSection(BooleanSupplier booleanSupplier_1, CallbackInfo ci) + { + currentSection = CarpetProfiler.start_section(world, "Unloading", CarpetProfiler.TYPE.GENERAL); + } + + @Inject(method = "tick", at = @At("RETURN")) + private void stopProfilerSecion(BooleanSupplier booleanSupplier_1, CallbackInfo ci) + { + if (currentSection != null) + { + CarpetProfiler.end_current_section(currentSection); + } + } + + + +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 622fd716..fb04757a 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -19,6 +19,7 @@ "World_tickMixin", "ServerWorld_tickMixin", "ServerChunkManager_tickMixin", + "ThreadedAnvilChunkStorage_tickMixin", "MobEntityMixin",