aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/chrisoft/trashyaddon/modules/AcceptablePrices.java
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2024-05-11 00:35:40 -0400
committerGravatar Chris Xiong <chirs241097@gmail.com> 2024-05-11 00:35:40 -0400
commit1254320033d9345c8cf27e2dbeeb0b098735d029 (patch)
tree0b4a0174d860f9595e0fc5e50f55e2008050a1ed /src/main/java/org/chrisoft/trashyaddon/modules/AcceptablePrices.java
parent58a7d8c9cf50d4b2a9ae321684ca9d4ce4504260 (diff)
downloadmeteor-trashy-addon-1254320033d9345c8cf27e2dbeeb0b098735d029.tar.xz
(AutoTrade) Allow setting a maximum acceptable price.
Diffstat (limited to 'src/main/java/org/chrisoft/trashyaddon/modules/AcceptablePrices.java')
-rw-r--r--src/main/java/org/chrisoft/trashyaddon/modules/AcceptablePrices.java93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/main/java/org/chrisoft/trashyaddon/modules/AcceptablePrices.java b/src/main/java/org/chrisoft/trashyaddon/modules/AcceptablePrices.java
new file mode 100644
index 0000000..9e96dfe
--- /dev/null
+++ b/src/main/java/org/chrisoft/trashyaddon/modules/AcceptablePrices.java
@@ -0,0 +1,93 @@
+package org.chrisoft.trashyaddon.modules;
+
+import meteordevelopment.meteorclient.MeteorClient;
+import meteordevelopment.meteorclient.gui.GuiTheme;
+import meteordevelopment.meteorclient.gui.WidgetScreen;
+import meteordevelopment.meteorclient.utils.misc.ICopyable;
+import meteordevelopment.meteorclient.utils.misc.ISerializable;
+import meteordevelopment.meteorclient.gui.utils.IScreenFactory;
+import net.minecraft.item.Item;
+import net.minecraft.nbt.NbtCompound;
+import net.minecraft.nbt.NbtElement;
+import net.minecraft.nbt.NbtList;
+import net.minecraft.registry.Registries;
+import net.minecraft.util.Identifier;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Stream;
+
+public class AcceptablePrices implements ICopyable<AcceptablePrices>, ISerializable<AcceptablePrices>, IScreenFactory {
+ public static final List<Item> allItems = Stream.concat(AutoTrade.allSellItems.stream(), AutoTrade.allBuyItems.stream()).toList();
+ private HashMap<Item, Integer> prices;
+ AcceptablePrices(HashMap<Item, Integer> prices) {
+ this.prices = prices;
+ }
+ Integer getMaxPriceForItem(Item i) {
+ return prices.get(i);
+ }
+ void setMaxPriceForItem(Item i, int p) {
+ prices.put(i, p);
+ }
+ void unsetMaxPriceForItem(Item i) {
+ prices.remove(i);
+ }
+ List<Item> allConfiguredItems() {
+ return prices.keySet().stream().toList();
+ }
+
+ @Override
+ public WidgetScreen createScreen(GuiTheme theme) {
+ return new AcceptablePricesScreen(theme, this);
+ }
+
+ @Override
+ public AcceptablePrices set(AcceptablePrices value) {
+ this.prices = value.prices;
+ return this;
+ }
+
+ @Override
+ public AcceptablePrices copy() {
+ return new AcceptablePrices(new HashMap<>(this.prices));
+ }
+
+ @Override
+ public NbtCompound toTag() {
+ NbtCompound ret = new NbtCompound();
+ NbtList l = new NbtList();
+ for (Item i : this.prices.keySet()) {
+ NbtCompound a = new NbtCompound();
+ a.putString("Item", Registries.ITEM.getId(i).toString());
+ a.putInt("Price", prices.get(i));
+ l.add(a);
+ }
+ ret.put("Prices", l);
+ MeteorClient.LOG.warn("AcceptablePrices NBT result: " + ret.asString());
+ return ret;
+ }
+
+ @Override
+ public AcceptablePrices fromTag(NbtCompound tag) {
+ MeteorClient.LOG.warn("AcceptablePrices NBT from: " + tag.asString());
+ HashMap<Item, Integer> ret = new HashMap<>();
+ try {
+ NbtList l = tag.getList("Prices", NbtElement.COMPOUND_TYPE);
+ for (int i = 0; i < l.size(); ++i) {
+ NbtCompound a = l.getCompound(i);
+ String item_id = a.getString("Item");
+ Item item = Registries.ITEM.get(new Identifier(item_id));
+ int price = a.getInt("Price");
+ ret.put(item, price);
+ }
+ } catch (NullPointerException e) {
+ this.prices = new HashMap<>();
+ return this;
+ }
+ MeteorClient.LOG.warn(ret.toString());
+ this.prices = ret;
+ return this;
+ }
+}