blob: f70c8a7b346ba3b7d730a0b5628270077e96182b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
package me.xmrvizzy.skyblocker.skyblock.item;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URL;
import java.text.DecimalFormat;
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.NbtCompound;
import net.minecraft.text.LiteralText;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import me.xmrvizzy.skyblocker.SkyblockerMod;
public class PriceInfoTooltip {
private JsonObject auctionPricesJson = null;
private JsonObject bazaarPricesJson = null;
public static JsonObject prices = PriceInfoTooltip.downloadPrices();
public static void onInjectTooltip(ItemStack stack, TooltipContext context, List<Text> list) {
String name = getInternalNameForItem(stack);
try {
if(!list.toString().contains("Avg. BIN Price") && prices.has(name) ){
if(prices != null){
JsonElement getPrice = prices.get(name);
String price = round(getPrice.getAsDouble(), 2);
list.add(new LiteralText("Avg. BIN Price: ").formatted(Formatting.GOLD).append(new LiteralText(price + " Coins").formatted(Formatting.DARK_AQUA)));
}
}
}catch(Exception e) {
MinecraftClient.getInstance().player.sendMessage(new LiteralText(e.toString()), false);
}
}
public static String round(double value, int places) {
DecimalFormat df = new DecimalFormat("#,##0.00");
if (places < 0) throw new IllegalArgumentException();
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(places, RoundingMode.HALF_UP);
return df.format(bd);
}
public static String getInternalNameForItem(ItemStack stack) {
if(stack == null) return null;
NbtCompound tag = stack.getNbt();
return getInternalnameFromNBT(tag);
}
public static String getInternalnameFromNBT(NbtCompound tag) {
String internalname = null;
if(tag != null && tag.contains("ExtraAttributes", 10)) {
NbtCompound ea = tag.getCompound("ExtraAttributes");
if(ea.contains("id", 8)) {
internalname = ea.getString("id").replaceAll(":", "-");
} else {
return null;
}
if("ENCHANTED_BOOK".equals(internalname)) {
NbtCompound enchants = ea.getCompound("enchantments");
for(String enchname : enchants.getKeys()) {
internalname = enchname.toUpperCase() + ";" + enchants.getInt(enchname);
break;
}
}
}
return internalname;
}
public static JsonObject downloadPrices() {
JsonObject result = null;
try {
URL apiAddr = new URL("https://moulberry.codes/auction_averages_lbin/3day.json.gz");
InputStream src = apiAddr.openStream();
GZIPInputStream gzipOutput = new GZIPInputStream(src);
InputStreamReader reader = new InputStreamReader(gzipOutput);
result = new Gson().fromJson(reader, JsonObject.class);
}
catch(IOException e) {
e.printStackTrace();
}
return result;
}
}
|