diff options
Diffstat (limited to 'src/main/java/de/hysky/skyblocker')
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); } |