From 1f636f7a0a73b21c1f3dc936c86b6e9e368bcbb2 Mon Sep 17 00:00:00 2001 From: Luka Kresoja Date: Tue, 17 Dec 2024 00:42:27 +0100 Subject: [PATCH] Finaly fix Options Screen and clean up half of the code --- gradlew | 46 ++++++---- .../com/lukeonuke/minihud/gui/MHButton.java | 43 ---------- .../com/lukeonuke/minihud/gui/MHGuiUtil.java | 7 +- .../lukeonuke/minihud/gui/OptionsScreen.java | 84 +++++-------------- .../minihud/gui/list/MHLineList.java | 33 ++++---- .../lukeonuke/minihud/gui/list/MHList.java | 44 ++-------- .../minihud/gui/list/ScrollingText.java | 28 +++---- .../minihud/mixin/EntityRenderer.java | 9 +- .../minihud/mixin/GameScreenOverlay.java | 17 ++-- .../resources/assets/microhud/lang/en_us.json | 3 +- 10 files changed, 100 insertions(+), 214 deletions(-) delete mode 100644 src/client/java/com/lukeonuke/minihud/gui/MHButton.java diff --git a/gradlew b/gradlew index 1b6c787..b26d411 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/master/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/. @@ -80,13 +82,12 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +134,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +201,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +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, +# 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. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ @@ -205,6 +217,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. @@ -231,4 +249,4 @@ eval "set -- $( tr '\n' ' ' )" '"$@"' -exec "$JAVACMD" "$@" +exec "$JAVACMD" "$@" \ No newline at end of file diff --git a/src/client/java/com/lukeonuke/minihud/gui/MHButton.java b/src/client/java/com/lukeonuke/minihud/gui/MHButton.java deleted file mode 100644 index 64103b6..0000000 --- a/src/client/java/com/lukeonuke/minihud/gui/MHButton.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.lukeonuke.minihud.gui; - -import com.lukeonuke.minihud.MicroHud; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.text.Text; - -public class MHButton { - Runnable onClick; - int x; - int y; - int width; - int height; - int padding = MicroHud.PADDING; - Text content; - - public MHButton(Text content, Runnable onClick) { - this.onClick = onClick; - this.content = content; - } - - public void render(DrawContext context, TextRenderer textRenderer, int x, int y){ - this.x = x; - this.y = y; - width = textRenderer.fontHeight + padding * 2; - height = textRenderer.getWidth(content) + padding * 2; - - context.fill(x, y, x + width, y + width, 0x000000FA); - MHGuiUtil.drawText(context, textRenderer, content, x + padding, y + padding, 0xFFFFFF, false); - } - - public void click(double cx, double cy){ - if(cx > x && cx < x + width){ - if(cy > y && cy < y + height){ - onClick.run(); - } - } - } - - public Text getContent() { - return content; - } -} diff --git a/src/client/java/com/lukeonuke/minihud/gui/MHGuiUtil.java b/src/client/java/com/lukeonuke/minihud/gui/MHGuiUtil.java index 26a91f4..7523f19 100644 --- a/src/client/java/com/lukeonuke/minihud/gui/MHGuiUtil.java +++ b/src/client/java/com/lukeonuke/minihud/gui/MHGuiUtil.java @@ -1,6 +1,5 @@ package com.lukeonuke.minihud.gui; -import com.lukeonuke.minihud.MicroHudColors; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; @@ -17,15 +16,15 @@ public static boolean isHovered(int x, int y, int width, int height, int mouseX, return hovered; } - public static void drawText(DrawContext context, TextRenderer textRenderer, Text text, int xPos, int yPos, int color, boolean shadow){ + public static void drawText(DrawContext context, TextRenderer textRenderer, Text text, int xPos, int yPos, int color, boolean shadow) { context.drawText(textRenderer, text, xPos, yPos, color, shadow); } - public static void drawText(DrawContext context, TextRenderer textRenderer, String text, int xPos, int yPos, int color, boolean shadow){ + public static void drawText(DrawContext context, TextRenderer textRenderer, String text, int xPos, int yPos, int color, boolean shadow) { drawText(context, textRenderer, Text.of(text), xPos, yPos, color, shadow); } - public static void drawText(DrawContext context, TextRenderer textRenderer, String text, int xPos, int yPos, int color){ + public static void drawText(DrawContext context, TextRenderer textRenderer, String text, int xPos, int yPos, int color) { drawText(context, textRenderer, text, xPos, yPos, color, true); } } diff --git a/src/client/java/com/lukeonuke/minihud/gui/OptionsScreen.java b/src/client/java/com/lukeonuke/minihud/gui/OptionsScreen.java index 560b32e..4f3b5e1 100644 --- a/src/client/java/com/lukeonuke/minihud/gui/OptionsScreen.java +++ b/src/client/java/com/lukeonuke/minihud/gui/OptionsScreen.java @@ -7,27 +7,16 @@ import com.lukeonuke.minihud.gui.list.MHList; import com.lukeonuke.minihud.gui.list.ScrollingText; import com.lukeonuke.minihud.renderer.MicroHudRenderer; -import com.mojang.blaze3d.systems.RenderSystem; -import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.hud.DebugHud; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.InventoryScreen; -import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen; import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.screen.ScreenTexts; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.text.TranslatableTextContent; import net.minecraft.util.Formatting; -import net.minecraft.util.Identifier; import net.minecraft.util.Util; -import java.awt.*; -import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; @@ -36,13 +25,10 @@ public class OptionsScreen extends Screen { private final int padding = 8; private MHList availableList; - private MHList selectedList; - private MHLineList selected; private MicroHudRenderer renderer; final private MicroHudOptions microHudOptions = MicroHudOptions.getInstance(); private boolean wasLineRendererEnabled; - public static final Identifier MH_OPTIONS_BACKGROUND_TEXTURE = Identifier.of("microhud:textures/gui/microhud_gui_background.png"); //textures/block/glass.png public OptionsScreen() { super(Text.of("Options")); @@ -54,14 +40,14 @@ protected void init() { super.init(); renderer = MicroHudRenderer.getInstance(); - ButtonWidget doneButton = this.addDrawableChild(new ButtonWidget.Builder(ScreenTexts.DONE, (event) -> { + this.addDrawableChild(new ButtonWidget.Builder(ScreenTexts.DONE, (event) -> { MicroHud.LOGGER.info("Done"); exit(true); }).dimensions(this.width - 100 - padding, this.height - 20 - padding, 100, 20).build()); //padding, this.height - 20 - padding, 100, 20, ScreenTexts.CANCEL this.addDrawableChild(new ButtonWidget.Builder(ScreenTexts.CANCEL, (event) -> { - MicroHud.LOGGER.info("Cancled options screen"); + MicroHud.LOGGER.info("Canceled options screen"); exit(false); }).dimensions(padding, this.height - 20 - padding, 100, 20).build()); @@ -71,14 +57,14 @@ protected void init() { }).dimensions(this.width / 2 - 75, this.height - 20 - padding, 150, 20).build()); updatePlayerDiscordTagToggleButton(playerDiscordToggleButtonWidget); - ButtonWidget privacyPolicyButton = this.addDrawableChild(new ButtonWidget.Builder(Text.translatable("gui.microhud.configuration.privacyPolicy"), (event) -> { + this.addDrawableChild(new ButtonWidget.Builder(Text.translatable("gui.microhud.configuration.privacyPolicy"), (event) -> { try { Util.getOperatingSystem().open(new URI("https://weather.lukeonuke.com/privacy/privacypolicy/")); } catch (URISyntaxException e) { - MicroHud.LOGGER.error("Couldn't navigate to privacy policy: " + e.getMessage()); + MicroHud.LOGGER.error("Couldn't navigate to privacy policy: {}", e.getMessage()); } exit(false); - }).dimensions(this.width - padding*2 - textRenderer.getWidth(Text.translatable("gui.microhud.configuration.privacyPolicy")), 2, textRenderer.getWidth(Text.translatable("gui.microhud.configuration.privacyPolicy")) + padding, 20).build()); + }).dimensions(this.width - padding * 2 - textRenderer.getWidth(Text.translatable("gui.microhud.configuration.privacyPolicy")), 2, textRenderer.getWidth(Text.translatable("gui.microhud.configuration.privacyPolicy")) + padding, 20).build()); this.addDrawable( new ScrollingText( @@ -87,34 +73,16 @@ protected void init() { ) ); - //super(client, width, height, 32, height - 55 + 4, 36); - /* - * 36 - gornja grana - * - * */ - //MHLineList lineList = this.addDrawableChild(new MHLineList(0, padding + textRenderer.fontHeight + padding, textRenderer)); int w = 150; int h = this.height - padding * 3 - textRenderer.fontHeight; - availableList = new MHList(client, w, h, (textRenderer.fontHeight + padding) * 2 + padding * 2, this.height - (20 + textRenderer.fontHeight + padding * 3), textRenderer.fontHeight + padding); + availableList = new MHList(client, w, h, (textRenderer.fontHeight + padding) * 2 + padding * 2, textRenderer.fontHeight + padding); this.addSelectableChild(availableList); - availableList.setX(padding); //setleftpos + availableList.setX(padding); //set left pos - //selectedList = new MHList(client, 200, h, textRenderer.fontHeight + padding * 2, this.height - padding, textRenderer.fontHeight + padding); - //this.addSelectableChild(selectedList); - //selectedList.setLeftPos(this.width / 2); - - selected = this.addDrawableChild(new MHLineList(this.width / 2, (textRenderer.fontHeight + padding) * 2 + padding * 2, textRenderer, availableList)); + this.addDrawableChild(new MHLineList(this.width / 2, (textRenderer.fontHeight + padding) * 2 + padding * 2, textRenderer, availableList)); refreshLists(); - - /*this.addDrawableChild(new ButtonWidget(this.width / 2 - 10, this.height / 2 - 10, 20, 20, Text.of(">"), (event) -> { - MHList.Entry entry = availableList.getFocused(); - MicroHud.LOGGER.info("Adding selected {}", entry); - if(entry == null) return; - availableList.removeEntry(entry); - selectedList.addEntry(entry); - }));*/ wasLineRendererEnabled = renderer.getEnabled(); renderer.setEnabled(false); } @@ -127,22 +95,14 @@ public void refreshLists() { if (enabledModules.getClass().equals(rendererModule.getClass())) contains.set(true); }); if (!contains.get()) - availableList.addEntry(new MHList.Entry(true, false, rendererModule, textRenderer, availableList)); + availableList.addEntry(new MHList.Entry(true, rendererModule, textRenderer, availableList)); }); - - - //selectedList.children().clear(); - //renderer.getRendererModules().forEach(rendererModule -> { - // selectedList.addEntry(new MHList.Entry(false, true, rendererModule, textRenderer, selectedList, availableList)); - //}); } private void exit(boolean save) { if (save) { ArrayList classes = new ArrayList<>(); - renderer.getRendererModules().forEach(rendererModule -> { - classes.add(rendererModule.getClass().getSimpleName()); - }); + renderer.getRendererModules().forEach(rendererModule -> classes.add(rendererModule.getClass().getSimpleName())); microHudOptions.setEnabledRendererModules(classes); microHudOptions.save(); } @@ -151,17 +111,10 @@ private void exit(boolean save) { @Override public void renderBackground(DrawContext context, int mouseX, int mouseY, float delta) { -// context.fill(0, 0, this.width, this.height, MicroHudColors.TRANSLUCENT); -// context.fill(0, 0, this.width, padding * 2 + textRenderer.fontHeight, MicroHudColors.TRANSLUCENT); - RenderSystem.enableBlend(); - RenderSystem.setShaderColor(1F, 1F, 1F, 1F); - - context.drawTexture(RenderLayer::getGuiTextured, MH_OPTIONS_BACKGROUND_TEXTURE, 0, 0, 0F, 0.0F, this.width, this.height, 32, 32); - context.drawTexture(RenderLayer::getGuiTextured, MH_OPTIONS_BACKGROUND_TEXTURE, 0, 0, 0F, 0.0F, this.width, padding * 2 + textRenderer.fontHeight, 32, 32); + context.fill(0, 0, this.width, this.height, -1, MicroHudColors.TRANSLUCENT); + context.fill(0, 0, this.width, padding * 2 + textRenderer.fontHeight, -1, MicroHudColors.TRANSLUCENT); int bottomDarkerAreaHeight = 20 + textRenderer.fontHeight + padding * 3; - context.drawTexture(RenderLayer::getGuiTextured, MH_OPTIONS_BACKGROUND_TEXTURE, 0, this.height-bottomDarkerAreaHeight, 0F, 0F, this.width, bottomDarkerAreaHeight, 32, 32); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.disableBlend(); + context.fill(0, this.height - bottomDarkerAreaHeight, this.width, this.height, -1, MicroHudColors.TRANSLUCENT); } @@ -175,13 +128,14 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta) { availableList.render(context, mouseX, mouseY, delta); Text title = Text.translatable("gui.microhud.configuration.title"); - + MHGuiUtil.drawText(context, textRenderer, title, ((this.width - textRenderer.getWidth(title.getString())) / 2), padding, 0xFFFFFF, false); MHGuiUtil.drawText(context, textRenderer, Text.translatable("gui.microhud.configuration.available"), padding, padding * 3 + textRenderer.fontHeight, 0xFFFFFF, false); MHGuiUtil.drawText(context, textRenderer, Text.translatable("gui.microhud.configuration.selected"), this.width / 2, padding * 3 + textRenderer.fontHeight, 0xFFFFFF, false); - if (!wasLineRendererEnabled) MHGuiUtil.drawText(context, textRenderer, MutableText.of(new TranslatableTextContent("gui.microhud.configuration.renderDisabled", null, new Object[]{MicroHud.toggleRenderer.getBoundKeyLocalizedText().getString()})).getString(), padding, padding * 3, MicroHudColors.RED); + if (!wasLineRendererEnabled) + MHGuiUtil.drawText(context, textRenderer, MutableText.of(new TranslatableTextContent("gui.microhud.configuration.renderDisabled", null, new Object[]{MicroHud.toggleRenderer.getBoundKeyLocalizedText().getString()})).getString(), padding, padding * 3, MicroHudColors.RED); super.render(context, mouseX, mouseY, delta); } @@ -192,10 +146,10 @@ public void close() { super.close(); } - private void updatePlayerDiscordTagToggleButton(ButtonWidget buttonWidget){ - if(microHudOptions.getEnabledPlayerDiscordTag()){ + private void updatePlayerDiscordTagToggleButton(ButtonWidget buttonWidget) { + if (microHudOptions.getEnabledPlayerDiscordTag()) { buttonWidget.setMessage(Text.of("Player discord tag: " + Formatting.BOLD + Formatting.GREEN + "ON")); - }else{ + } else { buttonWidget.setMessage(Text.of("Player discord tag: " + Formatting.BOLD + Formatting.RED + "OFF")); } } diff --git a/src/client/java/com/lukeonuke/minihud/gui/list/MHLineList.java b/src/client/java/com/lukeonuke/minihud/gui/list/MHLineList.java index 6a8fb02..754d081 100644 --- a/src/client/java/com/lukeonuke/minihud/gui/list/MHLineList.java +++ b/src/client/java/com/lukeonuke/minihud/gui/list/MHLineList.java @@ -1,6 +1,5 @@ package com.lukeonuke.minihud.gui.list; -import com.lukeonuke.minihud.MicroHud; import com.lukeonuke.minihud.MicroHudColors; import com.lukeonuke.minihud.gui.MHGuiUtil; import com.lukeonuke.minihud.renderer.MicroHudRenderer; @@ -26,8 +25,6 @@ public class MHLineList implements Drawable, Selectable, Element { protected final TextRenderer textRenderer; private final MHList other; - private int color = MicroHudColors.WHITE; - public MHLineList(int x, int y, TextRenderer textRenderer, MHList other) { this.x = x; this.y = y; @@ -38,17 +35,17 @@ public MHLineList(int x, int y, TextRenderer textRenderer, MHList other) { @Override public void render(DrawContext context, int mouseX, int mouseY, float delta) { - if(Objects.isNull(client.currentScreen)) return; + if (Objects.isNull(client.currentScreen)) return; ArrayList modules = microHudRenderer.getRendererModules(); int yPos; - int xPos = (int)(client.currentScreen.width / 1.75); + int xPos = (int) (client.currentScreen.width / 1.75); for (int i = 0; i < modules.size(); i++) { - color = MicroHudColors.WHITE; + int color = MicroHudColors.WHITE; yPos = padding * (i + 1) + textRenderer.fontHeight * i; yPos += y; renderButtons(context, yPos); - if(MHGuiUtil.isHovered(xPos, yPos, client.currentScreen.width / 2, textRenderer.fontHeight, mouseX, mouseY)) + if (MHGuiUtil.isHovered(xPos, yPos, client.currentScreen.width / 2, textRenderer.fontHeight, mouseX, mouseY)) color = MicroHudColors.HOVER; //right side @@ -59,24 +56,24 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta) { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - if(Objects.isNull(client.currentScreen)) return false; + if (Objects.isNull(client.currentScreen)) return false; - if(mouseX < client.currentScreen.width / 1.75) return false; + if (mouseX < client.currentScreen.width / 1.75) return false; int top; for (int i = 0; i < microHudRenderer.getRendererModules().size(); i++) { top = padding + (padding + textRenderer.fontHeight) * i + y; if (mouseY > top && mouseY < top + textRenderer.fontHeight) { int rightEdge = client.currentScreen.width - padding; - if(mouseX < rightEdge && mouseX > rightEdge - textRenderer.getWidth("U")){ + if (mouseX < rightEdge && mouseX > rightEdge - textRenderer.getWidth("U")) { // up switchRenderers(i, i - 1); - }else { + } else { rightEdge -= padding + textRenderer.getWidth("U"); - if(mouseX < rightEdge && mouseX > rightEdge - textRenderer.getWidth("D")) { + if (mouseX < rightEdge && mouseX > rightEdge - textRenderer.getWidth("D")) { // down switchRenderers(i, i + 1); - }else{ - other.addEntry(new MHList.Entry(true, false, microHudRenderer.getRendererModules().get(i), textRenderer, other)); + } else { + other.addEntry(new MHList.Entry(true, microHudRenderer.getRendererModules().get(i), textRenderer, other)); //microHudRenderer.getRendererModules().remove(); MicroHudRenderer.getInstance().disableRendererModule(microHudRenderer.getRendererModules().get(i)); } @@ -115,16 +112,16 @@ private void renderButtons(DrawContext context, int yPos) { MHGuiUtil.drawText(context, textRenderer, "D", client.currentScreen.width - (padding + textRenderer.getWidth("U")) * 2, yPos, MicroHudColors.RED); } - private void switchRenderers(int currentPosition, int desiredPosition){ + private void switchRenderers(int currentPosition, int desiredPosition) { ArrayList rendererModules = microHudRenderer.getRendererModules(); - if(!belongsToList(rendererModules, currentPosition)) return; - if(!belongsToList(rendererModules, desiredPosition)) return; + if (!belongsToList(rendererModules, currentPosition)) return; + if (!belongsToList(rendererModules, desiredPosition)) return; MicroHudRendererModule mem = rendererModules.get(desiredPosition); rendererModules.set(desiredPosition, rendererModules.get(currentPosition)); rendererModules.set(currentPosition, mem); } - private boolean belongsToList(List list, int index){ + private boolean belongsToList(List list, int index) { return index < list.size() && index >= 0; } } diff --git a/src/client/java/com/lukeonuke/minihud/gui/list/MHList.java b/src/client/java/com/lukeonuke/minihud/gui/list/MHList.java index b23a7f6..2dbfe14 100644 --- a/src/client/java/com/lukeonuke/minihud/gui/list/MHList.java +++ b/src/client/java/com/lukeonuke/minihud/gui/list/MHList.java @@ -11,16 +11,13 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.widget.AlwaysSelectedEntryListWidget; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; public class MHList extends AlwaysSelectedEntryListWidget { - public MHList(MinecraftClient client, int width, int height, int top, int bottom, int itemHeight) { + public MHList(MinecraftClient client, int width, int height, int top, int itemHeight) { super(client, width, height, top, itemHeight); this.setRenderHeader(false, 0); -// this.setRenderHorizontalShadows(false); -// this.setRenderSelection(true); } @Override @@ -35,39 +32,30 @@ public boolean removeEntry(Entry entry) { @Override protected void drawMenuListBackground(DrawContext context) { - - } - - public void removeEntryByRenderer(MicroHudRendererModule rendererModule) { - for (Entry entry : children()) { - if (entry.getRendererModule().equals(rendererModule)) removeEntry(entry); - } + // Remove background. } - public void addIfNotPresent(Entry entry) { - if (children().contains(entry)) return; - addEntry(entry); + @Override + protected void drawHeaderAndFooterSeparators(DrawContext context) { + // Remove that pesky line at the top of the list widget. } public static class Entry extends AlwaysSelectedEntryListWidget.Entry implements AutoCloseable, Element { private final boolean showName; - private final boolean movableControls; @Getter private final MicroHudRendererModule rendererModule; private final TextRenderer textRenderer; private final MHList widget; - private final MinecraftClient client = MinecraftClient.getInstance(); - public Entry(boolean showName, boolean movableControls, MicroHudRendererModule microHudRenderer, TextRenderer textRenderer, MHList widget) { + public Entry(boolean showName, MicroHudRendererModule microHudRenderer, TextRenderer textRenderer, MHList widget) { this.showName = showName; - this.movableControls = movableControls; this.rendererModule = microHudRenderer; this.textRenderer = textRenderer; this.widget = widget; } @Override - public void close() throws Exception { + public void close() { } @@ -104,23 +92,5 @@ public String toString() { " - " + rendererModule.getClass().getName(); } - - private boolean isHovered(int x, int y, int entryWidth, int entryHeight, int mouseX, int mouseY) { - boolean hovered = false; - if (mouseX > x && mouseX < x + entryWidth) { - if (mouseY > y && mouseY < y + entryHeight) { - hovered = true; - } - } - - return hovered; - } - - private void switchLists(int index, int desiredPos) { - if (desiredPos < 0 || desiredPos > widget.children().size() - 1) return; - MHList.Entry mem = widget.children().get(index); - widget.children().set(index, widget.children().get(desiredPos)); - widget.children().set(desiredPos, mem); - } } } diff --git a/src/client/java/com/lukeonuke/minihud/gui/list/ScrollingText.java b/src/client/java/com/lukeonuke/minihud/gui/list/ScrollingText.java index c3b3483..13be616 100644 --- a/src/client/java/com/lukeonuke/minihud/gui/list/ScrollingText.java +++ b/src/client/java/com/lukeonuke/minihud/gui/list/ScrollingText.java @@ -3,27 +3,21 @@ import com.lukeonuke.minihud.MicroHud; import com.lukeonuke.minihud.MicroHudColors; import com.lukeonuke.minihud.gui.MHGuiUtil; -import com.lukeonuke.minihud.renderer.MicroHudRenderer; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.Drawable; -import net.minecraft.client.util.math.MatrixStack; public class ScrollingText implements Drawable { - private int bottom; - private TextRenderer textRenderer; + private final int bottom; + private final TextRenderer textRenderer; private final String text; private int currentBeginning = 0; - private int width; - private int textWidth; + private final int textWidth; private float time; - private String currentText; - - private MinecraftClient client = MinecraftClient.getInstance(); - private final int padding = MicroHud.PADDING; + private final MinecraftClient client = MinecraftClient.getInstance(); public ScrollingText(int bottom, TextRenderer textRenderer, String text) { this.bottom = bottom; @@ -36,17 +30,17 @@ public ScrollingText(int bottom, TextRenderer textRenderer, String text) { public void render(DrawContext context, int mouseX, int mouseY, float delta) { if (client.currentScreen == null) return; - currentText = text; - width = client.currentScreen.width; - if(width < textWidth){ + String currentText = text; + int width = client.currentScreen.width; + if (width < textWidth) { time += delta; - if(time > 15) { + if (time > 15) { time = 0; currentBeginning++; - if(currentBeginning >= text.length()) currentBeginning = 0; + if (currentBeginning >= text.length()) currentBeginning = 0; } currentText = text.substring(currentBeginning); - }else currentBeginning = 0; - MHGuiUtil.drawText(context, textRenderer, currentText, padding, client.currentScreen.height - bottom, MicroHudColors.WHITE); + } else currentBeginning = 0; + MHGuiUtil.drawText(context, textRenderer, currentText, MicroHud.PADDING, client.currentScreen.height - bottom, MicroHudColors.WHITE); } } diff --git a/src/client/java/com/lukeonuke/minihud/mixin/EntityRenderer.java b/src/client/java/com/lukeonuke/minihud/mixin/EntityRenderer.java index b23ff99..14a4e2d 100644 --- a/src/client/java/com/lukeonuke/minihud/mixin/EntityRenderer.java +++ b/src/client/java/com/lukeonuke/minihud/mixin/EntityRenderer.java @@ -1,21 +1,17 @@ package com.lukeonuke.minihud.mixin; import com.lukeonuke.minihud.data.MicroHudOptions; -import com.lukeonuke.minihud.gui.MHGuiUtil; import com.lukeonuke.minihud.service.NameLookupData; import com.lukeonuke.minihud.service.NameLookupService; import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.state.PlayerEntityRenderState; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -28,8 +24,9 @@ public abstract class EntityRenderer