aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kr/syeyoung/dungeonsguide/features
diff options
context:
space:
mode:
authorsyeyoung <cyong06@naver.com>2021-01-02 00:55:28 +0900
committersyeyoung <cyong06@naver.com>2021-01-02 00:55:28 +0900
commitb5418383f1fa304b05bfee61c2d773ab26204152 (patch)
tree9f394eeb24eecaf9986da698d1b998395c7940b2 /src/main/java/kr/syeyoung/dungeonsguide/features
parente4253bd270f97a5c569996e612c593c28016f5a8 (diff)
downloadSkyblock-Dungeons-Guide-b5418383f1fa304b05bfee61c2d773ab26204152.tar.gz
Skyblock-Dungeons-Guide-b5418383f1fa304b05bfee61c2d773ab26204152.tar.bz2
Skyblock-Dungeons-Guide-b5418383f1fa304b05bfee61c2d773ab26204152.zip
insta close
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/features')
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java4
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureInstaCloseChest.java96
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureTooltipPrice.java2
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiOpenListener.java7
4 files changed, 107 insertions, 2 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
index d04ed884..09bb1511 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/FeatureRegistry.java
@@ -1,6 +1,7 @@
package kr.syeyoung.dungeonsguide.features;
import kr.syeyoung.dungeonsguide.features.impl.FeatureCooldownCounter;
+import kr.syeyoung.dungeonsguide.features.impl.FeatureInstaCloseChest;
import kr.syeyoung.dungeonsguide.features.impl.FeatureTooltipDungeonStat;
import kr.syeyoung.dungeonsguide.features.impl.FeatureTooltipPrice;
import lombok.Getter;
@@ -52,5 +53,6 @@ public class FeatureRegistry {
public static final SimpleFeature DEBUG = register(new SimpleFeature("hidden", "Debug", "Toggles debug mode", "debug", false));
- public static final FeatureCooldownCounter QOL_COOLDOWN = (FeatureCooldownCounter) register(new FeatureCooldownCounter());
+ public static final FeatureCooldownCounter QOL_COOLDOWN = register(new FeatureCooldownCounter());
+ public static final FeatureInstaCloseChest QOL_INSTACLOSE = register(new FeatureInstaCloseChest());
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureInstaCloseChest.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureInstaCloseChest.java
new file mode 100644
index 00000000..79fbfce6
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureInstaCloseChest.java
@@ -0,0 +1,96 @@
+package kr.syeyoung.dungeonsguide.features.impl;
+
+import kr.syeyoung.dungeonsguide.SkyblockStatus;
+import kr.syeyoung.dungeonsguide.e;
+import kr.syeyoung.dungeonsguide.features.FeatureParameter;
+import kr.syeyoung.dungeonsguide.features.GuiFeature;
+import kr.syeyoung.dungeonsguide.features.SimpleFeature;
+import kr.syeyoung.dungeonsguide.features.listener.GuiOpenListener;
+import kr.syeyoung.dungeonsguide.features.listener.TickListener;
+import kr.syeyoung.dungeonsguide.utils.AhUtils;
+import kr.syeyoung.dungeonsguide.utils.TextUtils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.FontRenderer;
+import net.minecraft.client.gui.inventory.GuiChest;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.client.event.GuiOpenEvent;
+import org.lwjgl.opengl.GL11;
+
+import java.awt.*;
+import java.util.Comparator;
+import java.util.Set;
+import java.util.TreeSet;
+
+public class FeatureInstaCloseChest extends SimpleFeature implements GuiOpenListener {
+ public FeatureInstaCloseChest() {
+ super("QoL", "Auto-Close Secret Chest", "Automatically closes Secret Chest as soon as you open it\nCan put item price threshold by clicking edit", "qol.autoclose", false);
+ parameters.put("threshold", new FeatureParameter<Integer>("threshold", "Price Threshold", "The maximum price of item for chest to be closed. Default 1m", 1000000, "integer"));
+ }
+
+ SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus();
+ @Override
+ public void onGuiOpen(GuiOpenEvent event) {
+ if (!skyblockStatus.isOnDungeon()) return;
+ if (!(event.gui instanceof GuiChest)) return;
+
+ int threshold = this.<Integer>getParameter("threshold").getValue();
+
+ int priceSum = 0;
+ for (ItemStack inventoryItemStack : ((GuiChest) event.gui).inventorySlots.inventoryItemStacks) {
+ priceSum += getPrice(inventoryItemStack);
+ }
+
+ if (priceSum < threshold) Minecraft.getMinecraft().thePlayer.closeScreen();
+ }
+
+ public int getPrice(ItemStack itemStack) {
+ if (itemStack == null) return 0;
+ NBTTagCompound compound = itemStack.getTagCompound();
+ if (compound == null)
+ return 0;
+ if (!compound.hasKey("ExtraAttributes"))
+ return 0;
+ final String id = compound.getCompoundTag("ExtraAttributes").getString("id");
+ if (id.equals("ENCHANTED_BOOK")) {
+ final NBTTagCompound enchants = compound.getCompoundTag("ExtraAttributes").getCompoundTag("enchantments");
+ Set<String> keys = enchants.getKeySet();
+ Set<String> actualKeys = new TreeSet<String>(new Comparator<String>() {
+ public int compare(String o1, String o2) {
+ String id2 = id + "::" + o1 + "-" + enchants.getInteger(o1);
+ AhUtils.AuctionData auctionData = AhUtils.auctions.get(id2);
+ int price1 = (auctionData == null) ? 0 : ((Integer)auctionData.prices.first()).intValue();
+ String id3 = id + "::" + o2 + "-" + enchants.getInteger(o2);
+ AhUtils.AuctionData auctionData2 = AhUtils.auctions.get(id3);
+ int price2 = (auctionData2 == null) ? 0 : ((Integer)auctionData2.prices.first()).intValue();
+ return (compare2(price1, price2) == 0) ? o1.compareTo(o2) : compare2(price1, price2);
+ }
+
+ public int compare2(int y, int x) {
+ return (x < y) ? -1 : ((x == y) ? 0 : 1);
+ }
+ });
+ actualKeys.addAll(keys);
+ int totalLowestPrice = 0;
+ for (String key : actualKeys) {
+ String id2 = id + "::" + key + "-" + enchants.getInteger(key);
+ AhUtils.AuctionData auctionData = AhUtils.auctions.get(id2);
+ totalLowestPrice += auctionData.prices.first();
+ }
+ return totalLowestPrice;
+ } else {
+ AhUtils.AuctionData auctionData = AhUtils.auctions.get(id);
+ if (auctionData == null) {
+ return 0;
+ } else {
+ if (auctionData.sellPrice == -1 && auctionData.prices.size() > 0) return auctionData.prices.first();
+ else if (auctionData.sellPrice != -1 && auctionData.prices.size() == 0) return auctionData.sellPrice;
+ else {
+ int ahPrice = auctionData.prices.first();
+ if (ahPrice > auctionData.sellPrice) return ahPrice;
+ else return auctionData.sellPrice;
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureTooltipPrice.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureTooltipPrice.java
index b54fa682..b9059427 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureTooltipPrice.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/FeatureTooltipPrice.java
@@ -67,7 +67,7 @@ public class FeatureTooltipPrice extends SimpleFeature implements TooltipListene
}
if (iterations >= 10)
event.toolTip.add("§7"+ (iterations - 10) + " more enchants... ");
- event.toolTip.add("§fTotal§7 §e:"+ TextUtils.format(totalLowestPrice) + " §7to§e "+ TextUtils.format(totalHighestPrice));
+ event.toolTip.add("§fTotal§7: §e"+ TextUtils.format(totalLowestPrice) + " §7to§e "+ TextUtils.format(totalHighestPrice));
} else {
AhUtils.AuctionData auctionData = AhUtils.auctions.get(id);
event.toolTip.add("");
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiOpenListener.java b/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiOpenListener.java
new file mode 100644
index 00000000..07029b74
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/features/listener/GuiOpenListener.java
@@ -0,0 +1,7 @@
+package kr.syeyoung.dungeonsguide.features.listener;
+
+import net.minecraftforge.client.event.GuiOpenEvent;
+
+public interface GuiOpenListener {
+ void onGuiOpen(GuiOpenEvent event);
+}