aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorJulian Braun <julianbraun6@gmail.com>2021-03-30 00:03:06 +0200
committerJulian Braun <julianbraun6@gmail.com>2021-03-30 00:03:06 +0200
commit3a2a7744feca2576f09a70cde68ebcc5e9c2c5e1 (patch)
treee52621fb3685b2b343308a34f4a3ff20dafd5ef6 /src/main/java
parentac59ecef954ff438c8fa3f0bf51c46b20af3138c (diff)
downloadSkyblocker-3a2a7744feca2576f09a70cde68ebcc5e9c2c5e1.tar.gz
Skyblocker-3a2a7744feca2576f09a70cde68ebcc5e9c2c5e1.tar.bz2
Skyblocker-3a2a7744feca2576f09a70cde68ebcc5e9c2c5e1.zip
added pricetooltip for AH
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java10
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java5
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java138
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java7
4 files changed, 156 insertions, 4 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index efd746e7..8be9fb3d 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -1,21 +1,27 @@
package me.xmrvizzy.skyblocker;
+import java.util.Map;
+
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.fabricmc.api.ClientModInitializer;
+import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
import net.minecraft.client.MinecraftClient;
-
+import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip;
public class SkyblockerMod implements ClientModInitializer {
public static final String NAMESPACE = "skyblocker";
private static int TICKS = 0;
-
+ public static Map prices = PriceInfoTooltip.downloadPrices();
@Override
public void onInitializeClient() {
HotbarSlotLock.init();
SkyblockerConfig.init();
+
+
}
+
public static void onTick() {
MinecraftClient client = MinecraftClient.getInstance();
if (client == null) return;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java
index 1992db89..eaac1c9c 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemRendererMixin.java
@@ -4,12 +4,14 @@ import com.mojang.blaze3d.systems.RenderSystem;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.utils.ItemUtils;
import me.xmrvizzy.skyblocker.utils.Utils;
+import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundTag;
+import net.minecraft.text.LiteralText;
import net.minecraft.util.math.MathHelper;
import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
@@ -27,6 +29,7 @@ public abstract class ItemRendererMixin {
@Inject(method = "renderGuiItemOverlay(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD"))
public void renderItemBar(TextRenderer renderer, ItemStack stack, int x, int y, @Nullable String countLabel, CallbackInfo ci) {
+
if (Utils.isSkyblock && SkyblockerConfig.get().locations.dwarvenMines.enableDrillFuel) {
if (!stack.isEmpty()) {
CompoundTag tag = stack.getTag();
@@ -34,7 +37,7 @@ public abstract class ItemRendererMixin {
if (tag.getCompound("ExtraAttributes").contains("drill_fuel")) {
float current = 3000.0F;
float max = 3000.0F;
-
+
for (String line : ItemUtils.getTooltipStrings(stack)) {
if (line.contains("Fuel: ")) {
String clear = Pattern.compile("[^0-9 /]").matcher(line).replaceAll("").trim();
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java
new file mode 100644
index 00000000..51b30c23
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java
@@ -0,0 +1,138 @@
+package me.xmrvizzy.skyblocker.skyblock.item;
+
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.Reader;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.GZIPInputStream;
+
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.item.TooltipContext;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.text.LiteralText;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+
+
+import me.xmrvizzy.skyblocker.SkyblockerMod;
+
+public class PriceInfoTooltip {
+
+ public static void onInjectTooltip(ItemStack stack, TooltipContext context, List<Text> list) {
+ String name = getInternalNameForItem(stack);
+
+ try {
+
+ if(SkyblockerMod.prices != null && SkyblockerMod.prices.containsKey(name)){
+ if(!list.toString().contains("Lowest BIN Price")){
+ Double price = round((Double)SkyblockerMod.prices.get(name), 2);
+
+ list.add(new LiteralText("Lowest BIN Price: " + price).formatted(Formatting.GOLD));
+ }
+ }
+ }catch(Exception e) {
+
+ }
+
+ }
+ public static double round(double value, int places) {
+ if (places < 0) throw new IllegalArgumentException();
+
+ BigDecimal bd = new BigDecimal(value);
+ bd = bd.setScale(places, RoundingMode.HALF_UP);
+ return bd.doubleValue();
+ }
+ public static String getInternalNameForItem(ItemStack stack) {
+ if(stack == null) return null;
+ CompoundTag tag = stack.getTag();
+ return getInternalnameFromNBT(tag);
+ }
+
+ public static String getInternalnameFromNBT(CompoundTag tag) {
+ String internalname = null;
+ if(tag != null && tag.contains("ExtraAttributes", 10)) {
+ CompoundTag ea = tag.getCompound("ExtraAttributes");
+
+ if(ea.contains("id", 8)) {
+ internalname = ea.getString("id").replaceAll(":", "-");
+ } else {
+ return null;
+ }
+
+
+ if("ENCHANTED_BOOK".equals(internalname)) {
+ CompoundTag enchants = ea.getCompound("enchantments");
+
+ for(String enchname : enchants.getKeys()) {
+ internalname = enchname.toUpperCase() + ";" + enchants.getInt(enchname);
+ break;
+ }
+ }
+ }
+
+ return internalname;
+ }
+
+ public static Map downloadPrices() {
+ try {
+ downloadUsingStream("https://moulberry.codes/auction_averages_lbin/1day.json.gz", "1day.json.gz");
+ decompressGzipFile("1day.json.gz", "1day.json");
+ Gson gson = new Gson();
+ Reader reader = Files.newBufferedReader(Paths.get("1day.json"));
+ // convert JSON file to map
+ Map<?, ?> map = gson.fromJson(reader, Map.class);
+ return map;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ private static void decompressGzipFile(String gzipFile, String newFile) {
+ try {
+ FileInputStream fis = new FileInputStream(gzipFile);
+ GZIPInputStream gis = new GZIPInputStream(fis);
+ FileOutputStream fos = new FileOutputStream(newFile);
+ byte[] buffer = new byte[1024];
+ int len;
+ while((len = gis.read(buffer)) != -1){
+ fos.write(buffer, 0, len);
+ }
+ //close resources
+ fos.close();
+ gis.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ private static void downloadUsingStream(String urlStr, String file) throws IOException{
+ URL url = new URL(urlStr);
+ BufferedInputStream bis = new BufferedInputStream(url.openStream());
+ FileOutputStream fis = new FileOutputStream(file);
+ byte[] buffer = new byte[1024];
+ int count=0;
+ while((count = bis.read(buffer,0,1024)) != -1)
+ {
+ fis.write(buffer, 0, count);
+ }
+ fis.close();
+ bis.close();
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
index 719e4e4f..ef1390e6 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
@@ -4,6 +4,8 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.skyblock.Attribute;
+import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip;
+import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.scoreboard.Scoreboard;
import net.minecraft.scoreboard.ScoreboardObjective;
@@ -57,7 +59,10 @@ public class Utils {
if (sidebar.isEmpty()) return;
if (sidebar.get(sidebar.size() - 1).equals("www.hypixel.net")) {
- if (sidebar.get(0).contains("SKYBLOCK")) isSkyblock = true;
+ if (sidebar.get(0).contains("SKYBLOCK")){
+ ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip);
+ isSkyblock = true;
+ }
else isSkyblock = false;
if (isSkyblock && string.contains("The Catacombs")) isDungeons = true;