aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-05-12 17:13:17 +0200
committerviciscat <51047087+viciscat@users.noreply.github.com>2024-12-12 18:19:05 +0100
commit628bf91b63c78a9ad012a7cf240c76628e15901c (patch)
tree074ba7b0c713bf7a52665b1c86e203dac2e55ce4 /src/main/java
parent49cb5e05a35072939f76a90921b72962c478a73b (diff)
downloadSkyblocker-628bf91b63c78a9ad012a7cf240c76628e15901c.tar.gz
Skyblocker-628bf91b63c78a9ad012a7cf240c76628e15901c.tar.bz2
Skyblocker-628bf91b63c78a9ad012a7cf240c76628e15901c.zip
more PROGRESS
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/HandledScreenProviderMixin.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java14
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsElementList.java22
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java50
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/BooleanEntry.java47
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/DefaultEntry.java50
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/EditableEntry.java (renamed from src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/IslandEntry.java)4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetEntry.java19
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetsListEntry.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java2
11 files changed, 191 insertions, 31 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenProviderMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenProviderMixin.java
index ac81bfec..9b47f736 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenProviderMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenProviderMixin.java
@@ -95,11 +95,11 @@ public interface HandledScreenProviderMixin<T extends ScreenHandler> {
}
// Excessive widgets config
- case GenericContainerScreenHandler containerScreenHandler when SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudEnabled && (nameLowercase.startsWith("widgets in") || nameLowercase.startsWith("widgets on") || nameLowercase.equals("tablist widgets")) -> {
+ case GenericContainerScreenHandler containerScreenHandler when SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudEnabled && (nameLowercase.startsWith("widgets in") || nameLowercase.startsWith("widgets on") || nameLowercase.equals("tablist widgets") || nameLowercase.endsWith("widget settings") || (nameLowercase.startsWith("shown") && client.currentScreen instanceof WidgetsConfigurationScreen)) -> {
client.player.currentScreenHandler = containerScreenHandler;
switch (client.currentScreen) {
- case WidgetsConfigurationScreen screen -> screen.updateHandler(containerScreenHandler);
- case null, default -> client.setScreen(new WidgetsConfigurationScreen(containerScreenHandler));
+ case WidgetsConfigurationScreen screen -> screen.updateHandler(containerScreenHandler, nameLowercase);
+ case null, default -> client.setScreen(new WidgetsConfigurationScreen(containerScreenHandler, nameLowercase));
}
ci.cancel();
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java
index 2b76bef6..3b999e18 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsConfigurationScreen.java
@@ -3,7 +3,6 @@ package de.hysky.skyblocker.skyblock.tabhud.config;
import de.hysky.skyblocker.utils.ItemUtils;
import net.minecraft.client.gui.ScreenRect;
import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.client.gui.screen.world.CreateWorldScreen;
import net.minecraft.client.gui.tab.TabManager;
import net.minecraft.client.gui.widget.TabNavigationWidget;
import net.minecraft.item.ItemStack;
@@ -14,11 +13,10 @@ import net.minecraft.screen.ScreenHandlerListener;
import net.minecraft.text.Text;
import org.jetbrains.annotations.Nullable;
-import java.util.List;
-
public class WidgetsConfigurationScreen extends Screen implements ScreenHandlerListener {
private GenericContainerScreenHandler handler;
+ private String titleLowercase;
// Tabs and stuff
private final TabManager tabManager = new TabManager(this::addDrawableChild, this::remove);
@@ -28,10 +26,11 @@ public class WidgetsConfigurationScreen extends Screen implements ScreenHandlerL
private boolean switchingToPopup = false;
- public WidgetsConfigurationScreen(GenericContainerScreenHandler handler) {
+ public WidgetsConfigurationScreen(GenericContainerScreenHandler handler, String titleLowercase) {
super(Text.literal("Widgets Configuration"));
this.handler = handler;
handler.addListener(this);
+ this.titleLowercase = titleLowercase;
}
@Override
@@ -57,10 +56,11 @@ public class WidgetsConfigurationScreen extends Screen implements ScreenHandlerL
}
}
- public void updateHandler(GenericContainerScreenHandler newHandler) {
+ public void updateHandler(GenericContainerScreenHandler newHandler, String title) {
handler.removeListener(this);
handler = newHandler;
handler.addListener(this);
+ this.titleLowercase = title;
widgetsOrderingTab.updateHandler(handler);
}
@@ -79,8 +79,8 @@ public class WidgetsConfigurationScreen extends Screen implements ScreenHandlerL
widgetsOrderingTab.hopper(null);
}
}
- if (slotId > 9 && slotId < this.handler.getRows() * 9 - 9) {
- widgetsOrderingTab.updateEntries();
+ if (slotId > 9 && slotId < this.handler.getRows() * 9 - 9 || slotId == 45 || slotId == 53) {
+ widgetsOrderingTab.updateEntries(titleLowercase);
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsElementList.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsElementList.java
index 8836e8ba..f3c84c73 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsElementList.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsElementList.java
@@ -16,6 +16,8 @@ public class WidgetsElementList extends ElementListWidget<WidgetsListEntry> {
static final Identifier MOVE_DOWN_HIGHLIGHTED_TEXTURE = new Identifier("transferable_list/move_down_highlighted");
static final Identifier MOVE_DOWN_TEXTURE = new Identifier("transferable_list/move_down");
private final WidgetsOrderingTab parent;
+ private boolean upArrowHovered = false;
+ private boolean downArrowHovered = false;
private int editingPosition = - 1;
@@ -48,8 +50,11 @@ public class WidgetsElementList extends ElementListWidget<WidgetsListEntry> {
protected void renderEntry(DrawContext context, int mouseX, int mouseY, float delta, int index, int x, int y, int entryWidth, int entryHeight) {
super.renderEntry(context, mouseX, mouseY, delta, index, x, y, entryWidth, entryHeight);
if (index == editingPosition) {
- context.drawGuiTexture(MOVE_UP_TEXTURE, getRowRight() - 16, y, 32, 32);
- context.drawGuiTexture(MOVE_DOWN_TEXTURE, getRowRight() - 16, y, 32, 32);
+ boolean xGood = mouseX >= x + entryWidth && mouseX < x + entryWidth + 15;
+ upArrowHovered = xGood && mouseY >= y && mouseY < y + entryHeight / 2;
+ downArrowHovered = xGood && mouseY >= y + entryHeight / 2 && mouseY < y + entryHeight;
+ context.drawGuiTexture(upArrowHovered ? MOVE_UP_HIGHLIGHTED_TEXTURE : MOVE_UP_TEXTURE, getRowRight() - 16, y, 32, 32);
+ context.drawGuiTexture(downArrowHovered ? MOVE_DOWN_HIGHLIGHTED_TEXTURE : MOVE_DOWN_TEXTURE, getRowRight() - 16, y, 32, 32);
}
if (Objects.equals(getHoveredEntry(), getEntry(index))) {
this.x = x;
@@ -74,6 +79,19 @@ public class WidgetsElementList extends ElementListWidget<WidgetsListEntry> {
}
@Override
+ public boolean mouseClicked(double mouseX, double mouseY, int button) {
+ if (upArrowHovered) {
+ parent.shiftClickAndWaitForServer(13, 1);
+ return true;
+ }
+ if (downArrowHovered) {
+ parent.shiftClickAndWaitForServer(13, 0);
+ return true;
+ }
+ return super.mouseClicked(mouseX, mouseY, button);
+ }
+
+ @Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
if (keyCode == GLFW.GLFW_KEY_UP && editingPosition != -1) {
parent.clickAndWaitForServer(13, 1);
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java
index 258b5c68..983ec41b 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/WidgetsOrderingTab.java
@@ -1,6 +1,8 @@
package de.hysky.skyblocker.skyblock.tabhud.config;
-import de.hysky.skyblocker.skyblock.tabhud.config.entries.IslandEntry;
+import de.hysky.skyblocker.skyblock.tabhud.config.entries.BooleanEntry;
+import de.hysky.skyblocker.skyblock.tabhud.config.entries.DefaultEntry;
+import de.hysky.skyblocker.skyblock.tabhud.config.entries.EditableEntry;
import de.hysky.skyblocker.skyblock.tabhud.config.entries.WidgetEntry;
import de.hysky.skyblocker.utils.ItemUtils;
import net.minecraft.client.MinecraftClient;
@@ -13,6 +15,7 @@ import net.minecraft.item.Items;
import net.minecraft.screen.GenericContainerScreenHandler;
import net.minecraft.screen.slot.Slot;
import net.minecraft.screen.slot.SlotActionType;
+import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import org.jetbrains.annotations.Nullable;
@@ -23,8 +26,11 @@ public class WidgetsOrderingTab implements Tab {
private final WidgetsElementList widgetsElementList;
private final ButtonWidget back;
+ private final ButtonWidget previousPage;
+ private final ButtonWidget nextPage;
private GenericContainerScreenHandler handler;
private final MinecraftClient client;
+ private boolean waitingForServer = false;
public WidgetsOrderingTab(MinecraftClient client, GenericContainerScreenHandler handler) {
widgetsElementList = new WidgetsElementList(this, client, 0, 0, 0);
@@ -33,6 +39,12 @@ public class WidgetsOrderingTab implements Tab {
back = ButtonWidget.builder(Text.literal("Back"), button -> clickAndWaitForServer(48, 0))
.size(64, 12)
.build();
+ previousPage = ButtonWidget.builder(Text.literal("Previous Page"), button -> clickAndWaitForServer(45, 0))
+ .size(100, 12)
+ .build();
+ nextPage = ButtonWidget.builder(Text.literal("Next Page"), button -> clickAndWaitForServer(53, 0))
+ .size(100, 12)
+ .build();
}
@Override
@@ -43,12 +55,23 @@ public class WidgetsOrderingTab implements Tab {
@Override
public void forEachChild(Consumer<ClickableWidget> consumer) {
consumer.accept(back);
+ consumer.accept(previousPage);
+ consumer.accept(nextPage);
consumer.accept(widgetsElementList);
}
public void clickAndWaitForServer(int slot, int button) {
+ if (waitingForServer) return;
if (client.interactionManager == null || this.client.player == null) return;
client.interactionManager.clickSlot(handler.syncId, slot, button, SlotActionType.PICKUP, this.client.player);
+ waitingForServer = true;
+ }
+
+ public void shiftClickAndWaitForServer(int slot, int button) {
+ if (waitingForServer) return;
+ if (client.interactionManager == null || this.client.player == null) return;
+ client.interactionManager.clickSlot(handler.syncId, slot, button, SlotActionType.QUICK_MOVE, this.client.player);
+ waitingForServer = true;
}
public void updateHandler(GenericContainerScreenHandler newHandler) {
@@ -77,25 +100,38 @@ public class WidgetsOrderingTab implements Tab {
widgetsElementList.setEditingPosition(editing - start);
}
- public void updateEntries() {
+ public void updateEntries(String titleLowercase) {
+ waitingForServer = false;
widgetsElementList.clearEntries();
- for (int i = 9; i < handler.getRows() * 9 - 9; i++) {
+ for (int i = titleLowercase.equals("tablist widgets") ? 9: 18; i < handler.getRows() * 9 - 9; i++) {
Slot slot = handler.getSlot(i);
ItemStack stack = slot.getStack();
- if (stack.isEmpty() || stack.isOf(Items.BLACK_STAINED_GLASS)) continue;
+ if (stack.isEmpty() || stack.isOf(Items.BLACK_STAINED_GLASS_PANE)) continue;
String lowerCase = stack.getName().getString().trim().toLowerCase();
- if (lowerCase.startsWith("widgets on") || lowerCase.startsWith("widgets in")) {
- widgetsElementList.addEntry(new IslandEntry(this, i, stack));
+ List<Text> lore = ItemUtils.getLore(stack);
+ String lastLowerCase = lore.getLast().getString().toLowerCase();
+ if (lowerCase.startsWith("widgets on") || lowerCase.startsWith("widgets in") || lastLowerCase.contains("click to edit")) {
+ widgetsElementList.addEntry(new EditableEntry(this, i, stack));
} else if (lowerCase.endsWith("widget")) {
widgetsElementList.addEntry(new WidgetEntry(this, i, stack));
+ } else if (lastLowerCase.contains("enable") || lastLowerCase.contains("disable")) {
+ widgetsElementList.addEntry(new BooleanEntry(this, i, stack));
+ } else {
+ widgetsElementList.addEntry(new DefaultEntry(this, i, stack));
}
}
+ // Force it to update the scrollbar (it is stupid)
+ widgetsElementList.setScrollAmount(widgetsElementList.getScrollAmount());
+ previousPage.visible = handler.getRows() == 6 && handler.getSlot(45).getStack().isOf(Items.ARROW);
+ nextPage.visible = handler.getRows() == 6 && handler.getSlot(53).getStack().isOf(Items.ARROW);
}
@Override
public void refreshGrid(ScreenRect tabArea) {
back.setPosition(16, tabArea.getTop() + 4);
widgetsElementList.setY(tabArea.getTop());
- widgetsElementList.setDimensions(tabArea.width(), tabArea.height());
+ widgetsElementList.setDimensions(tabArea.width(), tabArea.height() - 20);
+ previousPage.setPosition(widgetsElementList.getRowLeft(), widgetsElementList.getBottom() + 4);
+ nextPage.setPosition(widgetsElementList.getScrollbarX() - 100, widgetsElementList.getBottom() + 4);
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/BooleanEntry.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/BooleanEntry.java
new file mode 100644
index 00000000..18d888ea
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/BooleanEntry.java
@@ -0,0 +1,47 @@
+package de.hysky.skyblocker.skyblock.tabhud.config.entries;
+
+import de.hysky.skyblocker.skyblock.tabhud.config.WidgetsOrderingTab;
+import de.hysky.skyblocker.utils.ItemUtils;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.Element;
+import net.minecraft.client.gui.widget.ButtonWidget;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.text.Text;
+
+import java.util.List;
+
+public class BooleanEntry extends WidgetsListEntry {
+
+ private final ButtonWidget enableButton;
+
+ public BooleanEntry(WidgetsOrderingTab parent, int slotId, ItemStack icon) {
+ super(parent, slotId, icon);
+ boolean enabled = !ItemUtils.getLore(icon).getLast().getString().toLowerCase().contains("enable");
+ enableButton = ButtonWidget.builder(enabled ? ENABLED_TEXT : DISABLED_TEXT, button -> this.parent.clickAndWaitForServer(this.slotId, 0))
+ .size(64, 12)
+ .build();
+
+ }
+
+ @Override
+ public void renderTooltip(DrawContext context, int x, int y, int entryWidth, int entryHeight, int mouseX, int mouseY) {
+ if (mouseX >= x && mouseX <= x + entryWidth - 70 && mouseY >= y && mouseY <= y + entryHeight) {
+ List<Text> lore = ItemUtils.getLore(icon);
+ context.drawTooltip(MinecraftClient.getInstance().textRenderer, lore.subList(0, lore.size() - 2), mouseX, mouseY);
+ }
+ }
+
+ @Override
+ public List<? extends Element> children() {
+ return List.of(enableButton);
+ }
+
+ @Override
+ public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) {
+ renderIconAndText(context, y, x, entryHeight);
+ enableButton.setPosition(x + entryWidth - 70, y + (entryHeight - 12) / 2);
+ enableButton.render(context, mouseX, mouseY, tickDelta);
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/DefaultEntry.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/DefaultEntry.java
new file mode 100644
index 00000000..635d3bf8
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/DefaultEntry.java
@@ -0,0 +1,50 @@
+package de.hysky.skyblocker.skyblock.tabhud.config.entries;
+
+import de.hysky.skyblocker.skyblock.tabhud.config.WidgetsOrderingTab;
+import de.hysky.skyblocker.utils.ItemUtils;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.Element;
+import net.minecraft.client.gui.widget.ButtonWidget;
+import net.minecraft.item.ItemStack;
+import net.minecraft.text.Text;
+
+import java.util.List;
+
+public class DefaultEntry extends WidgetsListEntry{
+
+ private final ButtonWidget leftClick;
+ private final ButtonWidget rightClick;
+
+ public DefaultEntry(WidgetsOrderingTab parent, int slotId, ItemStack icon) {
+ super(parent, slotId, icon);
+ leftClick = ButtonWidget.builder(Text.literal("LEFT"),button -> this.parent.clickAndWaitForServer(this.slotId, 0))
+ .size(32, 12)
+ .build();
+ rightClick = ButtonWidget.builder(Text.literal("RIGHT"), button -> this.parent.clickAndWaitForServer(this.slotId, 1))
+ .size(32, 12)
+ .build();
+ }
+
+ @Override
+ public void renderTooltip(DrawContext context, int x, int y, int entryWidth, int entryHeight, int mouseX, int mouseY) {
+ if (mouseX >= x && mouseX <= x + entryWidth - 80 && mouseY >= y && mouseY <= y + entryHeight) {
+ List<Text> lore = ItemUtils.getLore(icon);
+ context.drawTooltip(MinecraftClient.getInstance().textRenderer, lore, mouseX, mouseY);
+ }
+ }
+
+ @Override
+ public List<? extends Element> children() {
+ return List.of(leftClick, rightClick);
+ }
+
+ @Override
+ public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) {
+ renderIconAndText(context, y, x, entryHeight);
+ rightClick.setPosition(x + entryWidth - 40, y + (entryHeight - 12) / 2);
+ rightClick.render(context, mouseX, mouseY, tickDelta);
+ leftClick.setPosition(x + entryWidth - 80, y + (entryHeight - 12) / 2);
+ leftClick.render(context, mouseX, mouseY, tickDelta);
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/IslandEntry.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/EditableEntry.java
index 8ca1248b..97eda9b5 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/IslandEntry.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/EditableEntry.java
@@ -13,12 +13,12 @@ import net.minecraft.util.Colors;
import java.util.List;
-public class IslandEntry extends WidgetsListEntry {
+public class EditableEntry extends WidgetsListEntry {
private final ButtonWidget editButton;
private final boolean locked;
- public IslandEntry(WidgetsOrderingTab parent, int slotId, ItemStack icon) {
+ public EditableEntry(WidgetsOrderingTab parent, int slotId, ItemStack icon) {
super(parent, slotId, icon);
editButton = ButtonWidget.builder(Text.literal("EDIT"), button -> this.parent.clickAndWaitForServer(this.slotId, 0))
.size(32, 12)
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetEntry.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetEntry.java
index b2835008..b360f8e8 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetEntry.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetEntry.java
@@ -10,18 +10,17 @@ import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import net.minecraft.util.Colors;
-import net.minecraft.util.Formatting;
import java.util.List;
public class WidgetEntry extends WidgetsListEntry {
- private static final Text ENABLED = Text.literal("ENABLED").formatted(Formatting.GREEN);
- private static final Text DISABLED = Text.literal("DISABLED").formatted(Formatting.RED);
+
private final ButtonWidget editButton;
private final State state;
private final ButtonWidget enableButton;
+ private final boolean alwaysEnabled;
public WidgetEntry(WidgetsOrderingTab parent, int slotId, ItemStack icon) {
super(parent, slotId, icon);
@@ -35,16 +34,17 @@ public class WidgetEntry extends WidgetsListEntry {
} else if (string.startsWith("✖")) {
state = State.DISABLED;
} else state = State.LOCKED;
- enableButton = ButtonWidget.builder(state.equals(State.ENABLED) ? ENABLED : DISABLED, button -> this.parent.clickAndWaitForServer(this.slotId, 0))
+ enableButton = ButtonWidget.builder(state.equals(State.ENABLED) ? ENABLED_TEXT : DISABLED_TEXT, button -> this.parent.clickAndWaitForServer(this.slotId, 0))
.size(64, 12)
.build();
+ alwaysEnabled = ItemUtils.getLoreLineIf(icon, s -> s.toLowerCase().contains("always enable")) != null;
}
@Override
public void renderTooltip(DrawContext context, int x, int y, int entryWidth, int entryHeight, int mouseX, int mouseY) {
- if (mouseX >= x && mouseX <= x + entryWidth - 50 && mouseY >= y && mouseY <= y + entryHeight) {
+ if (mouseX >= x && mouseX <= x + entryWidth - 110 && mouseY >= y && mouseY <= y + entryHeight) {
List<Text> lore = ItemUtils.getLore(icon);
context.drawTooltip(MinecraftClient.getInstance().textRenderer, state == State.LOCKED ? lore : lore.subList(0, lore.size() - 3), mouseX, mouseY);
}
@@ -52,7 +52,7 @@ public class WidgetEntry extends WidgetsListEntry {
@Override
public List<? extends Element> children() {
- return List.of(editButton, enableButton);
+ return alwaysEnabled ? List.of(editButton) : List.of(editButton, enableButton);
}
@Override
@@ -61,11 +61,14 @@ public class WidgetEntry extends WidgetsListEntry {
TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
renderIconAndText(context, y, x, entryHeight);
if (state != State.LOCKED) {
+
editButton.setPosition(x + entryWidth - 40, y + (entryHeight - 12) / 2);
editButton.render(context, mouseX, mouseY, tickDelta);
- enableButton.setPosition(x + entryWidth - 110, y + (entryHeight - 12) / 2);
- enableButton.render(context, mouseX, mouseY, tickDelta);
+ if (!alwaysEnabled) {
+ enableButton.setPosition(x + entryWidth - 110, y + (entryHeight - 12) / 2);
+ enableButton.render(context, mouseX, mouseY, tickDelta);
+ }
} else {
context.drawText(textRenderer, "LOCKED", x + entryWidth - 50, textY, Colors.RED, true);
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetsListEntry.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetsListEntry.java
index 1765e3f6..45651f50 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetsListEntry.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/entries/WidgetsListEntry.java
@@ -7,12 +7,17 @@ import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.Selectable;
import net.minecraft.client.gui.widget.ElementListWidget;
import net.minecraft.item.ItemStack;
+import net.minecraft.text.Text;
import net.minecraft.util.Colors;
+import net.minecraft.util.Formatting;
import java.util.List;
public abstract class WidgetsListEntry extends ElementListWidget.Entry<WidgetsListEntry> {
+ protected static final Text ENABLED_TEXT = Text.literal("ENABLED").formatted(Formatting.GREEN);
+ protected static final Text DISABLED_TEXT = Text.literal("DISABLED").formatted(Formatting.RED);
+
protected final int slotId;
protected final WidgetsOrderingTab parent;
protected final ItemStack icon;
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
index 8832e6f0..44946b5c 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/util/PlayerListMgr.java
@@ -1,6 +1,7 @@
package de.hysky.skyblocker.skyblock.tabhud.util;
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.mixins.accessors.PlayerListHudAccessor;
import de.hysky.skyblocker.skyblock.tabhud.screenbuilder.ScreenBuilder;
import de.hysky.skyblocker.skyblock.tabhud.widget.TabHudWidget;
@@ -57,7 +58,7 @@ public class PlayerListMgr {
public static void updateList() {
- if (!Utils.isOnSkyblock()) {
+ if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudEnabled) {
return;
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java
index 6aedded7..c967b8e8 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/ElectionWidget.java
@@ -46,7 +46,7 @@ public class ElectionWidget extends TabHudWidget {
MAYOR_DATA.put("Marina", Ico.FISH_ROD);
}
- private static final Formatting[] COLS = { Formatting.GOLD, Formatting.RED, Formatting.LIGHT_PURPLE };
+ private static final Formatting[] COLS = { Formatting.RED, Formatting.LIGHT_PURPLE, Formatting.GREEN, Formatting.AQUA, Formatting.YELLOW };
public ElectionWidget() {
super("Election", TITLE, Formatting.YELLOW.getColorValue());