diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/loading_screen/ReceivingLevelScreenMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/loading_screen/LevelLoadStatusManagerMixin.java similarity index 56% rename from src/main/java/ca/spottedleaf/moonrise/mixin/loading_screen/ReceivingLevelScreenMixin.java rename to src/main/java/ca/spottedleaf/moonrise/mixin/loading_screen/LevelLoadStatusManagerMixin.java index 829a9241..baa24f5d 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/loading_screen/ReceivingLevelScreenMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/loading_screen/LevelLoadStatusManagerMixin.java @@ -1,38 +1,33 @@ package ca.spottedleaf.moonrise.mixin.loading_screen; -import net.minecraft.client.gui.screens.ReceivingLevelScreen; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.Component; +import net.minecraft.client.multiplayer.LevelLoadStatusManager; 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; -@Mixin(ReceivingLevelScreen.class) -public abstract class ReceivingLevelScreenMixin extends Screen { +@Mixin(LevelLoadStatusManager.class) +public abstract class LevelLoadStatusManagerMixin { @Shadow - public abstract void onClose(); - - protected ReceivingLevelScreenMixin(Component component) { - super(component); - } + private LevelLoadStatusManager.Status status; /** * @reason Close the loading screen immediately * @author Spottedleaf */ @Inject( - method = "tick", + method = "loadingPacketsReceived", cancellable = true, at = @At( value = "HEAD" ) ) private void immediatelyClose(final CallbackInfo ci) { - this.onClose(); - ci.cancel(); + if (this.status == LevelLoadStatusManager.Status.WAITING_FOR_SERVER) { + this.status = LevelLoadStatusManager.Status.LEVEL_READY; + ci.cancel(); + } } - } diff --git a/src/main/resources/moonrise.accesswidener b/src/main/resources/moonrise.accesswidener index 1e40fc95..661d1420 100644 --- a/src/main/resources/moonrise.accesswidener +++ b/src/main/resources/moonrise.accesswidener @@ -274,4 +274,8 @@ accessible field net/minecraft/server/level/ChunkMap$TrackedEntity serverEntity # ServerChunkCache$ChunkAndHolder accessible class net/minecraft/server/level/ServerChunkCache$ChunkAndHolder -accessible method net/minecraft/server/level/ServerChunkCache$ChunkAndHolder (Lnet/minecraft/world/level/chunk/LevelChunk;Lnet/minecraft/server/level/ChunkHolder;)V \ No newline at end of file +accessible method net/minecraft/server/level/ServerChunkCache$ChunkAndHolder (Lnet/minecraft/world/level/chunk/LevelChunk;Lnet/minecraft/server/level/ChunkHolder;)V + + +# LevelLoadStatusManager$Status +accessible class net/minecraft/client/multiplayer/LevelLoadStatusManager$Status \ No newline at end of file diff --git a/src/main/resources/moonrise.mixins.json b/src/main/resources/moonrise.mixins.json index eb4848e8..ff3f001b 100644 --- a/src/main/resources/moonrise.mixins.json +++ b/src/main/resources/moonrise.mixins.json @@ -114,7 +114,7 @@ "chunk_system.OptionsMixin", "collisions.LiquidBlockRendererMixin", "collisions.ParticleMixin", - "loading_screen.ReceivingLevelScreenMixin", + "loading_screen.LevelLoadStatusManagerMixin", "render.SectionRenderDispatcherMixin", "serverlist.ClientConnectionMixin", "serverlist.ServerAddressResolverMixin",