diff --git a/build.gradle b/build.gradle index 6797be1..aaca620 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.6-SNAPSHOT' + id 'fabric-loom' version '1.10-SNAPSHOT' id "com.modrinth.minotaur" version "2.+" id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index 1745ca9..707f6b6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,9 +4,9 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21 -yarn_mappings=1.21+build.9 -loader_version=0.15.11 +minecraft_version=1.21.4 +yarn_mappings=1.21.4+build.8 +loader_version=0.16.13 # Mod Properties mod_version=0.1.2 @@ -14,6 +14,6 @@ maven_group=xyz.devcomp archives_base_name=elytra-lock # Dependencies -fabric_version=0.102.0+1.21 -yacl_version=3.5.0+1.21-fabric -modmenu_version=11.0.1 +fabric_version=0.119.2+1.21.4 +yacl_version=3.6.6+1.21.4-fabric +modmenu_version=13.0.3 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e644113..9bbc975 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23..cea7a79 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a4..faf9300 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -84,7 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -203,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. diff --git a/gradlew.bat b/gradlew.bat index 25da30d..9d21a21 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## diff --git a/src/main/java/xyz/devcomp/elytralock/ElytraLock.java b/src/main/java/xyz/devcomp/elytralock/ElytraLock.java index 0445f2e..dd2ae80 100644 --- a/src/main/java/xyz/devcomp/elytralock/ElytraLock.java +++ b/src/main/java/xyz/devcomp/elytralock/ElytraLock.java @@ -1,13 +1,6 @@ package xyz.devcomp.elytralock; -import xyz.devcomp.elytralock.config.ConfigHandler; -import xyz.devcomp.elytralock.config.ConfigUtil; -import xyz.devcomp.elytralock.events.ClientExitHandler; -import xyz.devcomp.elytralock.events.ClientTickEndHandler; -import xyz.devcomp.elytralock.events.HudRenderHandler; - import org.lwjgl.glfw.GLFW; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,13 +8,18 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; -import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; +import net.fabricmc.fabric.api.client.rendering.v1.HudLayerRegistrationCallback; import net.fabricmc.loader.api.FabricLoader; - import net.minecraft.client.MinecraftClient; import net.minecraft.client.option.KeyBinding; import net.minecraft.client.util.InputUtil; +import xyz.devcomp.elytralock.config.ConfigHandler; +import xyz.devcomp.elytralock.config.ConfigUtil; +import xyz.devcomp.elytralock.events.ClientExitHandler; +import xyz.devcomp.elytralock.events.ClientTickEndHandler; +import xyz.devcomp.elytralock.events.HudRenderHandler; + public class ElytraLock implements ClientModInitializer { public static final Logger LOGGER = LoggerFactory.getLogger("Elytra Lock"); public static final FabricLoader LOADER = FabricLoader.getInstance(); @@ -48,7 +46,7 @@ public class ElytraLock implements ClientModInitializer { LOGGER.warn("YACL_v3 is not loaded, not persisting elytra toggle"); } - HudRenderCallback.EVENT.register(new HudRenderHandler()); + HudLayerRegistrationCallback.EVENT.register(new HudRenderHandler()); ClientTickEvents.END_CLIENT_TICK.register(new ClientTickEndHandler()); ClientLifecycleEvents.CLIENT_STOPPING.register(new ClientExitHandler()); LOGGER.info("Registered HUD_RENDER, END_CLIENT_TICK and CLIENT_STOPPING events successfully!"); diff --git a/src/main/java/xyz/devcomp/elytralock/events/HudRenderHandler.java b/src/main/java/xyz/devcomp/elytralock/events/HudRenderHandler.java index b627850..63843e8 100644 --- a/src/main/java/xyz/devcomp/elytralock/events/HudRenderHandler.java +++ b/src/main/java/xyz/devcomp/elytralock/events/HudRenderHandler.java @@ -1,21 +1,28 @@ package xyz.devcomp.elytralock.events; -import xyz.devcomp.elytralock.ElytraLock; - -import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; +import net.fabricmc.fabric.api.client.rendering.v1.HudLayerRegistrationCallback; +import net.fabricmc.fabric.api.client.rendering.v1.IdentifiedLayer; +import net.fabricmc.fabric.api.client.rendering.v1.LayeredDrawerWrapper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.RenderTickCounter; import net.minecraft.client.util.Window; import net.minecraft.util.Arm; import net.minecraft.util.Identifier; +import xyz.devcomp.elytralock.ElytraLock; -public class HudRenderHandler implements HudRenderCallback { +public class HudRenderHandler implements HudLayerRegistrationCallback { public static final int WIDTH = 16; public static final int HEIGHT = 16; + private static final Identifier LAYER_ID = Identifier.of("elytralock", "toggle-status-indicator"); @Override - public void onHudRender(DrawContext context, RenderTickCounter tickCounter) { + public void register(LayeredDrawerWrapper layeredDrawer) { + layeredDrawer.attachLayerBefore(IdentifiedLayer.CHAT, LAYER_ID, HudRenderHandler::render); + } + + private static void render(DrawContext context, RenderTickCounter tickCounter) { if (!MinecraftClient.isHudEnabled()) return; @@ -32,6 +39,7 @@ public class HudRenderHandler implements HudRenderCallback { Window window = ElytraLock.client.getWindow(); int width = window.getScaledWidth(), height = window.getScaledHeight(); - context.drawTexture(icon, (width / 2) + offset, height - HEIGHT - 3, 0, 0, WIDTH, HEIGHT, WIDTH, HEIGHT); + context.drawTexture(RenderLayer::getGuiTextured, icon, (width / 2) + offset, height - HEIGHT - 3, 0, 0, WIDTH, + HEIGHT, WIDTH, HEIGHT); } } \ No newline at end of file diff --git a/src/main/java/xyz/devcomp/elytralock/mixin/PlayerEntityMixin.java b/src/main/java/xyz/devcomp/elytralock/mixin/PlayerEntityMixin.java index 39f8975..8e57c91 100644 --- a/src/main/java/xyz/devcomp/elytralock/mixin/PlayerEntityMixin.java +++ b/src/main/java/xyz/devcomp/elytralock/mixin/PlayerEntityMixin.java @@ -25,7 +25,7 @@ public class PlayerEntityMixin { } }); - @Inject(method = "checkFallFlying()Z", at = @At("HEAD"), cancellable = true) + @Inject(method = "checkGliding()Z", at = @At("HEAD"), cancellable = true) private void preventFallFlying(CallbackInfoReturnable info) { if (logOnce.run("Elytra is locked, so preventing fall flying")) info.setReturnValue(false);