Fix a number of injections being misplaced on 1.18

This commit is contained in:
embeddedt 2023-02-24 19:38:19 -05:00
parent 4af85f4076
commit 654c98b969
No known key found for this signature in database
GPG Key ID: A69433EC199B5613
4 changed files with 27 additions and 6 deletions

View File

@ -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<ChunkHolder> alwaysAccessible(Predicate<ChunkHolder> 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;
}
}

View File

@ -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<WorldStem> 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<WorldStem> cir) {
float timeSpentReloading = ((float)(System.nanoTime() - datapackReloadStartTime) / 1000000000f);
ModernFix.LOGGER.warn("Datapack reload took " + timeSpentReloading + " seconds.");

View File

@ -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();
}
}

View File

@ -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",