aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorVeritasDL <121319869+VeritasDL@users.noreply.github.com>2024-07-29 14:32:20 -0400
committerGitHub <noreply@github.com>2024-07-30 02:32:20 +0800
commit9625ea40cfa3728c5ea2ceb92ba88f4004b77eab (patch)
treeba333a58e5743d824a98355963b9c3c1f3a568ba /src/main/java
parente742325b254dbaee90032737334494bece43fe02 (diff)
downloadSkyblocker-9625ea40cfa3728c5ea2ceb92ba88f4004b77eab.tar.gz
Skyblocker-9625ea40cfa3728c5ea2ceb92ba88f4004b77eab.tar.bz2
Skyblocker-9625ea40cfa3728c5ea2ceb92ba88f4004b77eab.zip
Bazaar Lookup/Misc Options (#792)
Co-authored-by: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/SkyblockerMod.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/config/ConfigUtils.java12
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java18
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java17
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java54
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemRepository.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/Utils.java3
12 files changed, 116 insertions, 30 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
index ad7d4350..b1d25a01 100644
--- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
+++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
@@ -6,6 +6,7 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.config.datafixer.ConfigDataFixer;
import de.hysky.skyblocker.debug.Debug;
import de.hysky.skyblocker.skyblock.*;
+import de.hysky.skyblocker.skyblock.bazaar.BazaarHelper;
import de.hysky.skyblocker.skyblock.calculators.CalculatorCommand;
import de.hysky.skyblocker.skyblock.chat.ChatRuleAnnouncementScreen;
import de.hysky.skyblocker.skyblock.chat.ChatRulesHandler;
@@ -200,6 +201,7 @@ public class SkyblockerMod implements ClientModInitializer {
JerryTimer.init();
TooltipManager.init();
SlotTextManager.init();
+ BazaarHelper.init();
Scheduler.INSTANCE.scheduleCyclic(Utils::update, 20);
Scheduler.INSTANCE.scheduleCyclic(DiscordRPCManager::updateDataAndPresence, 200);
diff --git a/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java b/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java
index ee8dfb19..00c09e6f 100644
--- a/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java
+++ b/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java
@@ -1,8 +1,11 @@
package de.hysky.skyblocker.config;
+import dev.isxander.yacl3.api.ButtonOption;
import dev.isxander.yacl3.api.Option;
import dev.isxander.yacl3.api.OptionDescription;
import dev.isxander.yacl3.api.controller.*;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.screen.option.KeybindsScreen;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
@@ -45,6 +48,15 @@ public class ConfigUtils {
return opt -> EnumDropdownControllerBuilder.create(opt).formatValue(formatter);
}
+ public static ButtonOption createShortcutToKeybindsScreen() {
+ MinecraftClient client = MinecraftClient.getInstance();
+ return ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.shortcutToKeybindsSettings"))
+ .action((screen, opt) -> client.setScreen(new KeybindsScreen(screen, client.options)))
+ .text(Text.translatable("skyblocker.config.shortcutToKeybindsSettings.@Text"))
+ .build();
+ }
+
/**
* Creates an {@link OptionDescription} with an image and text.
*/
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 7669359e..bea570e5 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
@@ -4,13 +4,12 @@ import de.hysky.skyblocker.SkyblockerScreen;
import de.hysky.skyblocker.config.ConfigUtils;
import de.hysky.skyblocker.config.SkyblockerConfig;
import de.hysky.skyblocker.config.configs.GeneralConfig;
-import de.hysky.skyblocker.skyblock.item.tooltip.adders.CraftPriceTooltip;
import de.hysky.skyblocker.skyblock.item.slottext.SlotTextMode;
+import de.hysky.skyblocker.skyblock.item.tooltip.adders.CraftPriceTooltip;
import de.hysky.skyblocker.skyblock.shortcut.ShortcutsConfigScreen;
import dev.isxander.yacl3.api.*;
import dev.isxander.yacl3.api.controller.FloatSliderControllerBuilder;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.gui.screen.option.KeybindsScreen;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
@@ -244,11 +243,7 @@ public class GeneralCategory {
newValue -> config.general.itemInfoDisplay.slotTextMode = newValue)
.controller(ConfigUtils::createEnumCyclingListController)
.build())
- .option(ButtonOption.createBuilder()
- .name(Text.translatable("skyblocker.config.shortcutToKeybindsSettings"))
- .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new KeybindsScreen(screen, MinecraftClient.getInstance().options)))
- .text(Text.translatable("skyblocker.config.shortcutToKeybindsSettings.@Text"))
- .build())
+ .option(ConfigUtils.createShortcutToKeybindsScreen())
.option(Option.<Boolean>createBuilder()
.name(Text.translatable("skyblocker.config.general.itemInfoDisplay.attributeShardInfo"))
.description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemInfoDisplay.attributeShardInfo.@Tooltip")))
@@ -308,11 +303,7 @@ public class GeneralCategory {
newValue -> config.general.wikiLookup.enableWikiLookup = newValue)
.controller(ConfigUtils::createBooleanController)
.build())
- .option(ButtonOption.createBuilder()
- .name(Text.translatable("skyblocker.config.shortcutToKeybindsSettings"))
- .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new KeybindsScreen(screen, MinecraftClient.getInstance().options)))
- .text(Text.translatable("skyblocker.config.shortcutToKeybindsSettings.@Text"))
- .build())
+ .option(ConfigUtils.createShortcutToKeybindsScreen())
.option(Option.<Boolean>createBuilder()
.name(Text.translatable("skyblocker.config.general.wikiLookup.officialWiki"))
.description(OptionDescription.of(Text.translatable("skyblocker.config.general.wikiLookup.officialWiki.@Tooltip")))
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
index ec2c561c..e6d9fffb 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
@@ -219,8 +219,24 @@ public class HelperCategory {
newValue -> config.helpers.bazaar.enableBazaarHelper = newValue)
.controller(ConfigUtils::createBooleanController)
.build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.bazaar.enableBazaarLookup"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.bazaar.enableBazaarLookup.@Tooltip")))
+ .binding(defaults.helpers.bazaar.enableBazaarLookup,
+ () -> config.helpers.bazaar.enableBazaarLookup,
+ newValue -> config.helpers.bazaar.enableBazaarLookup = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.bazaar.enableRefreshItemPrices"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.bazaar.enableRefreshItemPrices.@Tooltip")))
+ .binding(defaults.helpers.bazaar.enableBazaarRefresh,
+ () -> config.helpers.bazaar.enableBazaarRefresh,
+ newValue -> config.helpers.bazaar.enableBazaarRefresh = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(ConfigUtils.createShortcutToKeybindsScreen())
.build())
-
.build();
}
}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java
index b2127e6b..c9820cdc 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java
@@ -21,6 +21,7 @@ public class MiscCategory {
//Discord RPC
.group(OptionGroup.createBuilder()
.name(Text.translatable("skyblocker.config.misc.richPresence"))
+ .collapsed(true)
.option(Option.<Boolean>createBuilder()
.name(Text.translatable("skyblocker.config.misc.richPresence.enableRichPresence"))
.binding(defaults.misc.richPresence.enableRichPresence,
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
index e009f680..74ba8228 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
@@ -101,5 +101,11 @@ public class HelperConfig {
public static class Bazaar {
@SerialEntry
public boolean enableBazaarHelper = true;
+
+ @SerialEntry
+ public boolean enableBazaarLookup = true;
+
+ @SerialEntry
+ public boolean enableBazaarRefresh = true;
}
}
diff --git a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java
index 2f22a870..2ef599dd 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java
@@ -3,8 +3,10 @@ package de.hysky.skyblocker.mixins;
import com.llamalad7.mixinextras.sugar.Local;
import com.mojang.blaze3d.systems.RenderSystem;
import de.hysky.skyblocker.SkyblockerMod;
+import de.hysky.skyblocker.config.SkyblockerConfig;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.PetCache;
+import de.hysky.skyblocker.skyblock.bazaar.BazaarHelper;
import de.hysky.skyblocker.skyblock.experiment.ChronomatronSolver;
import de.hysky.skyblocker.skyblock.experiment.ExperimentSolver;
import de.hysky.skyblocker.skyblock.experiment.SuperpairsSolver;
@@ -117,15 +119,24 @@ public abstract class HandledScreenMixin<T extends ScreenHandler> extends Screen
@Inject(at = @At("HEAD"), method = "keyPressed")
public void skyblocker$keyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) {
- if (this.client != null && this.focusedSlot != null && keyCode != 256) {
+ if (this.client != null && this.client.player != null && this.focusedSlot != null && keyCode != 256 && !this.client.options.inventoryKey.matchesKey(keyCode, scanCode) && Utils.isOnSkyblock()) {
+ SkyblockerConfig config = SkyblockerConfigManager.get();
//wiki lookup
- if (!this.client.options.inventoryKey.matchesKey(keyCode, scanCode) && WikiLookup.wikiLookup.matchesKey(keyCode, scanCode) && client.player != null) {
+ if (config.general.wikiLookup.enableWikiLookup && WikiLookup.wikiLookup.matchesKey(keyCode, scanCode)) {
WikiLookup.openWiki(this.focusedSlot, client.player);
}
//item protection
- if (!this.client.options.inventoryKey.matchesKey(keyCode, scanCode) && ItemProtection.itemProtection.matchesKey(keyCode, scanCode)) {
+ if (ItemProtection.itemProtection.matchesKey(keyCode, scanCode)) {
ItemProtection.handleKeyPressed(this.focusedSlot.getStack());
}
+ //Bazaar Lookup
+ if (config.helpers.bazaar.enableBazaarLookup && BazaarHelper.BAZAAR_LOOKUP.matchesKey(keyCode, scanCode)) {
+ BazaarHelper.bazaarLookup(client.player, this.focusedSlot);
+ }
+ //Refresh Item Prices
+ if (config.helpers.bazaar.enableBazaarRefresh && BazaarHelper.BAZAAR_REFRESH.matchesKey(keyCode, scanCode)) {
+ BazaarHelper.refreshItemPrices(this.client.player);
+ }
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java
index 8fbeb6e0..842bbff9 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java
@@ -3,7 +3,15 @@ package de.hysky.skyblocker.skyblock.bazaar;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.item.slottext.SimpleSlotTextAdder;
import de.hysky.skyblocker.skyblock.item.slottext.SlotText;
+import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
+import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType;
+import de.hysky.skyblocker.skyblock.itemlist.ItemRepository;
+import de.hysky.skyblocker.utils.Constants;
import de.hysky.skyblocker.utils.ItemUtils;
+import de.hysky.skyblocker.utils.scheduler.MessageScheduler;
+import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
+import net.minecraft.client.network.ClientPlayerEntity;
+import net.minecraft.client.option.KeyBinding;
import net.minecraft.item.ItemStack;
import net.minecraft.screen.slot.Slot;
import net.minecraft.text.MutableText;
@@ -12,8 +20,11 @@ import net.minecraft.util.Formatting;
import org.apache.commons.lang3.math.NumberUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.lwjgl.glfw.GLFW;
+import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.CompletableFuture;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -23,10 +34,23 @@ public class BazaarHelper extends SimpleSlotTextAdder {
private static final int YELLOW = 0xe6ba0b;
private static final int GREEN = 0x1ee60b;
- public BazaarHelper() {
+ public static final KeyBinding BAZAAR_LOOKUP = KeyBindingHelper.registerKeyBinding(new KeyBinding(
+ "key.bazaarLookup",
+ GLFW.GLFW_KEY_F6,
+ "key.categories.skyblocker"
+ ));
+ public static final KeyBinding BAZAAR_REFRESH = KeyBindingHelper.registerKeyBinding(new KeyBinding(
+ "key.bazaarRefresh",
+ GLFW.GLFW_KEY_Z,
+ "key.categories.skyblocker"
+ ));
+
+ public BazaarHelper() {
super("(?:Co-op|Your) Bazaar Orders");
}
+ public static void init() {}
+
@Override
public boolean isEnabled() {
return SkyblockerConfigManager.get().helpers.bazaar.enableBazaarHelper;
@@ -76,4 +100,32 @@ public class BazaarHelper extends SimpleSlotTextAdder {
if (filled < 100) return Text.literal("%").withColor(YELLOW).formatted(Formatting.BOLD);
return Text.literal("✅").withColor(GREEN).formatted(Formatting.BOLD);
}
+
+ // ======== Other Bazaar Features ========
+
+ public static void bazaarLookup(ClientPlayerEntity player, @NotNull Slot slot) {
+ ItemStack stack = ItemRepository.getItemStack(slot.getStack().getNeuName());
+ if (stack != null && !stack.isEmpty()) {
+ MessageScheduler.INSTANCE.sendMessageAfterCooldown("/bz " + Formatting.strip(stack.getName().getString()));
+ } else {
+ player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.helpers.bazaar.bazaarLookupFailed")));
+ }
+ }
+
+ public static void refreshItemPrices(ClientPlayerEntity player) {
+ player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.helpers.bazaar.refreshingItemPrices")));
+ List<CompletableFuture<Void>> futureList = new ArrayList<>();
+ TooltipInfoType.NPC.downloadIfEnabled(futureList);
+ TooltipInfoType.BAZAAR.downloadIfEnabled(futureList);
+ TooltipInfoType.LOWEST_BINS.downloadIfEnabled(futureList);
+ TooltipInfoType.ONE_DAY_AVERAGE.downloadIfEnabled(futureList);
+ TooltipInfoType.THREE_DAY_AVERAGE.downloadIfEnabled(futureList);
+ CompletableFuture.allOf(futureList.toArray(CompletableFuture[]::new))
+ .thenAccept(_void -> player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.helpers.bazaar.refreshedItemPrices"))))
+ .exceptionally(e -> {
+ ItemTooltip.LOGGER.error("[Skyblocker] Failed to refresh item prices", e);
+ player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.helpers.bazaar.refreshItemPricesFailed")));
+ return null;
+ });
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java b/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java
index 109e5503..4b71b9ab 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/WikiLookup.java
@@ -1,10 +1,8 @@
package de.hysky.skyblocker.skyblock.item;
-import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.itemlist.ItemRepository;
import de.hysky.skyblocker.utils.Constants;
import de.hysky.skyblocker.utils.ItemUtils;
-import de.hysky.skyblocker.utils.Utils;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.InputUtil;
@@ -33,8 +31,6 @@ public class WikiLookup {
}
public static void openWiki(@NotNull Slot slot, @NotNull PlayerEntity player) {
- if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().general.wikiLookup.enableWikiLookup) return;
-
ItemUtils.getItemIdOptional(slot.getStack())
.map(ItemRepository::getWikiLink)
.ifPresentOrElse(wikiLink -> CompletableFuture.runAsync(() -> Util.getOperatingSystem().open(wikiLink)).exceptionally(e -> {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
index 955ebc87..32626b17 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
@@ -19,7 +19,7 @@ import java.util.Locale;
import java.util.concurrent.CompletableFuture;
public class ItemTooltip {
- protected static final Logger LOGGER = LoggerFactory.getLogger(ItemTooltip.class.getName());
+ public static final Logger LOGGER = LoggerFactory.getLogger(ItemTooltip.class.getName());
private static final MinecraftClient client = MinecraftClient.getInstance();
public static final GeneralConfig.ItemTooltip config = SkyblockerConfigManager.get().general.itemTooltip;
private static volatile boolean sentNullWarning = false;
@@ -127,7 +127,7 @@ public class ItemTooltip {
TooltipInfoType.ACCESSORIES.downloadIfEnabled(futureList);
CompletableFuture.allOf(futureList.toArray(CompletableFuture[]::new)).exceptionally(e -> {
- LOGGER.error("Encountered unknown error while downloading tooltip data", e);
+ LOGGER.error("[Skyblocker] Encountered unknown error while downloading tooltip data", e);
return null;
});
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemRepository.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemRepository.java
index 4dca91d6..10030b43 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemRepository.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemRepository.java
@@ -68,8 +68,8 @@ public class ItemRepository {
}
}
- public static String getWikiLink(String internalName) {
- NEUItem item = NEURepoManager.NEU_REPO.getItems().getItemBySkyblockId(internalName);
+ public static String getWikiLink(String neuId) {
+ NEUItem item = NEURepoManager.NEU_REPO.getItems().getItemBySkyblockId(neuId);
if (item == null || item.getInfo() == null || item.getInfo().isEmpty()) {
return null;
}
@@ -86,14 +86,14 @@ public class ItemRepository {
return null;
}
- public static List<SkyblockCraftingRecipe> getRecipes(String internalName) {
+ public static List<SkyblockCraftingRecipe> getRecipes(String neuId) {
List<SkyblockCraftingRecipe> result = new ArrayList<>();
for (SkyblockCraftingRecipe recipe : recipes) {
- if (ItemUtils.getItemId(recipe.getResult()).equals(internalName)) result.add(recipe);
+ if (ItemUtils.getItemId(recipe.getResult()).equals(neuId)) result.add(recipe);
}
for (SkyblockCraftingRecipe recipe : recipes) {
for (ItemStack ingredient : recipe.getGrid()) {
- if (!ingredient.getItem().equals(Items.AIR) && ItemUtils.getItemId(ingredient).equals(internalName)) {
+ if (!ingredient.getItem().equals(Items.AIR) && ItemUtils.getItemId(ingredient).equals(neuId)) {
result.add(recipe);
break;
}
diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java
index 1b01a48a..d6c0fc5e 100644
--- a/src/main/java/de/hysky/skyblocker/utils/Utils.java
+++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java
@@ -27,7 +27,6 @@ import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Util;
-
import org.apache.http.client.HttpResponseException;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
@@ -518,7 +517,7 @@ public class Utils {
}).exceptionally(throwable -> {
LOGGER.error("[Skyblocker] Failed to get mayor status!", throwable.getCause());
if (mayorTickRetryAttempts < 5) {
- int minutes = 5 * 1 << mayorTickRetryAttempts; //5, 10, 20, 40, 80 minutes
+ int minutes = 5 << mayorTickRetryAttempts; //5, 10, 20, 40, 80 minutes
mayorTickRetryAttempts++;
LOGGER.warn("[Skyblocker] Retrying in {} minutes.", minutes);
Scheduler.INSTANCE.schedule(Utils::tickMayorCache, minutes * 60 * 20);