-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Nekeras <git@nekeras.de>
- Loading branch information
Showing
12 changed files
with
210 additions
and
227 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,7 @@ | ||
# Sets default memory used for gradle commands. Can be overridden by user or command line properties. | ||
# This is required to provide enough memory for the Minecraft decompilation process. | ||
org.gradle.jvmargs = -Xmx3G | ||
org.gradle.daemon = false | ||
|
||
minecraftVersion = 1.16.4 | ||
modVersion = 1.1.0 | ||
forgeVersion = 35.0.0 | ||
forgeMappings = 20200514-1.16 | ||
org.gradle.jvmargs=-Xmx3G | ||
org.gradle.daemon=false | ||
minecraftVersion=1.16.5 | ||
modVersion=1.1.1 | ||
forgeVersion=36.0.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
90 changes: 90 additions & 0 deletions
90
src/main/java/de/nekeras/borderless/FullscreenModeHolder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
package de.nekeras.borderless; | ||
|
||
import de.nekeras.borderless.fullscreen.FullscreenMode; | ||
import net.minecraft.client.MainWindow; | ||
import net.minecraft.client.Minecraft; | ||
import org.apache.logging.log4j.LogManager; | ||
import org.apache.logging.log4j.Logger; | ||
import org.lwjgl.glfw.GLFW; | ||
|
||
import javax.annotation.Nonnull; | ||
import java.util.Objects; | ||
|
||
public class FullscreenModeHolder { | ||
|
||
private static final Logger log = LogManager.getLogger(); | ||
private static FullscreenMode fullscreenMode; | ||
|
||
/** | ||
* Initializes the Minecraft environment to make it compatible with this mod. | ||
*/ | ||
public static void initMinecraft() { | ||
log.info("Reading fullscreen mode from config"); | ||
fullscreenMode = FullscreenMode.fromConfig(); | ||
log.info("Overwriting Minecraft WindowEventListener"); | ||
Minecraft minecraft = Minecraft.getInstance(); | ||
MainWindow window = minecraft.getWindow(); | ||
ReflectionUtil.updateWindowEventListener(window, FullscreenWindowEventListener::new); | ||
log.info("Overwrite finished"); | ||
FullscreenModeHolder.forceFullscreenModeUpdate(); | ||
} | ||
|
||
/** | ||
* Checks whether the {@link MainWindow} is currently in native fullscreen. This | ||
* may return different results than {@link MainWindow#isFullscreen()}. The window is considered | ||
* in native fullscreen if {@link GLFW#glfwGetWindowMonitor(long)} returns non-null and | ||
* {@link MainWindow#isFullscreen()} returns <code>true</code>. | ||
* | ||
* @return <code>true</code> if the window is currently in native fullscreen, otherwise | ||
* <code>false</code> | ||
*/ | ||
public static boolean isInNativeFullscreen(@Nonnull MainWindow window) { | ||
return window.isFullscreen() && GLFW.glfwGetWindowMonitor(window.getWindow()) != 0; | ||
} | ||
|
||
/** | ||
* The fullscreen mode that is applied instead of the native fullscreen once the user hits | ||
* F11 or switches to fullscreen in the video settings. | ||
* | ||
* @return The fullscreen mode | ||
*/ | ||
public static FullscreenMode getFullscreenMode() { | ||
return fullscreenMode; | ||
} | ||
|
||
/** | ||
* The fullscreen mode that is applied instead of the native fullscreen once the user hits | ||
* F11 or switches to fullscreen in the video settings. | ||
* | ||
* @param fullscreenMode The fullscreen mode | ||
*/ | ||
public static void setFullscreenMode(@Nonnull FullscreenMode fullscreenMode) { | ||
Objects.requireNonNull(fullscreenMode); | ||
|
||
Minecraft minecraft = Minecraft.getInstance(); | ||
MainWindow window = minecraft.getWindow(); | ||
FullscreenMode currentFullscreenMode = getFullscreenMode(); | ||
|
||
log.info("Resetting fullscreen mode '{}' - Window fullscreen: {}; Native fullscreen: {}", | ||
currentFullscreenMode == null ? null : currentFullscreenMode.getClass().getName(), | ||
window.isFullscreen(), | ||
isInNativeFullscreen(window)); | ||
|
||
if (currentFullscreenMode != null) { | ||
currentFullscreenMode.reset(window); | ||
} | ||
|
||
if (window.isFullscreen()) { | ||
log.info("Applying fullscreen mode '{}'", fullscreenMode.getClass().getName()); | ||
FullscreenModeHolder.fullscreenMode = fullscreenMode; | ||
fullscreenMode.apply(window); | ||
} | ||
} | ||
|
||
/** | ||
* Triggers an update for current {@link FullscreenMode}. | ||
*/ | ||
public static void forceFullscreenModeUpdate() { | ||
setFullscreenMode(getFullscreenMode()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.