diff --git a/build.gradle b/build.gradle index d66855c..7b6f1b7 100644 --- a/build.gradle +++ b/build.gradle @@ -9,6 +9,7 @@ group = project.maven_group repositories { maven { url "https://jitpack.io" } + maven { url "https://api.modrinth.com/maven" } } dependencies { @@ -19,6 +20,8 @@ dependencies { implementation include("com.github.KrLite:Pierced:${project.pierced_version}") modImplementation include("com.github.KrLite.Equator-v2:Animation:${project.minecraft_version}-${project.equator_version}") + + compileOnly "maven.modrinth:raised:${project.raised_version}" } processResources { diff --git a/gradle.properties b/gradle.properties index f8345f1..84ec25a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version = 1.19 yarn_mappings = 1.19+build.4 loader_version = 0.14.19 -mod_version = 1.3.0 +mod_version = 1.4.0 maven_group = net.krlite archives_base_name = verticality @@ -14,3 +14,4 @@ archives_base_name = verticality fabric_version = 0.58.0+1.19 pierced_version = v1.2 equator_version = v2.5.3 +raised_version = Fabric-1.19.2-2.0.0 diff --git a/src/main/java/net/krlite/verticality/Verticality.java b/src/main/java/net/krlite/verticality/Verticality.java index 3d1516d..c91847f 100644 --- a/src/main/java/net/krlite/verticality/Verticality.java +++ b/src/main/java/net/krlite/verticality/Verticality.java @@ -1,7 +1,9 @@ package net.krlite.verticality; +import dev.yurisuika.raised.Raised; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.loader.api.FabricLoader; import net.krlite.equator.math.algebra.Curves; import net.krlite.equator.math.algebra.Theory; import net.krlite.equator.visual.animation.Slice; @@ -18,6 +20,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.function.Supplier; + public class Verticality implements ModInitializer { public static final String NAME = "Verticality", ID = "verticality"; public static final Logger LOGGER = LoggerFactory.getLogger(ID); @@ -58,6 +62,7 @@ private static void play(SoundEvent sound) { earlier = new InterpolatedDouble(0, 0.013); private static boolean enabled; private static float spectatorMenuHeight = 0; + private static Supplier raisedShift = () -> 0; static { hotbar.onPlay(() -> { @@ -106,6 +111,14 @@ private static void play(SoundEvent sound) { public void onInitialize() { PREFERENCES.save(); Sounds.register(); + + if (FabricLoader.getInstance().isModLoaded("raised")) { + raisedShift = Raised::getHud; + } + } + + public static int raisedShift() { + return raisedShift.get(); } public static int height() { diff --git a/src/main/java/net/krlite/verticality/mixin/ChatHudMixin.java b/src/main/java/net/krlite/verticality/mixin/ChatHudMixin.java index 618628d..235f592 100644 --- a/src/main/java/net/krlite/verticality/mixin/ChatHudMixin.java +++ b/src/main/java/net/krlite/verticality/mixin/ChatHudMixin.java @@ -20,6 +20,6 @@ private void render(MatrixStack matrixStack, int tickDelta, CallbackInfo ci) { ? Verticality.later() : 0 ); - matrixStack.translate(Verticality.CENTER_DISTANCE_TO_BORDER * offset, 0, 0); + matrixStack.translate((Verticality.CENTER_DISTANCE_TO_BORDER + Verticality.raisedShift() / 2.0) * offset, 0, 0); } } diff --git a/src/main/java/net/krlite/verticality/mixin/GameMenuScreenMixin.java b/src/main/java/net/krlite/verticality/mixin/GameMenuScreenMixin.java index 8d7c99c..1060b84 100644 --- a/src/main/java/net/krlite/verticality/mixin/GameMenuScreenMixin.java +++ b/src/main/java/net/krlite/verticality/mixin/GameMenuScreenMixin.java @@ -35,6 +35,9 @@ private void render(MatrixStack matrixStack, int mouseX, int mouseY, float delta RenderSystem.enableDepthTest(); RenderSystem.disableCull(); + matrixStack.push(); + matrixStack.translate(Verticality.raisedShift(), 0, 0); + // 'Disable' widget matrixStack.push(); matrixStack.translate(13 * (1 - Verticality.hotbar()), height / 2.0F, 0); @@ -55,11 +58,14 @@ private void render(MatrixStack matrixStack, int mouseX, int mouseY, float delta matrixStack.pop(); + matrixStack.pop(); + RenderSystem.enableCull(); } else { // 'Enable' widget matrixStack.push(); + matrixStack.translate(0, -Verticality.raisedShift(), 0); matrixStack.translate(width / 2.0F, height - 10 * (1 - Verticality.hotbar()), 0); matrixStack.scale(Verticality.SCALAR, Verticality.SCALAR, Verticality.SCALAR); matrixStack.translate(-Verticality.FONT_GAP_OFFSET, 0, 0); @@ -76,11 +82,11 @@ private boolean isInEnabled(double mouseX, double mouseY) { if (Verticality.enabled()) { // 'Disable' - double xCentered = 13, yCentered = height / 2.0F, w = textRenderer.getWidth(right) * Verticality.SCALAR, h = textRenderer.fontHeight * Verticality.SCALAR; + double xCentered = 13 + Verticality.raisedShift(), yCentered = height / 2.0F, w = textRenderer.getWidth(right) * Verticality.SCALAR, h = textRenderer.fontHeight * Verticality.SCALAR; return mouseX >= xCentered - w / 2 && mouseX <= xCentered + w / 2 && mouseY >= yCentered - h / 2 && mouseY <= yCentered + h / 2; } else { // 'Enable' - double xCentered = width / 2.0F, yCentered = height - 10, w = textRenderer.getWidth(left) * Verticality.SCALAR, h = textRenderer.fontHeight * Verticality.SCALAR; + double xCentered = width / 2.0F, yCentered = height - 10 - Verticality.raisedShift(), w = textRenderer.getWidth(left) * Verticality.SCALAR, h = textRenderer.fontHeight * Verticality.SCALAR; return mouseX >= xCentered - w / 2 && mouseX <= xCentered + w / 2 && mouseY >= yCentered - h / 2 && mouseY <= yCentered + h / 2; } } @@ -90,7 +96,7 @@ private boolean isInUpsideDown(double mouseX, double mouseY) { if (Verticality.unavailable()) return false; // 'Upside Down' - double xCentered = 30, yCentered = height / 2.0F, w = textRenderer.fontHeight, h = textRenderer.getWidth(both); + double xCentered = 30 + Verticality.raisedShift(), yCentered = height / 2.0F, w = textRenderer.fontHeight, h = textRenderer.getWidth(both); return mouseX >= xCentered - w / 2 && mouseX <= xCentered + w / 2 && mouseY >= yCentered - h / 2 && mouseY <= yCentered + h / 2; }