aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/item
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-06-21 09:12:11 +0300
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-07-22 14:23:40 +0800
commit3de616fcaca8e39a4d1caef6fdd4f984adb7e000 (patch)
treed23b38bb692c854af98a408f4d894cf8a0263395 /src/main/java/de/hysky/skyblocker/skyblock/item
parentf26ac1e5a63d47d73995e22b12ebdcbc0e26a57f (diff)
downloadSkyblocker-3de616fcaca8e39a4d1caef6fdd4f984adb7e000.tar.gz
Skyblocker-3de616fcaca8e39a4d1caef6fdd4f984adb7e000.tar.bz2
Skyblocker-3de616fcaca8e39a4d1caef6fdd4f984adb7e000.zip
Change slot text to have multiple states
The enum SlotTextState is very self-descriptive if you wonder what the states are
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/item')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SimpleSlotTextAdder.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java35
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextState.java23
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/TextPosition.java3
4 files changed, 58 insertions, 11 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SimpleSlotTextAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SimpleSlotTextAdder.java
index 1eb3e5c2..205e48d8 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SimpleSlotTextAdder.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SimpleSlotTextAdder.java
@@ -1,8 +1,7 @@
package de.hysky.skyblocker.skyblock.item.slottext;
-import de.hysky.skyblocker.config.SkyblockerConfigManager;
-import de.hysky.skyblocker.utils.container.SlotTextAdder;
import de.hysky.skyblocker.utils.container.RegexContainerMatcher;
+import de.hysky.skyblocker.utils.container.SlotTextAdder;
import org.intellij.lang.annotations.Language;
import org.jetbrains.annotations.NotNull;
@@ -37,9 +36,4 @@ public abstract class SimpleSlotTextAdder extends RegexContainerMatcher implemen
protected SimpleSlotTextAdder() {
super();
}
-
- @Override
- public boolean isEnabled() {
- return SkyblockerConfigManager.get().general.itemInfoDisplay.slotText;
- }
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java
index fa7036c2..7ab7570c 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java
@@ -1,17 +1,22 @@
package de.hysky.skyblocker.skyblock.item.slottext;
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.bazaar.BazaarHelper;
import de.hysky.skyblocker.skyblock.item.slottext.adders.*;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.container.SlotTextAdder;
+import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
+import net.fabricmc.fabric.api.client.screen.v1.ScreenKeyboardEvents;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.ingame.HandledScreen;
+import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack;
import net.minecraft.screen.slot.Slot;
import org.jetbrains.annotations.NotNull;
+import org.lwjgl.glfw.GLFW;
import java.util.ArrayList;
import java.util.List;
@@ -39,6 +44,8 @@ public class SlotTextManager {
new StatsTuningAdder()
};
private static final ArrayList<SlotTextAdder> currentScreenAdders = new ArrayList<>();
+ private static final KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding("key.skyblocker.slottext", GLFW.GLFW_KEY_LEFT_ALT, "key.categories.skyblocker"));
+ private static boolean keyHeld = false;
private SlotTextManager() {
}
@@ -49,13 +56,23 @@ public class SlotTextManager {
onScreenChange(handledScreen);
ScreenEvents.remove(screen).register(ignored -> currentScreenAdders.clear());
}
+ ScreenKeyboardEvents.afterKeyPress(screen).register((screen1, key, scancode, modifiers) -> {
+ if (keyBinding.matchesKey(key, scancode)) {
+ SkyblockerConfigManager.get().general.itemInfoDisplay.slotTextToggled = !SkyblockerConfigManager.get().general.itemInfoDisplay.slotTextToggled;
+ keyHeld = true;
+ }
+ });
+ ScreenKeyboardEvents.afterKeyRelease(screen).register((screen1, key, scancode, modifiers) -> {
+ if (keyBinding.matchesKey(key, scancode)) {
+ keyHeld = false;
+ }
+ });
});
}
private static void onScreenChange(HandledScreen<?> screen) {
for (SlotTextAdder adder : adders) {
- if (!adder.isEnabled()) continue;
- if (adder.test(screen)) {
+ if (adder.isEnabled() && adder.test(screen)) {
currentScreenAdders.add(adder);
}
}
@@ -70,7 +87,7 @@ public class SlotTextManager {
*/
@NotNull
public static List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) {
- if (currentScreenAdders.isEmpty()) return List.of();
+ if (currentScreenAdders.isEmpty() || !isEnabled()) return List.of();
for (SlotTextAdder adder : currentScreenAdders) {
List<SlotText> text = adder.getText(itemStack, slotId);
if (!text.isEmpty()) return text;
@@ -83,7 +100,7 @@ public class SlotTextManager {
}
public static void renderSlotText(DrawContext context, TextRenderer textRenderer, ItemStack itemStack, int slotId, int x, int y) {
- List<SlotText> textList = SlotTextManager.getText(itemStack, slotId);
+ List<SlotText> textList = getText(itemStack, slotId);
if (textList.isEmpty()) return;
MatrixStack matrices = context.getMatrices();
@@ -109,4 +126,14 @@ public class SlotTextManager {
matrices.pop();
}
}
+
+ public static boolean isEnabled() {
+ return switch (SkyblockerConfigManager.get().general.itemInfoDisplay.slotText) {
+ case ENABLED -> true;
+ case DISABLED -> false;
+ case PRESS_TO_TOGGLE -> SkyblockerConfigManager.get().general.itemInfoDisplay.slotTextToggled;
+ case HOLD_TO_HIDE -> !keyHeld;
+ case HOLD_TO_SHOW -> keyHeld;
+ };
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextState.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextState.java
new file mode 100644
index 00000000..38280166
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextState.java
@@ -0,0 +1,23 @@
+package de.hysky.skyblocker.skyblock.item.slottext;
+
+/**
+ * Used in {@link SlotTextManager#isEnabled()} to determine whether the slot text should be shown or not.
+ */
+public enum SlotTextState {
+ ENABLED,
+ HOLD_TO_SHOW,
+ PRESS_TO_TOGGLE,
+ HOLD_TO_HIDE,
+ DISABLED;
+
+ @Override
+ public String toString() {
+ return switch (this) {
+ case ENABLED -> "Enabled";
+ case HOLD_TO_SHOW -> "Hold to Show";
+ case PRESS_TO_TOGGLE -> "Press to Toggle";
+ case HOLD_TO_HIDE -> "Hold to Hide";
+ case DISABLED -> "Disabled";
+ };
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/TextPosition.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/TextPosition.java
index 052b228d..59f5e7e8 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/TextPosition.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/TextPosition.java
@@ -1,5 +1,8 @@
package de.hysky.skyblocker.skyblock.item.slottext;
+/**
+ * Used in {@link SlotText#position} to determine where the slot text should be rendered.
+ */
public enum TextPosition {
TOP_LEFT,
TOP_RIGHT,