aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNopoTheGamer <40329022+NopoTheGamer@users.noreply.github.com>2023-03-12 09:01:28 +1100
committerGitHub <noreply@github.com>2023-03-11 23:01:28 +0100
commiteddab2781ace248731273b9f249f12ff28734955 (patch)
tree78a039d957b4062887bf25539da34ed1e849b67d
parentfd063280c717e974bc9ac35f730e61b1be9de856 (diff)
downloadNotEnoughUpdates-eddab2781ace248731273b9f249f12ff28734955.tar.gz
NotEnoughUpdates-eddab2781ace248731273b9f249f12ff28734955.tar.bz2
NotEnoughUpdates-eddab2781ace248731273b9f249f12ff28734955.zip
Added prices in garden npcs (#623)
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/GardenNpcPrices.java87
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TooltipTweaks.java8
2 files changed, 95 insertions, 0 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/GardenNpcPrices.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/GardenNpcPrices.java
new file mode 100644
index 00000000..294194b9
--- /dev/null
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/GardenNpcPrices.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2023 NotEnoughUpdates contributors
+ *
+ * This file is part of NotEnoughUpdates.
+ *
+ * NotEnoughUpdates is free software: you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * NotEnoughUpdates is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package io.github.moulberry.notenoughupdates.miscfeatures;
+
+import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
+import io.github.moulberry.notenoughupdates.autosubscribe.NEUAutoSubscribe;
+import io.github.moulberry.notenoughupdates.util.ItemResolutionQuery;
+import io.github.moulberry.notenoughupdates.util.Utils;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraftforge.event.entity.player.ItemTooltipEvent;
+import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@NEUAutoSubscribe
+public class GardenNpcPrices {
+
+ private final Pattern itemRegex = Pattern.compile("§5§o §.([a-zA-Z \\-]+)(?:§8x(\\d+))?");
+ //§5§o §aEnchanted Cactus Green §8x421
+ //§5§o §aEnchanted Hay Bale §8x62
+ //§5§o §9Enchanted Cookie §8x4
+ //§5§o §9Tightly-Tied Hay Bale
+
+ private Map<List<String>, List<String>> prices = new HashMap<>();
+
+ @SubscribeEvent
+ public void onGardenNpcPrices(ItemTooltipEvent event) {
+ if (!NotEnoughUpdates.INSTANCE.config.tooltipTweaks.gardenNpcPrice) return;
+ if (event.toolTip.size() <= 2 || event.itemStack.getItem() != Item.getItemFromBlock(Blocks.stained_hardened_clay)) return;
+
+ List<String> tooltipCopy = new ArrayList<>(event.toolTip);
+ if (prices.get(tooltipCopy) == null) {
+ for (int i = 2; i < event.toolTip.size(); i++) {
+ Matcher matcher = itemRegex.matcher(event.toolTip.get(i));
+
+ if (matcher.matches()) {
+ int amount = 1;
+ if (matcher.group(2) != null) amount = Integer.parseInt(matcher.group(2));
+
+ double cost = calculateCost(ItemResolutionQuery.findInternalNameByDisplayName(matcher.group(1).trim(), false), amount);
+ event.toolTip.set(i, event.toolTip.get(i) + " §7(§6" + (cost == 0 ? "?" : Utils.shortNumberFormat(cost, 0)) + "§7 coins)");
+ } else {
+ prices.put(tooltipCopy, event.toolTip);
+ }
+ }
+ } else {
+ event.toolTip.clear();
+ event.toolTip.addAll(prices.get(tooltipCopy));
+ }
+ }
+ public double calculateCost(String internalName, int amount) {
+ double price = NotEnoughUpdates.INSTANCE.manager.auctionManager.getBazaarOrBin(internalName, false);
+ if (price != -1) {
+ return price * amount;
+ }
+ return 0d;
+ }
+
+ @SubscribeEvent
+ public void onWorldLoad(WorldEvent.Load event) {
+ prices.clear();
+ }
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TooltipTweaks.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TooltipTweaks.java
index 45a96577..a9dae604 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TooltipTweaks.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TooltipTweaks.java
@@ -250,4 +250,12 @@ public class TooltipTweaks {
)
@ConfigEditorBoolean
public boolean essencePriceInEssenceShop = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Item Cost in Garden NPC",
+ desc = "Show the item cost in garden NPC shop"
+ )
+ @ConfigEditorBoolean
+ public boolean gardenNpcPrice = true;
}