From 9de6cd63d1a8219f27fb57be09960ac5e1619065 Mon Sep 17 00:00:00 2001 From: vaporvee Date: Sun, 22 Jun 2025 02:27:13 +0200 Subject: [PATCH] ported no ram window to fabric finishing it --- .../mixin/MinecraftPauseMixin.java | 24 +++++++++++++++++ .../loadsupport/mixin/MixinTitleScreen.java | 18 ------------- .../loadsupport/mixin/WindowHideMixin.java | 26 +++++++++++++++++++ .../resources/loadsupport.fabric.mixins.json | 3 ++- 4 files changed, 52 insertions(+), 19 deletions(-) create mode 100644 fabric/src/main/java/com/vaporvee/loadsupport/mixin/MinecraftPauseMixin.java delete mode 100644 fabric/src/main/java/com/vaporvee/loadsupport/mixin/MixinTitleScreen.java create mode 100644 fabric/src/main/java/com/vaporvee/loadsupport/mixin/WindowHideMixin.java diff --git a/fabric/src/main/java/com/vaporvee/loadsupport/mixin/MinecraftPauseMixin.java b/fabric/src/main/java/com/vaporvee/loadsupport/mixin/MinecraftPauseMixin.java new file mode 100644 index 0000000..93e7083 --- /dev/null +++ b/fabric/src/main/java/com/vaporvee/loadsupport/mixin/MinecraftPauseMixin.java @@ -0,0 +1,24 @@ +package com.vaporvee.loadsupport.mixin; + +import com.vaporvee.loadsupport.Allocated; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.Minecraft; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Environment(EnvType.CLIENT) +@Mixin(Minecraft.class) +public class MinecraftPauseMixin { + @Inject(method = "run", at = @At("HEAD"), cancellable = true) + private void onRunHead(CallbackInfo ci) { + if (!Allocated.enoughMemory) { + while (Allocated.isWindowOpen()) { + try { Thread.sleep(100); } catch (InterruptedException ignored) {} + } + ci.cancel(); + } + } +} diff --git a/fabric/src/main/java/com/vaporvee/loadsupport/mixin/MixinTitleScreen.java b/fabric/src/main/java/com/vaporvee/loadsupport/mixin/MixinTitleScreen.java deleted file mode 100644 index ec73678..0000000 --- a/fabric/src/main/java/com/vaporvee/loadsupport/mixin/MixinTitleScreen.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.vaporvee.loadsupport.mixin; - -import com.vaporvee.loadsupport.Constants; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.TitleScreen; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(TitleScreen.class) -public class MixinTitleScreen { - - @Inject(at = @At("HEAD"), method = "init()V") - private void init(CallbackInfo info) { - - } -} \ No newline at end of file diff --git a/fabric/src/main/java/com/vaporvee/loadsupport/mixin/WindowHideMixin.java b/fabric/src/main/java/com/vaporvee/loadsupport/mixin/WindowHideMixin.java new file mode 100644 index 0000000..e075b7c --- /dev/null +++ b/fabric/src/main/java/com/vaporvee/loadsupport/mixin/WindowHideMixin.java @@ -0,0 +1,26 @@ +package com.vaporvee.loadsupport.mixin; + +import com.mojang.blaze3d.platform.DisplayData; +import com.mojang.blaze3d.platform.ScreenManager; +import com.mojang.blaze3d.platform.Window; +import com.mojang.blaze3d.platform.WindowEventHandler; +import com.vaporvee.loadsupport.Allocated; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import org.lwjgl.glfw.GLFW; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Environment(EnvType.CLIENT) +@Mixin(Window.class) +public class WindowHideMixin { + @Inject(method = "", at = @At("RETURN")) + private void onWindowInit(WindowEventHandler eventHandler, ScreenManager screenManager, DisplayData displayData, String preferredFullscreenVideoMode, String title, CallbackInfo ci) { + if (!Allocated.enoughMemory) { + long w = ((Window)(Object)this).getWindow(); + GLFW.glfwHideWindow(w); + } + } +} diff --git a/fabric/src/main/resources/loadsupport.fabric.mixins.json b/fabric/src/main/resources/loadsupport.fabric.mixins.json index 619a6f7..e3e5de3 100644 --- a/fabric/src/main/resources/loadsupport.fabric.mixins.json +++ b/fabric/src/main/resources/loadsupport.fabric.mixins.json @@ -6,7 +6,8 @@ "compatibilityLevel": "JAVA_21", "mixins": [], "client": [ - "MixinTitleScreen" + "MinecraftPauseMixin", + "WindowHideMixin" ], "server": [], "injectors": {