From 9915450ca948c8d1bac8ede255d1ea5c1929855f Mon Sep 17 00:00:00 2001 From: Oblio Date: Mon, 13 Mar 2023 13:55:30 -0400 Subject: [PATCH 1/3] fixes for 1.19.3 --- build.gradle | 4 +- gradle.properties | 13 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../net/torocraft/flighthud/HudComponent.java | 18 +- .../flighthud/components/PitchIndicator.java | 209 +++++++++--------- src/main/resources/fabric.mod.json | 6 +- 6 files changed, 125 insertions(+), 127 deletions(-) diff --git a/build.gradle b/build.gradle index 006b7d5..dd91845 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.12-SNAPSHOT' + id 'fabric-loom' version '1.0-SNAPSHOT' id 'maven-publish' } @@ -34,7 +34,7 @@ processResources { // ensure that the encoding is set to UTF-8, no matter what the system default is // this fixes some edge cases with special characters not displaying correctly // see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html -tasks.withType(JavaCompile) { +tasks.withType(JavaCompile).configureEach { options.encoding = "UTF-8" } diff --git a/gradle.properties b/gradle.properties index abcccdb..49ae220 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,21 +1,22 @@ # Done to increase the memory available to gradle. org.gradle.jvmargs=-Xmx1G +org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/versions.html # After making changes # gradlew --refresh-dependencies # To remap the mixin locations: -# gradlew migrateMappings --mappings "1.16.1+build.9" +# gradlew migrateMappings --mappings "1.19.3+build.5" -minecraft_version=1.19 -yarn_mappings=1.19+build.1 -loader_version=0.14.7 +minecraft_version=1.19.3 +yarn_mappings=1.19.3+build.5 +loader_version=0.14.13 #Fabric api -fabric_version=0.55.3+1.19 +fabric_version=0.71.0+1.19.3 # Mod Properties -mod_version = 1.19-fabric-1 +mod_version = 1.19.3-fabric-1 maven_group = net.torocraft archives_base_name = flighthud \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8a17ae4..594324a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https://services.gradle.org/distributions/gradle-7.3.1-bin.zip +distributionUrl=https://services.gradle.org/distributions/gradle-7.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/net/torocraft/flighthud/HudComponent.java b/src/main/java/net/torocraft/flighthud/HudComponent.java index 08be596..948f133 100644 --- a/src/main/java/net/torocraft/flighthud/HudComponent.java +++ b/src/main/java/net/torocraft/flighthud/HudComponent.java @@ -3,16 +3,11 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.render.BufferBuilder; -import net.minecraft.client.render.BufferRenderer; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.Tessellator; -import net.minecraft.client.render.VertexFormats; -import net.minecraft.client.render.VertexFormat; +import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.Vec3f; -import net.minecraft.util.math.Matrix4f; +import net.minecraft.util.math.RotationAxis; import net.torocraft.flighthud.config.HudConfig; +import org.joml.Matrix4f; public abstract class HudComponent extends DrawableHelper { @@ -27,7 +22,8 @@ protected int i(double d) { protected void drawPointer(MatrixStack m, float x, float y, float rot) { m.push(); m.translate(x, y, 0); - m.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(rot + 45)); + m.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(rot + 45)); +// m.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(rot + 45)); drawVerticalLine(m, 0, 0, 5, CONFIG.color); drawHorizontalLine(m, 0, 5, 0, CONFIG.color); m.pop(); @@ -131,13 +127,13 @@ private static void fill(Matrix4f matrix, float x1, float y1, float x2, float y2 RenderSystem.enableBlend(); RenderSystem.disableTexture(); RenderSystem.defaultBlendFunc(); - RenderSystem.setShader(GameRenderer::getPositionColorShader); + RenderSystem.setShader(GameRenderer::getPositionColorProgram); bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR); bufferBuilder.vertex(matrix, x1, y2, 0.0F).color(r, g, b, alpha).next(); bufferBuilder.vertex(matrix, x2, y2, 0.0F).color(r, g, b, alpha).next(); bufferBuilder.vertex(matrix, x2, y1, 0.0F).color(r, g, b, alpha).next(); bufferBuilder.vertex(matrix, x1, y1, 0.0F).color(r, g, b, alpha).next(); - BufferRenderer.drawWithShader(bufferBuilder.end()); + BufferRenderer.drawWithGlobalProgram(bufferBuilder.end()); RenderSystem.enableTexture(); RenderSystem.disableBlend(); } diff --git a/src/main/java/net/torocraft/flighthud/components/PitchIndicator.java b/src/main/java/net/torocraft/flighthud/components/PitchIndicator.java index d75ea9e..c52910d 100644 --- a/src/main/java/net/torocraft/flighthud/components/PitchIndicator.java +++ b/src/main/java/net/torocraft/flighthud/components/PitchIndicator.java @@ -2,142 +2,143 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.Vec3f; +import net.minecraft.util.math.RotationAxis; import net.torocraft.flighthud.Dimensions; import net.torocraft.flighthud.FlightComputer; import net.torocraft.flighthud.HudComponent; public class PitchIndicator extends HudComponent { - private final Dimensions dim; - private final FlightComputer computer; - private final PitchIndicatorData pitchData = new PitchIndicatorData(); + private final Dimensions dim; + private final FlightComputer computer; + private final PitchIndicatorData pitchData = new PitchIndicatorData(); - public PitchIndicator(FlightComputer computer, Dimensions dim) { - this.computer = computer; - this.dim = dim; - } + public PitchIndicator(FlightComputer computer, Dimensions dim) { + this.computer = computer; + this.dim = dim; + } - @Override - public void render(MatrixStack m, float partial, MinecraftClient mc) { - pitchData.update(dim); + @Override + public void render(MatrixStack m, float partial, MinecraftClient mc) { + pitchData.update(dim); - float horizonOffset = computer.pitch * dim.degreesPerPixel; - float yHorizon = dim.yMid + horizonOffset; + float horizonOffset = computer.pitch * dim.degreesPerPixel; + float yHorizon = dim.yMid + horizonOffset; - float a = dim.yMid; - float b = dim.xMid; + float a = dim.yMid; + float b = dim.xMid; - float roll = computer.roll * (CONFIG.pitchLadder_reverseRoll ? -1 : 1); + float roll = computer.roll * (CONFIG.pitchLadder_reverseRoll ? -1 : 1); - if (CONFIG.pitchLadder_showRoll) { - m.push(); - m.translate(b, a, 0); - m.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(roll)); - m.translate(-b, -a, 0); - } + if (CONFIG.pitchLadder_showRoll) { + m.push(); + m.translate(b, a, 0); + m.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(roll)); + //m.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(roll)); + m.translate(-b, -a, 0); + } - if (CONFIG.pitchLadder_showLadder) { - drawLadder(mc, m, yHorizon); - } + if (CONFIG.pitchLadder_showLadder) { + drawLadder(mc, m, yHorizon); + } - drawReferenceMark(mc, m, yHorizon, CONFIG.pitchLadder_optimumClimbAngle); - drawReferenceMark(mc, m, yHorizon, CONFIG.pitchLadder_optimumGlideAngle); + drawReferenceMark(mc, m, yHorizon, CONFIG.pitchLadder_optimumClimbAngle); + drawReferenceMark(mc, m, yHorizon, CONFIG.pitchLadder_optimumGlideAngle); - if (CONFIG.pitchLadder_showHorizon) { - pitchData.l1 -= pitchData.margin; - pitchData.r2 += pitchData.margin; - drawDegreeBar(mc, m, 0, yHorizon); - } + if (CONFIG.pitchLadder_showHorizon) { + pitchData.l1 -= pitchData.margin; + pitchData.r2 += pitchData.margin; + drawDegreeBar(mc, m, 0, yHorizon); + } - if (CONFIG.pitchLadder_showRoll) { - m.pop(); + if (CONFIG.pitchLadder_showRoll) { + m.pop(); + } } - } - private void drawLadder(MinecraftClient mc, MatrixStack m, float yHorizon) { - int degreesPerBar = CONFIG.pitchLadder_degreesPerBar; + private void drawLadder(MinecraftClient mc, MatrixStack m, float yHorizon) { + int degreesPerBar = CONFIG.pitchLadder_degreesPerBar; - if (degreesPerBar < 1) { - degreesPerBar = 20; - } + if (degreesPerBar < 1) { + degreesPerBar = 20; + } + + for (int i = degreesPerBar; i <= 90; i = i + degreesPerBar) { + float offset = dim.degreesPerPixel * i; + drawDegreeBar(mc, m, -i, yHorizon + offset); + drawDegreeBar(mc, m, i, yHorizon - offset); + } - for (int i = degreesPerBar; i <= 90; i = i + degreesPerBar) { - float offset = dim.degreesPerPixel * i; - drawDegreeBar(mc, m, -i, yHorizon + offset); - drawDegreeBar(mc, m, i, yHorizon - offset); } - } + private void drawReferenceMark(MinecraftClient mc, MatrixStack m, float yHorizon, float degrees) { + if (degrees == 0) { + return; + } - private void drawReferenceMark(MinecraftClient mc, MatrixStack m, float yHorizon, float degrees) { - if (degrees == 0) { - return; - } + float y = (-degrees * dim.degreesPerPixel) + yHorizon; + + if (y < dim.tFrame || y > dim.bFrame) { + return; + } - float y = (-degrees * dim.degreesPerPixel) + yHorizon; + float width = (pitchData.l2 - pitchData.l1) * 0.45f; + float l1 = pitchData.l2 - width; + float r2 = pitchData.r1 + width; - if (y < dim.tFrame || y > dim.bFrame) { - return; + drawHorizontalLineDashed(m, l1, pitchData.l2, y, 3); + drawHorizontalLineDashed(m, pitchData.r1, r2, y, 3); } - float width = (pitchData.l2 - pitchData.l1) * 0.45f; - float l1 = pitchData.l2 - width; - float r2 = pitchData.r1 + width; + private void drawDegreeBar(MinecraftClient mc, MatrixStack m, float degree, float y) { - drawHorizontalLineDashed(m, l1, pitchData.l2, y, 3); - drawHorizontalLineDashed(m, pitchData.r1, r2, y, 3); - } + if (y < dim.tFrame || y > dim.bFrame) { + return; + } - private void drawDegreeBar(MinecraftClient mc, MatrixStack m, float degree, float y) { + int dashes = degree < 0 ? 4 : 1; - if (y < dim.tFrame || y > dim.bFrame) { - return; - } + drawHorizontalLineDashed(m, pitchData.l1, pitchData.l2, y, dashes); + drawHorizontalLineDashed(m, pitchData.r1, pitchData.r2, y, dashes); + + int sideTickHeight = degree >= 0 ? 5 : -5; + drawVerticalLine(m, pitchData.l1, y, y + sideTickHeight); + drawVerticalLine(m, pitchData.r2, y, y + sideTickHeight); + + int fontVerticalOffset = degree >= 0 ? 0 : 6; + + drawFont(mc, m, String.format("%d", i(Math.abs(degree))), pitchData.r2 + 6, + (float) y - fontVerticalOffset); - int dashes = degree < 0 ? 4 : 1; - - drawHorizontalLineDashed(m, pitchData.l1, pitchData.l2, y, dashes); - drawHorizontalLineDashed(m, pitchData.r1, pitchData.r2, y, dashes); - - int sideTickHeight = degree >= 0 ? 5 : -5; - drawVerticalLine(m, pitchData.l1, y, y + sideTickHeight); - drawVerticalLine(m, pitchData.r2, y, y + sideTickHeight); - - int fontVerticalOffset = degree >= 0 ? 0 : 6; - - drawFont(mc, m, String.format("%d", i(Math.abs(degree))), pitchData.r2 + 6, - (float) y - fontVerticalOffset); - - drawFont(mc, m, String.format("%d", i(Math.abs(degree))), pitchData.l1 - 17, - (float) y - fontVerticalOffset); - } - - private static class PitchIndicatorData { - public float width; - public float mid; - public float margin; - public float sideWidth; - public float l1; - public float l2; - public float r1; - public float r2; - - public void update(Dimensions dim) { - width = i(dim.wScreen / 3); - float left = width; - - mid = i((width / 2) + left); - margin = i(width * 0.3d); - l1 = left + margin; - l2 = mid - 7; - sideWidth = l2 - l1; - r1 = mid + 8; - r2 = r1 + sideWidth; + drawFont(mc, m, String.format("%d", i(Math.abs(degree))), pitchData.l1 - 17, + (float) y - fontVerticalOffset); } - private int i(double d) { - return (int) Math.round(d); + private static class PitchIndicatorData { + public float width; + public float mid; + public float margin; + public float sideWidth; + public float l1; + public float l2; + public float r1; + public float r2; + + public void update(Dimensions dim) { + width = i(dim.wScreen / 3); + float left = width; + + mid = i((width / 2) + left); + margin = i(width * 0.3d); + l1 = left + margin; + l2 = mid - 7; + sideWidth = l2 - l1; + r1 = mid + 8; + r2 = r1 + sideWidth; + } + + private int i(double d) { + return (int) Math.round(d); + } } - } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 1e3c057..1ab5eed 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -24,9 +24,9 @@ "flighthud.mixins.json" ], "depends": { - "fabricloader": ">=0.14.7", - "fabric": "*", - "minecraft": ">=1.19", + "fabricloader": ">=0.14.11", + "fabric-api": "*", + "minecraft": "~1.19.3", "java": ">=17" } } \ No newline at end of file From 41e1517c131371af025c37c4a6f0ac3643da8e53 Mon Sep 17 00:00:00 2001 From: Oblio Date: Thu, 23 Mar 2023 22:18:25 -0400 Subject: [PATCH 2/3] update to 1.19.4 --- build.gradle | 2 +- gradle.properties | 10 +++++----- .../java/net/torocraft/flighthud/HudComponent.java | 2 -- src/main/resources/fabric.mod.json | 4 ++-- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/build.gradle b/build.gradle index dd91845..8b5b8f3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.0-SNAPSHOT' + id 'fabric-loom' version '1.1-SNAPSHOT' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index 49ae220..382d63b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,14 +9,14 @@ org.gradle.parallel=true # To remap the mixin locations: # gradlew migrateMappings --mappings "1.19.3+build.5" -minecraft_version=1.19.3 -yarn_mappings=1.19.3+build.5 -loader_version=0.14.13 +minecraft_version=1.19.4 +yarn_mappings=1.19.4+build.1 +loader_version=0.14.18 #Fabric api -fabric_version=0.71.0+1.19.3 +fabric_version=0.76.0+1.19.4 # Mod Properties -mod_version = 1.19.3-fabric-1 +mod_version = 1.19.4-fabric-1 maven_group = net.torocraft archives_base_name = flighthud \ No newline at end of file diff --git a/src/main/java/net/torocraft/flighthud/HudComponent.java b/src/main/java/net/torocraft/flighthud/HudComponent.java index 948f133..eec57c2 100644 --- a/src/main/java/net/torocraft/flighthud/HudComponent.java +++ b/src/main/java/net/torocraft/flighthud/HudComponent.java @@ -125,7 +125,6 @@ private static void fill(Matrix4f matrix, float x1, float y1, float x2, float y2 float b = (float) (color & 255) / 255.0F; BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer(); RenderSystem.enableBlend(); - RenderSystem.disableTexture(); RenderSystem.defaultBlendFunc(); RenderSystem.setShader(GameRenderer::getPositionColorProgram); bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR); @@ -134,7 +133,6 @@ private static void fill(Matrix4f matrix, float x1, float y1, float x2, float y2 bufferBuilder.vertex(matrix, x2, y1, 0.0F).color(r, g, b, alpha).next(); bufferBuilder.vertex(matrix, x1, y1, 0.0F).color(r, g, b, alpha).next(); BufferRenderer.drawWithGlobalProgram(bufferBuilder.end()); - RenderSystem.enableTexture(); RenderSystem.disableBlend(); } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 1ab5eed..4268f8e 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -24,9 +24,9 @@ "flighthud.mixins.json" ], "depends": { - "fabricloader": ">=0.14.11", + "fabricloader": ">=0.14.18", "fabric-api": "*", - "minecraft": "~1.19.3", + "minecraft": "~1.19.4", "java": ">=17" } } \ No newline at end of file From af4af8b7432918fbf9027ec3c90552888f059a87 Mon Sep 17 00:00:00 2001 From: Misaka-L Date: Wed, 12 Jul 2023 21:53:01 +0800 Subject: [PATCH 3/3] update to minecraft 1.20.1 --- gradle.properties | 10 ++--- .../net/torocraft/flighthud/HudComponent.java | 42 ++++++++----------- .../net/torocraft/flighthud/HudRenderer.java | 9 ++-- .../components/AltitudeIndicator.java | 13 +++--- .../components/ElytraHealthIndicator.java | 9 ++-- .../components/FlightPathIndicator.java | 5 ++- .../components/HeadingIndicator.java | 13 +++--- .../components/LocationIndicator.java | 7 +++- .../flighthud/components/PitchIndicator.java | 16 ++++--- .../flighthud/components/SpeedIndicator.java | 9 ++-- .../flighthud/mixin/InGameHudMixin.java | 6 +-- 11 files changed, 78 insertions(+), 61 deletions(-) diff --git a/gradle.properties b/gradle.properties index abcccdb..2e22a41 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,14 +8,14 @@ org.gradle.jvmargs=-Xmx1G # To remap the mixin locations: # gradlew migrateMappings --mappings "1.16.1+build.9" -minecraft_version=1.19 -yarn_mappings=1.19+build.1 -loader_version=0.14.7 +minecraft_version=1.20.1 +yarn_mappings=1.20.1+build.9 +loader_version=0.14.21 #Fabric api -fabric_version=0.55.3+1.19 +fabric_version=0.85.0+1.20.1 # Mod Properties -mod_version = 1.19-fabric-1 +mod_version = 1.20.1-fabric-1 maven_group = net.torocraft archives_base_name = flighthud \ No newline at end of file diff --git a/src/main/java/net/torocraft/flighthud/HudComponent.java b/src/main/java/net/torocraft/flighthud/HudComponent.java index 08be596..d6fd3ff 100644 --- a/src/main/java/net/torocraft/flighthud/HudComponent.java +++ b/src/main/java/net/torocraft/flighthud/HudComponent.java @@ -2,21 +2,15 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.render.BufferBuilder; -import net.minecraft.client.render.BufferRenderer; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.Tessellator; -import net.minecraft.client.render.VertexFormats; -import net.minecraft.client.render.VertexFormat; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.Vec3f; -import net.minecraft.util.math.Matrix4f; +import net.minecraft.util.math.RotationAxis; +import org.joml.Matrix4f; import net.torocraft.flighthud.config.HudConfig; -public abstract class HudComponent extends DrawableHelper { - - public abstract void render(MatrixStack m, float partial, MinecraftClient client); +public abstract class HudComponent { + public abstract void render(DrawContext context, float tickDelta, MinecraftClient client); public static HudConfig CONFIG; @@ -27,9 +21,9 @@ protected int i(double d) { protected void drawPointer(MatrixStack m, float x, float y, float rot) { m.push(); m.translate(x, y, 0); - m.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(rot + 45)); - drawVerticalLine(m, 0, 0, 5, CONFIG.color); - drawHorizontalLine(m, 0, 5, 0, CONFIG.color); + m.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(rot + 45)); + drawVerticalLine(m, 0, 0, 5); + drawHorizontalLine(m, 0, 5, 0); m.pop(); } @@ -41,19 +35,19 @@ protected float wrapHeading(float degrees) { return degrees; } - protected void drawFont(MinecraftClient mc, MatrixStack m, String s, float x, float y) { - drawFont(mc, m, s, x, y, CONFIG.color); + protected void drawFont(MinecraftClient mc, MatrixStack m, String s, float x, float y, DrawContext context) { + drawFont(mc, m, s, x, y, CONFIG.color, context); } protected void drawFont(MinecraftClient mc, MatrixStack m, String s, float x, float y, - int color) { - mc.textRenderer.draw(m, s, x, y, CONFIG.color); + int color, DrawContext context) { + context.drawText(mc.textRenderer, s, (int) x, (int) y, CONFIG.color, false); } protected void drawRightAlignedFont(MinecraftClient mc, MatrixStack m, String s, float x, - float y) { + float y, DrawContext context) { int w = mc.textRenderer.getWidth(s); - drawFont(mc, m, s, x - w, y); + drawFont(mc, m, s, x - w, y, context); } protected void drawBox(MatrixStack m, float x, float y, float w, float h) { @@ -129,16 +123,14 @@ private static void fill(Matrix4f matrix, float x1, float y1, float x2, float y2 float b = (float) (color & 255) / 255.0F; BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer(); RenderSystem.enableBlend(); - RenderSystem.disableTexture(); RenderSystem.defaultBlendFunc(); - RenderSystem.setShader(GameRenderer::getPositionColorShader); + RenderSystem.setShader(GameRenderer::getPositionColorProgram); bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR); bufferBuilder.vertex(matrix, x1, y2, 0.0F).color(r, g, b, alpha).next(); bufferBuilder.vertex(matrix, x2, y2, 0.0F).color(r, g, b, alpha).next(); bufferBuilder.vertex(matrix, x2, y1, 0.0F).color(r, g, b, alpha).next(); bufferBuilder.vertex(matrix, x1, y1, 0.0F).color(r, g, b, alpha).next(); - BufferRenderer.drawWithShader(bufferBuilder.end()); - RenderSystem.enableTexture(); + BufferRenderer.drawWithGlobalProgram(bufferBuilder.end()); RenderSystem.disableBlend(); } } diff --git a/src/main/java/net/torocraft/flighthud/HudRenderer.java b/src/main/java/net/torocraft/flighthud/HudRenderer.java index aceaebc..506d9df 100644 --- a/src/main/java/net/torocraft/flighthud/HudRenderer.java +++ b/src/main/java/net/torocraft/flighthud/HudRenderer.java @@ -1,6 +1,7 @@ package net.torocraft.flighthud; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.torocraft.flighthud.components.AltitudeIndicator; import net.torocraft.flighthud.components.ElytraHealthIndicator; @@ -42,7 +43,7 @@ private void setupConfig(MinecraftClient client) { } @Override - public void render(MatrixStack m, float partial, MinecraftClient client) { + public void render(DrawContext context, float tickDelta, MinecraftClient client) { setupConfig(client); if (HudComponent.CONFIG == null) { @@ -50,6 +51,8 @@ public void render(MatrixStack m, float partial, MinecraftClient client) { } try { + + MatrixStack m = context.getMatrices(); m.push(); if (HudComponent.CONFIG.scale != 1d) { @@ -57,11 +60,11 @@ public void render(MatrixStack m, float partial, MinecraftClient client) { m.scale(scale, scale, scale); } - computer.update(client, partial); + computer.update(client, tickDelta); dim.update(client); for (HudComponent component : components) { - component.render(m, partial, client); + component.render(context, tickDelta, client); } m.pop(); } catch (Exception e) { diff --git a/src/main/java/net/torocraft/flighthud/components/AltitudeIndicator.java b/src/main/java/net/torocraft/flighthud/components/AltitudeIndicator.java index efb8cdf..4353398 100644 --- a/src/main/java/net/torocraft/flighthud/components/AltitudeIndicator.java +++ b/src/main/java/net/torocraft/flighthud/components/AltitudeIndicator.java @@ -1,6 +1,7 @@ package net.torocraft.flighthud.components; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.torocraft.flighthud.Dimensions; import net.torocraft.flighthud.FlightComputer; @@ -16,7 +17,7 @@ public AltitudeIndicator(FlightComputer computer, Dimensions dim) { } @Override - public void render(MatrixStack m, float partial, MinecraftClient mc) { + public void render(DrawContext context, float partial, MinecraftClient mc) { float top = dim.tFrame; float bottom = dim.bFrame; @@ -29,20 +30,22 @@ public void render(MatrixStack m, float partial, MinecraftClient mc) { float yFloor = dim.yMid - floorOffset; float xAltText = right + 5; + MatrixStack m = context.getMatrices(); + if (CONFIG.altitude_showGroundInfo) { drawHeightIndicator(mc, m, left - 1, dim.yMid, bottom - dim.yMid); } if (CONFIG.altitude_showReadout) { - drawFont(mc, m, String.format("%.0f", computer.altitude), xAltText, dim.yMid - 3); + drawFont(mc, m, String.format("%.0f", computer.altitude), xAltText, dim.yMid - 3, context); drawBox(m, xAltText - 2, dim.yMid - 4.5f, 28, 10); } if (CONFIG.altitude_showHeight) { - drawFont(mc, m, "G", xAltText - 10, bottom + 3); + drawFont(mc, m, "G", xAltText - 10, bottom + 3, context); String heightText = computer.distanceFromGround == null ? "??" : String.format("%d", i(computer.distanceFromGround)); - drawFont(mc, m, heightText, xAltText, bottom + 3); + drawFont(mc, m, heightText, xAltText, bottom + 3, context); drawBox(m, xAltText - 2, bottom + 1.5f, 28, 10); } @@ -56,7 +59,7 @@ public void render(MatrixStack m, float partial, MinecraftClient mc) { if (i % 50 == 0) { drawHorizontalLine(m, left, right + 2, y); if (!CONFIG.altitude_showReadout || y > dim.yMid + 7 || y < dim.yMid - 7) { - drawFont(mc, m, String.format("%d", i), xAltText, y - 3); + drawFont(mc, m, String.format("%d", i), xAltText, y - 3, context); } } drawHorizontalLine(m, left, right, y); diff --git a/src/main/java/net/torocraft/flighthud/components/ElytraHealthIndicator.java b/src/main/java/net/torocraft/flighthud/components/ElytraHealthIndicator.java index f1d3722..fa47ada 100644 --- a/src/main/java/net/torocraft/flighthud/components/ElytraHealthIndicator.java +++ b/src/main/java/net/torocraft/flighthud/components/ElytraHealthIndicator.java @@ -1,6 +1,7 @@ package net.torocraft.flighthud.components; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.torocraft.flighthud.Dimensions; import net.torocraft.flighthud.FlightComputer; @@ -17,7 +18,7 @@ public ElytraHealthIndicator(FlightComputer computer, Dimensions dim) { } @Override - public void render(MatrixStack m, float partial, MinecraftClient mc) { + public void render(DrawContext context, float partial, MinecraftClient mc) { if (!CONFIG.elytra_showHealth || computer.elytraHealth == null) { return; } @@ -25,8 +26,10 @@ public void render(MatrixStack m, float partial, MinecraftClient mc) { float x = dim.wScreen * CONFIG.elytra_x; float y = dim.hScreen * CONFIG.elytra_y; + MatrixStack m = context.getMatrices(); + drawBox(m, x - 3.5f, y - 1.5f, 30, 10); - drawFont(mc, m, "E", x - 10, y); - drawFont(mc, m, String.format("%d", i(computer.elytraHealth)) + "%", x, y); + drawFont(mc, m, "E", x - 10, y, context); + drawFont(mc, m, String.format("%d", i(computer.elytraHealth)) + "%", x, y, context); } } \ No newline at end of file diff --git a/src/main/java/net/torocraft/flighthud/components/FlightPathIndicator.java b/src/main/java/net/torocraft/flighthud/components/FlightPathIndicator.java index 985ad0a..aa39d61 100644 --- a/src/main/java/net/torocraft/flighthud/components/FlightPathIndicator.java +++ b/src/main/java/net/torocraft/flighthud/components/FlightPathIndicator.java @@ -1,6 +1,7 @@ package net.torocraft.flighthud.components; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.torocraft.flighthud.Dimensions; import net.torocraft.flighthud.FlightComputer; @@ -16,11 +17,13 @@ public FlightPathIndicator(FlightComputer computer, Dimensions dim) { } @Override - public void render(MatrixStack m, float partial, MinecraftClient client) { + public void render(DrawContext context, float partial, MinecraftClient client) { if (!CONFIG.flightPath_show) { return; } + MatrixStack m = context.getMatrices(); + float deltaPitch = computer.pitch - computer.flightPitch; float deltaHeading = wrapHeading(computer.flightHeading) - wrapHeading(computer.heading); diff --git a/src/main/java/net/torocraft/flighthud/components/HeadingIndicator.java b/src/main/java/net/torocraft/flighthud/components/HeadingIndicator.java index a3acf8b..11ad447 100644 --- a/src/main/java/net/torocraft/flighthud/components/HeadingIndicator.java +++ b/src/main/java/net/torocraft/flighthud/components/HeadingIndicator.java @@ -1,6 +1,7 @@ package net.torocraft.flighthud.components; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.torocraft.flighthud.Dimensions; import net.torocraft.flighthud.FlightComputer; @@ -17,7 +18,7 @@ public HeadingIndicator(FlightComputer computer, Dimensions dim) { } @Override - public void render(MatrixStack m, float partial, MinecraftClient mc) { + public void render(DrawContext context, float partial, MinecraftClient mc) { float left = dim.lFrame; float right = dim.rFrame; float top = dim.tFrame - 10; @@ -26,8 +27,10 @@ public void render(MatrixStack m, float partial, MinecraftClient mc) { float northOffset = computer.heading * dim.degreesPerPixel; float xNorth = dim.xMid - northOffset; + MatrixStack m = context.getMatrices(); + if (CONFIG.heading_showReadout) { - drawFont(mc, m, String.format("%03d", i(wrapHeading(computer.heading))), dim.xMid - 8, yText); + drawFont(mc, m, String.format("%03d", i(wrapHeading(computer.heading))), dim.xMid - 8, yText, context); drawBox(m, dim.xMid - 15, yText - 1.5f, 30, 10); } @@ -40,14 +43,14 @@ public void render(MatrixStack m, float partial, MinecraftClient mc) { if (i % 15 == 0) { if (i % 90 == 0) { - drawFont(mc, m, headingToDirection(i), x - 2, yText + 10); - drawFont(mc, m, headingToAxis(i), x - 8, yText + 20); + drawFont(mc, m, headingToDirection(i), x - 2, yText + 10, context); + drawFont(mc, m, headingToAxis(i), x - 8, yText + 20, context); } else { drawVerticalLine(m, x, top + 3, top + 10); } if (!CONFIG.heading_showReadout || x <= dim.xMid - 26 || x >= dim.xMid + 26) { - drawFont(mc, m, String.format("%03d", i(wrapHeading(i))), x - 8, yText); + drawFont(mc, m, String.format("%03d", i(wrapHeading(i))), x - 8, yText, context); } } else { drawVerticalLine(m, x, top + 6, top + 10); diff --git a/src/main/java/net/torocraft/flighthud/components/LocationIndicator.java b/src/main/java/net/torocraft/flighthud/components/LocationIndicator.java index 9c6075f..3527975 100644 --- a/src/main/java/net/torocraft/flighthud/components/LocationIndicator.java +++ b/src/main/java/net/torocraft/flighthud/components/LocationIndicator.java @@ -1,6 +1,7 @@ package net.torocraft.flighthud.components; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.torocraft.flighthud.Dimensions; import net.torocraft.flighthud.HudComponent; @@ -14,7 +15,7 @@ public LocationIndicator(Dimensions dim) { } @Override - public void render(MatrixStack m, float partial, MinecraftClient mc) { + public void render(DrawContext context, float partial, MinecraftClient mc) { if (!CONFIG.location_showReadout) { return; } @@ -25,6 +26,8 @@ public void render(MatrixStack m, float partial, MinecraftClient mc) { int xLoc = mc.player.getBlockPos().getX(); int zLoc = mc.player.getBlockPos().getZ(); - drawFont(mc, m, String.format("%d / %d", xLoc, zLoc), x, y); + MatrixStack m = context.getMatrices(); + + drawFont(mc, m, String.format("%d / %d", xLoc, zLoc), x, y, context); } } diff --git a/src/main/java/net/torocraft/flighthud/components/PitchIndicator.java b/src/main/java/net/torocraft/flighthud/components/PitchIndicator.java index d75ea9e..9866062 100644 --- a/src/main/java/net/torocraft/flighthud/components/PitchIndicator.java +++ b/src/main/java/net/torocraft/flighthud/components/PitchIndicator.java @@ -1,8 +1,9 @@ package net.torocraft.flighthud.components; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.Vec3f; +import net.minecraft.util.math.RotationAxis; import net.torocraft.flighthud.Dimensions; import net.torocraft.flighthud.FlightComputer; import net.torocraft.flighthud.HudComponent; @@ -12,13 +13,15 @@ public class PitchIndicator extends HudComponent { private final FlightComputer computer; private final PitchIndicatorData pitchData = new PitchIndicatorData(); + private DrawContext drawContext; + public PitchIndicator(FlightComputer computer, Dimensions dim) { this.computer = computer; this.dim = dim; } @Override - public void render(MatrixStack m, float partial, MinecraftClient mc) { + public void render(DrawContext context, float partial, MinecraftClient mc) { pitchData.update(dim); float horizonOffset = computer.pitch * dim.degreesPerPixel; @@ -29,10 +32,13 @@ public void render(MatrixStack m, float partial, MinecraftClient mc) { float roll = computer.roll * (CONFIG.pitchLadder_reverseRoll ? -1 : 1); + drawContext = context; + MatrixStack m = drawContext.getMatrices(); + if (CONFIG.pitchLadder_showRoll) { m.push(); m.translate(b, a, 0); - m.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(roll)); + m.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(roll)); m.translate(-b, -a, 0); } @@ -106,10 +112,10 @@ private void drawDegreeBar(MinecraftClient mc, MatrixStack m, float degree, floa int fontVerticalOffset = degree >= 0 ? 0 : 6; drawFont(mc, m, String.format("%d", i(Math.abs(degree))), pitchData.r2 + 6, - (float) y - fontVerticalOffset); + y - fontVerticalOffset, drawContext); drawFont(mc, m, String.format("%d", i(Math.abs(degree))), pitchData.l1 - 17, - (float) y - fontVerticalOffset); + y - fontVerticalOffset, drawContext); } private static class PitchIndicatorData { diff --git a/src/main/java/net/torocraft/flighthud/components/SpeedIndicator.java b/src/main/java/net/torocraft/flighthud/components/SpeedIndicator.java index f6e6fab..17eaafe 100644 --- a/src/main/java/net/torocraft/flighthud/components/SpeedIndicator.java +++ b/src/main/java/net/torocraft/flighthud/components/SpeedIndicator.java @@ -1,6 +1,7 @@ package net.torocraft.flighthud.components; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.util.math.MatrixStack; import net.torocraft.flighthud.Dimensions; import net.torocraft.flighthud.FlightComputer; @@ -16,7 +17,7 @@ public SpeedIndicator(FlightComputer computer, Dimensions dim) { } @Override - public void render(MatrixStack m, float partial, MinecraftClient mc) { + public void render(DrawContext context, float partial, MinecraftClient mc) { float top = dim.tFrame; float bottom = dim.bFrame; @@ -29,8 +30,10 @@ public void render(MatrixStack m, float partial, MinecraftClient mc) { float xSpeedText = left - 5; + MatrixStack m = context.getMatrices(); + if (CONFIG.speed_showReadout) { - drawRightAlignedFont(mc, m, String.format("%.2f", computer.speed), xSpeedText, dim.yMid - 3); + drawRightAlignedFont(mc, m, String.format("%.2f", computer.speed), xSpeedText, dim.yMid - 3, context); drawBox(m, xSpeedText - 29.5f, dim.yMid - 4.5f, 30, 10); } @@ -44,7 +47,7 @@ public void render(MatrixStack m, float partial, MinecraftClient mc) { if (i % 1 == 0) { drawHorizontalLine(m, left - 2, right, y); if (!CONFIG.speed_showReadout || y > dim.yMid + 7 || y < dim.yMid - 7) { - drawRightAlignedFont(mc, m, String.format("%.0f", i), xSpeedText, y - 3); + drawRightAlignedFont(mc, m, String.format("%.0f", i), xSpeedText, y - 3, context); } } drawHorizontalLine(m, left, right, y); diff --git a/src/main/java/net/torocraft/flighthud/mixin/InGameHudMixin.java b/src/main/java/net/torocraft/flighthud/mixin/InGameHudMixin.java index 9b0d1b4..5059547 100644 --- a/src/main/java/net/torocraft/flighthud/mixin/InGameHudMixin.java +++ b/src/main/java/net/torocraft/flighthud/mixin/InGameHudMixin.java @@ -1,8 +1,8 @@ package net.torocraft.flighthud.mixin; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.InGameHud; -import net.minecraft.client.util.math.MatrixStack; import net.torocraft.flighthud.HudRenderer; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -23,7 +23,5 @@ public class InGameHudMixin { private MinecraftClient client; @Inject(method = "render", at = @At("RETURN")) - private void render(MatrixStack ms, float partial, CallbackInfo info) { - hud.render(ms, partial, client); - } + private void render(DrawContext context, float tickDelta, CallbackInfo ci) { hud.render(context, tickDelta, client); } } \ No newline at end of file