diff options
author | Julian Braun <julianbraun6@gmail.com> | 2021-03-30 00:03:06 +0200 |
---|---|---|
committer | Julian Braun <julianbraun6@gmail.com> | 2021-03-30 00:03:06 +0200 |
commit | 3a2a7744feca2576f09a70cde68ebcc5e9c2c5e1 (patch) | |
tree | e52621fb3685b2b343308a34f4a3ff20dafd5ef6 /src/main/java | |
parent | ac59ecef954ff438c8fa3f0bf51c46b20af3138c (diff) | |
download | Skyblocker-3a2a7744feca2576f09a70cde68ebcc5e9c2c5e1.tar.gz Skyblocker-3a2a7744feca2576f09a70cde68ebcc5e9c2c5e1.tar.bz2 Skyblocker-3a2a7744feca2576f09a70cde68ebcc5e9c2c5e1.zip |
added pricetooltip for AH
Diffstat (limited to 'src/main/java')
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; |