diff --git a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/edge_chunk_not_saved/ChunkManagerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/edge_chunk_not_saved/ChunkManagerMixin.java index 188deb57..8c8990e7 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/bugfix/edge_chunk_not_saved/ChunkManagerMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/bugfix/edge_chunk_not_saved/ChunkManagerMixin.java @@ -9,6 +9,7 @@ import net.minecraft.server.level.ChunkMap; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.Redirect; import java.util.function.Predicate; @@ -25,8 +26,8 @@ public class ChunkManagerMixin { return c -> c instanceof ProtoChunk || c instanceof ImposterProtoChunk || c instanceof LevelChunk; } - @ModifyArg(method = "saveAllChunks(Z)V", at = @At(value = "INVOKE", target = "Ljava/util/stream/Stream;filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;", ordinal = 3), require = 0) - private Predicate alwaysAccessible(Predicate chunkHolder) { - return c -> true; + @Redirect(method = "saveChunkIfNeeded", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ChunkHolder;wasAccessibleSinceLastSave()Z"), require = 0) + private boolean alwaysAccessible(ChunkHolder chunkHolder) { + return true; } } diff --git a/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/MinecraftMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/MinecraftMixin.java index 0dfe8de7..260b0b0d 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/MinecraftMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/MinecraftMixin.java @@ -22,12 +22,12 @@ import java.util.function.Function; public class MinecraftMixin { private long datapackReloadStartTime; - @Inject(method = "makeWorldStem", at = @At(value = "HEAD")) + @Inject(method = "makeWorldStem(Lnet/minecraft/server/packs/repository/PackRepository;ZLnet/minecraft/server/WorldStem$DataPackConfigSupplier;Lnet/minecraft/server/WorldStem$WorldDataSupplier;)Lnet/minecraft/server/WorldStem;", at = @At(value = "HEAD")) private void recordReloadStart(CallbackInfoReturnable cir) { datapackReloadStartTime = System.nanoTime(); } - @Inject(method = "makeWorldStem", at = @At(value = "RETURN")) + @Inject(method = "makeWorldStem(Lnet/minecraft/server/packs/repository/PackRepository;ZLnet/minecraft/server/WorldStem$DataPackConfigSupplier;Lnet/minecraft/server/WorldStem$WorldDataSupplier;)Lnet/minecraft/server/WorldStem;", at = @At(value = "RETURN")) private void recordReloadEnd(CallbackInfoReturnable cir) { float timeSpentReloading = ((float)(System.nanoTime() - datapackReloadStartTime) / 1000000000f); ModernFix.LOGGER.warn("Datapack reload took " + timeSpentReloading + " seconds."); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/ReloadableServerResourcesMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/ReloadableServerResourcesMixin.java new file mode 100644 index 00000000..7f22fdac --- /dev/null +++ b/src/main/java/org/embeddedt/modernfix/mixin/feature/measure_time/ReloadableServerResourcesMixin.java @@ -0,0 +1,19 @@ +package org.embeddedt.modernfix.mixin.feature.measure_time; + +import net.minecraft.server.ReloadableServerResources; +import org.embeddedt.modernfix.core.config.ModernFixConfig; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(ReloadableServerResources.class) +public class ReloadableServerResourcesMixin { + /** + * @author embeddedt + * @reason add ability to use this feature in modpacks + */ + @ModifyArg(method = "loadResources", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/resources/SimpleReloadInstance;create(Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/List;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Z)Lnet/minecraft/server/packs/resources/ReloadInstance;"), index = 5) + private static boolean enableDebugReloader(boolean bl) { + return bl || ModernFixConfig.ENABLE_DEBUG_RELOADER.get(); + } +} diff --git a/src/main/resources/modernfix.mixins.json b/src/main/resources/modernfix.mixins.json index 0c6b3800..444d26d0 100644 --- a/src/main/resources/modernfix.mixins.json +++ b/src/main/resources/modernfix.mixins.json @@ -23,7 +23,8 @@ "perf.datapack_reload_exceptions.RecipeManagerMixin", "feature.measure_time.BootstrapMixin", "feature.measure_time.SimpleReloadableResourceManagerMixin", - "feature.measure_time.ProfiledReloadInstanceMixin" + "feature.measure_time.ProfiledReloadInstanceMixin", + "feature.measure_time.ReloadableServerResourcesMixin" ], "client": [ "core.MinecraftMixin",