From 8dbcac7afca552f2bb4966747a3ac587e93b4fd5 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 15 Apr 2023 15:08:05 -0400 Subject: [PATCH] Speed up world creation screen --- .../CreateWorldScreenMixin.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/CreateWorldScreenMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/CreateWorldScreenMixin.java index ef52705d..260f8f2b 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/CreateWorldScreenMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/skip_first_datapack_reload/CreateWorldScreenMixin.java @@ -2,8 +2,16 @@ package org.embeddedt.modernfix.mixin.perf.skip_first_datapack_reload; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.worldselection.CreateWorldScreen; +import net.minecraft.client.gui.screens.worldselection.WorldCreationContext; import net.minecraft.network.chat.Component; +import net.minecraft.server.packs.repository.PackRepository; +import net.minecraft.world.level.WorldDataConfiguration; 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.Consumer; @Mixin(CreateWorldScreen.class) public abstract class CreateWorldScreenMixin extends Screen { @@ -11,4 +19,18 @@ public abstract class CreateWorldScreenMixin extends Screen { super(arg); } // TODO: incorporate https://github.com/MinecraftForge/MinecraftForge/pull/9454 + @ModifyArg(method = "openFresh", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/worldselection/CreateWorldScreen;createDefaultLoadConfig(Lnet/minecraft/server/packs/repository/PackRepository;Lnet/minecraft/world/level/WorldDataConfiguration;)Lnet/minecraft/server/WorldLoader$InitConfig;"), index = 1) + private static WorldDataConfiguration useDefaultConfiguration(WorldDataConfiguration config) { + return WorldDataConfiguration.DEFAULT; + } + + @Redirect(method = "openFresh", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/worldselection/WorldCreationContext;withDataConfiguration(Lnet/minecraft/world/level/WorldDataConfiguration;)Lnet/minecraft/client/gui/screens/worldselection/WorldCreationContext;")) + private static WorldCreationContext sameDataConfiguration(WorldCreationContext context, WorldDataConfiguration config) { + return context; + } + + @Redirect(method = "openFresh", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/worldselection/CreateWorldScreen;tryApplyNewDataPacks(Lnet/minecraft/server/packs/repository/PackRepository;ZLjava/util/function/Consumer;)V")) + private static void skipReapply(CreateWorldScreen screen, PackRepository repository, boolean bl, Consumer consumer) { + /* no-op */ + } }