aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-09-08 22:49:06 +0200
committerviciscat <51047087+viciscat@users.noreply.github.com>2024-12-12 18:21:01 +0100
commit4442ba71db63b76b0b173995a9b4dff7642fad82 (patch)
tree7d31a3a3728352a28369c8bac815aaaa73395ad7 /src/main/java
parent2158cc523bca158d678c84d152d7e716141f3af9 (diff)
downloadSkyblocker-4442ba71db63b76b0b173995a9b4dff7642fad82.tar.gz
Skyblocker-4442ba71db63b76b0b173995a9b4dff7642fad82.tar.bz2
Skyblocker-4442ba71db63b76b0b173995a9b4dff7642fad82.zip
refactor and javadoc a bit
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsHudWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ComponentBasedWidget.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/HudWidget.java106
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/gui/AbstractWidget.java84
6 files changed, 122 insertions, 82 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsHudWidget.java
index f472f734..01f591a0 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsHudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsHudWidget.java
@@ -81,7 +81,7 @@ public class CrystalsHudWidget extends HudWidget {
}
@Override
- public void render(DrawContext context, int mouseX, int mouseY, float delta) {
+ public void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
float scale = SkyblockerConfigManager.get().mining.crystalsHud.mapScaling;
//make sure the map renders infront of some stuff - improve this in the future with better layering (1.20.5?)
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java
index 095f9b76..eea3a3b7 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java
@@ -63,8 +63,6 @@ public class FarmingHud {
if (stack == null || !tryGetCounter(stack, CounterType.CULTIVATING) && !tryGetCounter(stack, CounterType.COUNTER)) {
counterType = CounterType.NONE;
}
-
- FarmingHudWidget.getInstance().update();
}
});
ClientPlayerBlockBreakEvents.AFTER.register((world, player, pos, state) -> {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
index 5f7516b7..215956c5 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java
@@ -65,7 +65,12 @@ public class FarmingHudWidget extends ComponentBasedWidget {
update();
}
- @Override
+ @Override
+ protected boolean shouldUpdateBeforeRendering() {
+ return true;
+ }
+
+ @Override
public void updateContent() {
if (client.player == null) {
addComponent(new PlainTextComponent(Text.literal("Nothing to show :p")));
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ComponentBasedWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ComponentBasedWidget.java
index a6e901ba..81fc08c0 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ComponentBasedWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ComponentBasedWidget.java
@@ -83,7 +83,7 @@ public abstract class ComponentBasedWidget extends HudWidget {
}
@Override
- public void render(DrawContext context, int mouseX, int mouseY, float delta) {
+ public final void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
MatrixStack ms = context.getMatrices();
// not sure if this is the way to go, but it fixes Z-layer issues
@@ -145,6 +145,7 @@ public abstract class ComponentBasedWidget extends HudWidget {
// min width is dependent on title
w = Math.max(w, BORDER_SZE_W + BORDER_SZE_E + txtRend.getWidth(title) + 4 + 4 + 1);
+ // update the positions so it doesn't wait for the next tick or something
if (h != prevH || w != prevW) ScreenBuilder.positionsNeedsUpdating = true;
prevW = w;
prevH = h;
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/HudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/HudWidget.java
index 414f9241..e1c36606 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/HudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/HudWidget.java
@@ -1,22 +1,15 @@
package de.hysky.skyblocker.skyblock.tabhud.widget;
import java.util.Objects;
-import java.util.function.Consumer;
-import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.ScreenMaster;
import de.hysky.skyblocker.utils.Location;
+import de.hysky.skyblocker.utils.render.gui.AbstractWidget;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
-import net.minecraft.client.gui.Drawable;
-import net.minecraft.client.gui.Element;
-import net.minecraft.client.gui.ScreenRect;
-import net.minecraft.client.gui.widget.ClickableWidget;
-import net.minecraft.client.gui.widget.Widget;
-public abstract class HudWidget implements Element, Widget, Drawable {
+public abstract class HudWidget extends AbstractWidget {
private final String internalID;
- protected int w = 0, h = 0;
- protected int x = 0, y = 0;
+
/**
@@ -25,80 +18,44 @@ public abstract class HudWidget implements Element, Widget, Drawable {
*/
public HudWidget(String internalID) {
this.internalID = internalID;
- ScreenMaster.widgetInstances.put(internalID, this);
}
+ /**
+ * Whether the widget should render in this location. This should check any config if need be.
+ * This method is used in the WidgetsConfigScreen, hence the location parameter.
+ * {@link de.hysky.skyblocker.utils.Utils#getLocation()} should not be used unless you know what you're doing.
+ * @param location the location
+ * @return true if the widget should render in the specified location
+ */
public abstract boolean shouldRender(Location location);
+ /**
+ * Perform all your logic here. Or in the {@link #renderWidget(DrawContext, int, int, float)} method if you feel like it.
+ * But this will be called much less often. See usages of it.
+ * @see #shouldUpdateBeforeRendering()
+ */
public abstract void update();
+ /**
+ * Returns true if the update method should be called right before rendering.
+ * @return true if it should update
+ */
+ protected boolean shouldUpdateBeforeRendering() {
+ return false;
+ }
+
public void render(DrawContext context) {
render(context, -1, -1, MinecraftClient.getInstance().getRenderTickCounter().getLastFrameDuration());
}
+ @Override
+ public final void render(DrawContext context, int mouseX, int mouseY, float delta) {
+ if (shouldUpdateBeforeRendering()) update();
+ renderWidget(context, mouseX, mouseY, delta);
+ }
-
- public final int getX() {
- return this.x;
- }
-
- public final void setX(int x) {
- this.x = x;
- }
-
- public final int getY() {
- return this.y;
- }
-
- public final void setY(int y) {
- this.y = y;
- }
-
- public final int getWidth() {
- return this.w;
- }
-
- public void setWidth(int width) {
- this.w = width;
- }
-
- public final int getHeight() {
- return this.h;
- }
-
- @Override
- public void forEachChild(Consumer<ClickableWidget> consumer) {}
-
- public void setHeight(int height) {
- this.h = height;
- }
-
- public void setDimensions(int size) {
- setDimensions(size, size);
- }
-
- public void setDimensions(int width, int height) {
- this.w = width;
- this.h = height;
- }
-
- private boolean focused = false;
-
- @Override
- public void setFocused(boolean focused) {
- this.focused = focused;
- }
-
- @Override
- public boolean isFocused() {
- return focused;
- }
-
- @Override
- public boolean isMouseOver(double mouseX, double mouseY) {
- return mouseX >= getX() && mouseX <= getX() + getWidth() && mouseY >= getY() && mouseY <= getY() + getHeight();
- }
+ protected abstract void renderWidget(DrawContext context, int mouseX, int mouseY, float delta);
/**
*
@@ -114,11 +71,6 @@ public abstract class HudWidget implements Element, Widget, Drawable {
return Objects.equals(getInternalID(), widget.getInternalID());
}
- @Override
- public ScreenRect getNavigationFocus() {
- return Element.super.getNavigationFocus();
- }
-
public String getInternalID() {
return internalID;
}
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/AbstractWidget.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/AbstractWidget.java
new file mode 100644
index 00000000..8b891fa3
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/utils/render/gui/AbstractWidget.java
@@ -0,0 +1,84 @@
+package de.hysky.skyblocker.utils.render.gui;
+
+import net.minecraft.client.gui.Drawable;
+import net.minecraft.client.gui.Element;
+import net.minecraft.client.gui.ScreenRect;
+import net.minecraft.client.gui.widget.ClickableWidget;
+import net.minecraft.client.gui.widget.Widget;
+
+import java.util.function.Consumer;
+
+/**
+ * Implements a few things so you don't have to!
+ */
+public abstract class AbstractWidget implements Widget, Element, Drawable {
+
+ protected int w = 0, h = 0;
+ protected int x = 0, y = 0;
+
+ public final int getX() {
+ return this.x;
+ }
+
+ public final void setX(int x) {
+ this.x = x;
+ }
+
+ public final int getY() {
+ return this.y;
+ }
+
+ public final void setY(int y) {
+ this.y = y;
+ }
+
+ public final int getWidth() {
+ return this.w;
+ }
+
+ public void setWidth(int width) {
+ this.w = width;
+ }
+
+ public final int getHeight() {
+ return this.h;
+ }
+
+ @Override
+ public void forEachChild(Consumer<ClickableWidget> consumer) {}
+
+ public void setHeight(int height) {
+ this.h = height;
+ }
+
+ public void setDimensions(int size) {
+ setDimensions(size, size);
+ }
+
+ public void setDimensions(int width, int height) {
+ this.w = width;
+ this.h = height;
+ }
+
+ private boolean focused = false;
+
+ @Override
+ public void setFocused(boolean focused) {
+ this.focused = focused;
+ }
+
+ @Override
+ public boolean isFocused() {
+ return focused;
+ }
+
+ @Override
+ public boolean isMouseOver(double mouseX, double mouseY) {
+ return mouseX >= getX() && mouseX <= getX() + getWidth() && mouseY >= getY() && mouseY <= getY() + getHeight();
+ }
+
+ @Override
+ public ScreenRect getNavigationFocus() {
+ return Element.super.getNavigationFocus();
+ }
+}