aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/hysky/skyblocker')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java27
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java14
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/InGameHudMixin.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java47
5 files changed, 73 insertions, 27 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
index 358a6635..a7569adb 100644
--- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
@@ -214,6 +214,9 @@ public class SkyblockerConfig {
public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay();
@SerialEntry
+ public ItemProtection itemProtection = new ItemProtection();
+
+ @SerialEntry
public WikiLookup wikiLookup = new WikiLookup();
@SerialEntry
@@ -552,6 +555,30 @@ public class SkyblockerConfig {
}
}
+ public static class ItemProtection {
+ @SerialEntry
+ public SlotLockStyle slotLockStyle = SlotLockStyle.FANCY;
+ }
+
+ public enum SlotLockStyle {
+ CLASSIC(new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/slot_lock.png")),
+ FANCY(new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/fancy_slot_lock.png"));
+
+ public final Identifier tex;
+
+ SlotLockStyle(Identifier tex) {
+ this.tex = tex;
+ }
+
+ @Override
+ public String toString() {
+ return switch (this) {
+ case CLASSIC -> "Classic";
+ case FANCY -> "FANCY";
+ };
+ }
+ }
+
public static class WikiLookup {
@SerialEntry
public boolean enableWikiLookup = true;
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
index 406dd885..808b3c2c 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
@@ -457,6 +457,20 @@ public class GeneralCategory {
.build())
.build())
+ //Item Protection
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemProtection"))
+ .collapsed(true)
+ .option(Option.<SkyblockerConfig.SlotLockStyle>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemProtection.slotLockStyle"))
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemProtection.slotLockStyle.@Tooltip")))
+ .binding(defaults.general.itemProtection.slotLockStyle,
+ () -> config.general.itemProtection.slotLockStyle,
+ newValue -> config.general.itemProtection.slotLockStyle = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .build())
+
//Wiki Lookup
.group(OptionGroup.createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.option.general.wikiLookup"))
diff --git a/src/main/java/de/hysky/skyblocker/mixin/InGameHudMixin.java b/src/main/java/de/hysky/skyblocker/mixin/InGameHudMixin.java
index 25288ed2..c8f6f272 100644
--- a/src/main/java/de/hysky/skyblocker/mixin/InGameHudMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixin/InGameHudMixin.java
@@ -3,7 +3,6 @@ package de.hysky.skyblocker.mixin;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.sugar.Local;
import com.mojang.blaze3d.systems.RenderSystem;
-import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.FancyStatusBars;
import de.hysky.skyblocker.skyblock.dungeon.DungeonMap;
@@ -21,6 +20,9 @@ import net.minecraft.client.gui.hud.InGameHud;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
+
+import java.util.function.Supplier;
+
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
@@ -33,7 +35,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(InGameHud.class)
public abstract class InGameHudMixin {
@Unique
- private static final Identifier SLOT_LOCK = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/slot_lock.png");
+ private static final Supplier<Identifier> SLOT_LOCK_ICON = () -> SkyblockerConfigManager.get().general.itemProtection.slotLockStyle.tex;
@Unique
private final FancyStatusBars statusBars = new FancyStatusBars();
@@ -52,7 +54,7 @@ public abstract class InGameHudMixin {
if (SkyblockerConfigManager.get().general.itemInfoDisplay.itemRarityBackgrounds) ItemRarityBackgrounds.tryDraw(player.getInventory().main.get(index), context, x, y);
if (HotbarSlotLock.isLocked(index)) {
RenderSystem.enableBlend();
- context.drawTexture(SLOT_LOCK, x, y, 0, 0, 16, 16, 16, 16);
+ context.drawTexture(SLOT_LOCK_ICON.get(), x, y, 0, 0, 16, 16, 16, 16);
RenderSystem.disableBlend();
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java
index 27ee1605..640f71bd 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java
@@ -53,7 +53,7 @@ public class PartyEntryListWidget extends ElementListWidget<PartyEntry> {
public void updateDisplay() {
List<PartyEntry> entries = new ArrayList<>(partyEntries);
- entries.removeIf(partyEntry -> !partyEntry.note.contains(search) && !(partyEntry instanceof PartyEntry.YourParty));
+ entries.removeIf(partyEntry -> !partyEntry.note.toLowerCase().contains(search) && !(partyEntry instanceof PartyEntry.YourParty));
entries.sort(Comparator.comparing(PartyEntry::isLocked));
entries.sort(Comparator.comparing(partyEntry -> !(partyEntry instanceof PartyEntry.YourParty)));
if (entries.isEmpty() && !partyEntries.isEmpty()) {
@@ -63,7 +63,7 @@ public class PartyEntryListWidget extends ElementListWidget<PartyEntry> {
}
public void setSearch(String s) {
- search = s;
+ search = s.toLowerCase();
updateDisplay();
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java
index 472e6d61..24dcc229 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/JacobsContestWidget.java
@@ -1,9 +1,5 @@
package de.hysky.skyblocker.skyblock.tabhud.widget;
-import java.util.HashMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
import de.hysky.skyblocker.skyblock.tabhud.util.Ico;
import de.hysky.skyblocker.skyblock.tabhud.util.PlayerListMgr;
import de.hysky.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent;
@@ -14,6 +10,12 @@ import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static java.util.Map.entry;
+
// this widget shows info about the current jacob's contest (garden only)
public class JacobsContestWidget extends Widget {
@@ -22,23 +24,20 @@ public class JacobsContestWidget extends Widget {
Formatting.BOLD);
//TODO Properly match the contest placement and display it
- private static final Pattern CROP_PATTERN = Pattern.compile("(?:☘|○) (?<crop>[A-Za-z ]+)(?:.+)?");
+ private static final Pattern CROP_PATTERN = Pattern.compile("(?<fortune>[☘○]) (?<crop>[A-Za-z ]+).*");
- private static final HashMap<String, ItemStack> FARM_DATA = new HashMap<>();
-
- // again, there HAS to be a better way to do this
- static {
- FARM_DATA.put("Wheat", new ItemStack(Items.WHEAT));
- FARM_DATA.put("Sugar Cane", new ItemStack(Items.SUGAR_CANE));
- FARM_DATA.put("Carrot", new ItemStack(Items.CARROT));
- FARM_DATA.put("Potato", new ItemStack(Items.POTATO));
- FARM_DATA.put("Melon", new ItemStack(Items.MELON_SLICE));
- FARM_DATA.put("Pumpkin", new ItemStack(Items.PUMPKIN));
- FARM_DATA.put("Cocoa Beans", new ItemStack(Items.COCOA_BEANS));
- FARM_DATA.put("Nether Wart", new ItemStack(Items.NETHER_WART));
- FARM_DATA.put("Cactus", new ItemStack(Items.CACTUS));
- FARM_DATA.put("Mushroom", new ItemStack(Items.RED_MUSHROOM));
- }
+ private static final Map<String, ItemStack> FARM_DATA = Map.ofEntries(
+ entry("Wheat", new ItemStack(Items.WHEAT)),
+ entry("Sugar Cane", new ItemStack(Items.SUGAR_CANE)),
+ entry("Carrot", new ItemStack(Items.CARROT)),
+ entry("Potato", new ItemStack(Items.POTATO)),
+ entry("Melon", new ItemStack(Items.MELON_SLICE)),
+ entry("Pumpkin", new ItemStack(Items.PUMPKIN)),
+ entry("Cocoa Beans", new ItemStack(Items.COCOA_BEANS)),
+ entry("Nether Wart", new ItemStack(Items.NETHER_WART)),
+ entry("Cactus", new ItemStack(Items.CACTUS)),
+ entry("Mushroom", new ItemStack(Items.RED_MUSHROOM))
+ );
public JacobsContestWidget() {
super(TITLE, Formatting.YELLOW.getColorValue());
@@ -54,7 +53,7 @@ public class JacobsContestWidget extends Widget {
this.addSimpleIcoText(Ico.CLOCK, "Starts in:", Formatting.GOLD, 76);
}
- TableComponent tc = new TableComponent(1, 3, Formatting.YELLOW .getColorValue());
+ TableComponent tc = new TableComponent(1, 3, Formatting.YELLOW.getColorValue());
for (int i = 77; i < 80; i++) {
Matcher item = PlayerListMgr.regexAt(i, CROP_PATTERN);
@@ -63,7 +62,11 @@ public class JacobsContestWidget extends Widget {
itc = new IcoTextComponent();
} else {
String cropName = item.group("crop").trim(); //Trimming is needed because during a contest the space separator will be caught
- itc = new IcoTextComponent(FARM_DATA.get(cropName), Text.of(cropName));
+ if (item.group("fortune").equals("☘")) {
+ itc = new IcoTextComponent(FARM_DATA.get(cropName), Text.literal(cropName).append(Text.literal(" ☘").formatted(Formatting.GOLD)));
+ } else {
+ itc = new IcoTextComponent(FARM_DATA.get(cropName), Text.of(cropName));
+ }
}
tc.addToCell(0, i - 77, itc);
}