aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/miscgui/TradeWindow.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscgui/TradeWindow.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/TradeWindow.java2132
1 files changed, 1123 insertions, 1009 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/TradeWindow.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/TradeWindow.java
index ecf58976..1ba155d5 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/TradeWindow.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/TradeWindow.java
@@ -32,1013 +32,1127 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TradeWindow {
- private static final ResourceLocation location = new ResourceLocation("notenoughupdates", "custom_trade.png");
-
- private static final int xSize = 176;
- private static final int ySize = 204;
- private static int guiLeft;
- private static int guiTop;
-
- private static long lastTradeMillis = -1;
-
- private static final long CHANGE_EXCLAM_MILLIS = 5000;
-
- private static Integer[] ourTradeIndexes = new Integer[16];
- private static Integer[] theirTradeIndexes = new Integer[16];
- private static String[] theirTradeOld = new String[16];
- private static Long[] theirTradeChangesMillis = new Long[16];
-
- private static ItemStack lastBackpack;
- private static int lastBackpackX;
- private static int lastBackpackY;
-
- public static boolean hypixelTradeWindowActive(String containerName) {
- return containerName != null && containerName.trim().startsWith("You ");
- }
-
- public static boolean tradeWindowActive(String containerName) {
- if (!NotEnoughUpdates.INSTANCE.hasSkyblockScoreboard()) return false;
- if (!NotEnoughUpdates.INSTANCE.config.tradeMenu.enableCustomTrade) return false;
-
- if (hypixelTradeWindowActive(containerName)) {
- return true;
- }
-
- if (lastTradeMillis != -99) {
- lastTradeMillis = -99;
- ourTradeIndexes = new Integer[16];
- theirTradeIndexes = new Integer[16];
- theirTradeOld = new String[16];
- theirTradeChangesMillis = new Long[16];
- }
-
- return false;
- }
-
- private static void drawStringShadow(String str, float x, float y, int len) {
- for (int xOff = -2; xOff <= 2; xOff++) {
- for (int yOff = -2; yOff <= 2; yOff++) {
- if (Math.abs(xOff) != Math.abs(yOff)) {
- Utils.drawStringCenteredScaledMaxWidth(Utils.cleanColourNotModifiers(str),
- Minecraft.getMinecraft().fontRendererObj,
- x + xOff / 2f, y + yOff / 2f, false, len,
- new Color(20, 20, 20, 100 / Math.max(Math.abs(xOff), Math.abs(yOff))).getRGB());
- }
- }
- }
-
- Utils.drawStringCenteredScaledMaxWidth(str,
- Minecraft.getMinecraft().fontRendererObj,
- x, y, false, len,
- new Color(64, 64, 64, 255).getRGB());
- }
-
- private static int getPrice(String internalname) {
- int pricePer = NotEnoughUpdates.INSTANCE.manager.auctionManager.getLowestBin(internalname);
- if (pricePer == -1) {
- JsonObject bazaarInfo = NotEnoughUpdates.INSTANCE.manager.auctionManager.getBazaarInfo(internalname);
- if (bazaarInfo != null && bazaarInfo.has("avg_buy")) {
- pricePer = (int) bazaarInfo.get("avg_buy").getAsFloat();
- }
- }
- if (pricePer == -1) {
- JsonObject info = NotEnoughUpdates.INSTANCE.manager.auctionManager.getItemAuctionInfo(internalname);
- if (info != null && !NotEnoughUpdates.INSTANCE.manager.auctionManager.isVanillaItem(internalname) &&
- info.has("price") && info.has("count")) {
- int auctionPricePer = (int) (info.get("price").getAsFloat() / info.get("count").getAsFloat());
-
- pricePer = auctionPricePer;
- }
- }
- return pricePer;
- }
-
- private static int processTopItems(ItemStack stack, Map<Integer, Set<String>> topItems,
- Map<String, ItemStack> topItemsStack, Map<String, Integer> topItemsCount) {
- String internalname = NotEnoughUpdates.INSTANCE.manager.getInternalNameForItem(stack);
- if (internalname == null) {
- if (stack.getDisplayName().endsWith(" coins")) {
- String clean = Utils.cleanColour(stack.getDisplayName());
-
- int mult = 1;
- StringBuilder sb = new StringBuilder();
- for (int index = 0; index < clean.length(); index++) {
- char c = clean.charAt(index);
- if ("0123456789.".indexOf(c) >= 0) {
- sb.append(c);
- } else {
- switch (c) {
- case 'K':
- case 'k':
- mult = 1000;
- break;
- case 'M':
- case 'm':
- mult = 1000000;
- break;
- case 'B':
- case 'b':
- mult = 1000000000;
- break;
- default:
- break;
- }
- break;
- }
- }
- try {
- int coins = (int) (Float.parseFloat(sb.toString()) * mult);
-
- topItemsStack.putIfAbsent("TRADE_COINS", stack);
-
- int existingPrice = coins;
- Set<Integer> toRemove = new HashSet<>();
- for (Map.Entry<Integer, Set<String>> entry : topItems.entrySet()) {
- if (entry.getValue().contains("TRADE_COINS")) {
- entry.getValue().remove("TRADE_COINS");
- existingPrice += entry.getKey();
- }
- if (entry.getValue().isEmpty()) toRemove.add(entry.getKey());
- }
- topItems.keySet().removeAll(toRemove);
-
- Set<String> items = topItems.computeIfAbsent(existingPrice, k -> new HashSet<>());
- items.add("TRADE_COINS");
-
- return coins;
-
- } catch (Exception ignored) {}
- }
- } else {
- int pricePer = getPrice(internalname);
- if (pricePer > 0) {
- topItemsStack.putIfAbsent(internalname, stack);
-
- int price = pricePer * stack.stackSize;
- int priceInclBackpack = price;
-
- NBTTagCompound tag = stack.getTagCompound();
- if (tag != null && tag.hasKey("ExtraAttributes", 10)) {
- NBTTagCompound ea = tag.getCompoundTag("ExtraAttributes");
-
- byte[] bytes = null;
- for (String key : ea.getKeySet()) {
- if (key.endsWith("backpack_data") || key.equals("new_year_cake_bag_data")) {
- bytes = ea.getByteArray(key);
- break;
- }
- }
- if (bytes != null) {
- try {
- NBTTagCompound contents_nbt = CompressedStreamTools.readCompressed(new ByteArrayInputStream(bytes));
- NBTTagList items = contents_nbt.getTagList("i", 10);
- for (int k = 0; k < items.tagCount(); k++) {
- if (items.getCompoundTagAt(k).getKeySet().size() > 0) {
- NBTTagCompound nbt = items.getCompoundTagAt(k).getCompoundTag("tag");
-
- int id2 = items.getCompoundTagAt(k).getShort("id");
- int count2 = items.getCompoundTagAt(k).getByte("Count");
- int damage2 = items.getCompoundTagAt(k).getShort("Damage");
-
- if (id2 == 141) id2 = 391; //for some reason hypixel thinks carrots have id 141
-
- Item mcItem = Item.getItemById(id2);
- if (mcItem == null) continue;
-
- ItemStack stack2 = new ItemStack(mcItem, count2, damage2);
- stack2.setTagCompound(nbt);
-
- priceInclBackpack += processTopItems(stack2, topItems, topItemsStack, topItemsCount);
- }
- }
- } catch (Exception ignored) {}
- }
- }
-
- int existingPrice = price;
- Set<Integer> toRemove = new HashSet<>();
- for (Map.Entry<Integer, Set<String>> entry : topItems.entrySet()) {
- if (entry.getValue().contains(internalname)) {
- entry.getValue().remove(internalname);
- existingPrice += entry.getKey();
- }
- if (entry.getValue().isEmpty()) toRemove.add(entry.getKey());
- }
- topItems.keySet().removeAll(toRemove);
-
- Set<String> items = topItems.computeIfAbsent(existingPrice, k -> new HashSet<>());
- items.add(internalname);
-
- int count = topItemsCount.computeIfAbsent(internalname, l -> 0);
- topItemsCount.put(internalname, count + stack.stackSize);
-
- return priceInclBackpack;
- }
- }
- return 0;
- }
-
- private static int getBackpackValue(ItemStack stack) {
- int price = 0;
-
- NBTTagCompound tag = stack.getTagCompound();
- if (tag != null && tag.hasKey("ExtraAttributes", 10)) {
- NBTTagCompound ea = tag.getCompoundTag("ExtraAttributes");
-
- byte[] bytes = null;
- for (String key : ea.getKeySet()) {
- if (key.endsWith("backpack_data") || key.equals("new_year_cake_bag_data")) {
- bytes = ea.getByteArray(key);
- break;
- }
- }
- if (bytes != null) {
- try {
- NBTTagCompound contents_nbt = CompressedStreamTools.readCompressed(new ByteArrayInputStream(bytes));
- NBTTagList items = contents_nbt.getTagList("i", 10);
- for (int k = 0; k < items.tagCount(); k++) {
- if (items.getCompoundTagAt(k).getKeySet().size() > 0) {
- NBTTagCompound nbt = items.getCompoundTagAt(k).getCompoundTag("tag");
- String internalname2 = NotEnoughUpdates.INSTANCE.manager.getInternalnameFromNBT(nbt);
- if (internalname2 != null) {
- int pricePer2 = getPrice(internalname2);
- if (pricePer2 > 0) {
- int count2 = items.getCompoundTagAt(k).getByte("Count");
- price += pricePer2 * count2;
- }
- }
- }
- }
- } catch (Exception ignored) {}
- }
- }
- return price;
- }
-
- public static void render(int mouseX, int mouseY) {
- if (!(Minecraft.getMinecraft().currentScreen instanceof GuiContainer)) return;
-
- GuiContainer chest = ((GuiContainer) Minecraft.getMinecraft().currentScreen);
- ContainerChest cc = (ContainerChest) chest.inventorySlots;
- String containerName = cc.getLowerChestInventory().getDisplayName().getUnformattedText();
-
- ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
-
- guiLeft = (scaledResolution.getScaledWidth() - xSize) / 2;
- guiTop = (scaledResolution.getScaledHeight() - ySize) / 2;
-
- List<String> tooltipToDisplay = null;
- ItemStack stackToRender = null;
- int tooltipLen = -1;
-
- //Set index mappings
- //Our slots
- TreeMap<Integer, List<Integer>> ourTradeMap = new TreeMap<>();
- for (int i = 0; i < 16; i++) {
- ourTradeIndexes[i] = -1;
-
- int x = i % 4;
- int y = i / 4;
- int containerIndex = y * 9 + x;
-
- ItemStack stack = chest.inventorySlots.getInventory().get(containerIndex);
- if (stack == null) continue;
-
- String internalname = NotEnoughUpdates.INSTANCE.manager.getInternalNameForItem(stack);
- if (internalname == null) {
- if (stack.getDisplayName().endsWith(" coins")) {
- String clean = Utils.cleanColour(stack.getDisplayName());
-
- int mult = 1;
- StringBuilder sb = new StringBuilder();
- for (int index = 0; index < clean.length(); index++) {
- char c = clean.charAt(index);
- if ("0123456789.".indexOf(c) >= 0) {
- sb.append(c);
- } else {
- switch (c) {
- case 'K':
- case 'k':
- mult = 1000;
- break;
- case 'M':
- case 'm':
- mult = 1000000;
- break;
- case 'B':
- case 'b':
- mult = 1000000000;
- break;
- default:
- break;
- }
- break;
- }
- }
- try {
- int coins = (int) (Float.parseFloat(sb.toString()) * mult);
-
- List<Integer> list = ourTradeMap.computeIfAbsent(coins, k -> new ArrayList<>());
- list.add(containerIndex);
-
- } catch (Exception ignored) {
- List<Integer> list = ourTradeMap.computeIfAbsent(-1, k -> new ArrayList<>());
- list.add(containerIndex);
- }
- } else {
- List<Integer> list = ourTradeMap.computeIfAbsent(-1, k -> new ArrayList<>());
- list.add(containerIndex);
- }
- } else {
- int price = getPrice(internalname);
- if (price == -1) price = 0;
-
- price += getBackpackValue(stack);
-
- List<Integer> list = ourTradeMap.computeIfAbsent(price, k -> new ArrayList<>());
- list.add(containerIndex);
- }
- }
- long currentTime = System.currentTimeMillis();
- List<String> theirTradeCurrent = new ArrayList<>();
- TreeMap<Integer, List<Integer>> theirTradeMap = new TreeMap<>();
- HashMap<String, Integer> displayCountMap = new HashMap<>();
- for (int i = 0; i < 16; i++) {
- theirTradeIndexes[i] = -1;
- if (theirTradeChangesMillis[i] == null || currentTime - theirTradeChangesMillis[i] > CHANGE_EXCLAM_MILLIS) {
- theirTradeChangesMillis[i] = -1L;
- }
-
- int x = i % 4;
- int y = i / 4;
- int containerIndex = y * 9 + x + 5;
-
- ItemStack stack = chest.inventorySlots.getInventory().get(containerIndex);
- if (stack == null) continue;
-
- NBTTagCompound tag = stack.getTagCompound();
- String uuid = null;
- if (tag != null && tag.hasKey("ExtraAttributes", 10)) {
- NBTTagCompound ea = tag.getCompoundTag("ExtraAttributes");
-
- if (ea.hasKey("uuid", 8)) {
- uuid = ea.getString("uuid");
- } else {
- int displayCount = displayCountMap.computeIfAbsent(stack.getDisplayName(), k -> 0);
- uuid = stack.getDisplayName() + ":" + displayCount;
- displayCountMap.put(stack.getDisplayName(), displayCount + 1);
- }
- } else {
- int displayCount = displayCountMap.computeIfAbsent(stack.getDisplayName(), k -> 0);
- uuid = stack.getDisplayName() + ":" + displayCount;
- displayCountMap.put(stack.getDisplayName(), displayCount + 1);
- }
- if (uuid != null) theirTradeCurrent.add(uuid);
-
- String internalname = NotEnoughUpdates.INSTANCE.manager.getInternalNameForItem(stack);
- if (internalname == null) {
- if (stack.getDisplayName().endsWith(" coins")) {
- String clean = Utils.cleanColour(stack.getDisplayName());
-
- int mult = 1;
- StringBuilder sb = new StringBuilder();
- for (int index = 0; index < clean.length(); index++) {
- char c = clean.charAt(index);
- if ("0123456789.".indexOf(c) >= 0) {
- sb.append(c);
- } else {
- switch (c) {
- case 'K':
- case 'k':
- mult = 1000;
- break;
- case 'M':
- case 'm':
- mult = 1000000;
- break;
- case 'B':
- case 'b':
- mult = 1000000000;
- break;
- default:
- break;
- }
- break;
- }
- }
- try {
- int coins = (int) (Float.parseFloat(sb.toString()) * mult);
-
- List<Integer> list = theirTradeMap.computeIfAbsent(coins, k -> new ArrayList<>());
- list.add(containerIndex);
-
- } catch (Exception ignored) {
- List<Integer> list = theirTradeMap.computeIfAbsent(-1, k -> new ArrayList<>());
- list.add(containerIndex);
- }
- } else {
- List<Integer> list = theirTradeMap.computeIfAbsent(-1, k -> new ArrayList<>());
- list.add(containerIndex);
- }
- } else {
- JsonObject info = NotEnoughUpdates.INSTANCE.manager.auctionManager.getItemAuctionInfo(internalname);
- int price = -1;
- if (info != null && info.has("price") && info.has("count")) {
- int auctionPricePer = (int) (info.get("price").getAsFloat() / info.get("count").getAsFloat());
-
- price = auctionPricePer * stack.stackSize;
- } else {
- JsonObject bazaarInfo = NotEnoughUpdates.INSTANCE.manager.auctionManager.getBazaarInfo(internalname);
- if (bazaarInfo != null && bazaarInfo.has("avg_buy")) {
- price = (int) bazaarInfo.get("avg_buy").getAsFloat() * stack.stackSize;
- }
- }
-
- price += getBackpackValue(stack);
-
- List<Integer> list = theirTradeMap.computeIfAbsent(price, k -> new ArrayList<>());
- list.add(containerIndex);
- }
- }
- int ourTradeIndex = 0;
- for (Map.Entry<Integer, List<Integer>> entry : ourTradeMap.descendingMap().entrySet()) {
- for (Integer index : entry.getValue()) {
- ourTradeIndexes[ourTradeIndex++] = index;
- }
- }
-
- //Their slots
- int maxMissing = 16 - theirTradeCurrent.size();
- int j = 0;
- for (int i = 0; i < 16; i++) {
- while (j <= 15 && (j - i < maxMissing) && theirTradeChangesMillis[j] >= 0) j++;
- j = Math.min(15, j);
-
- String oldUUID = theirTradeOld[i];
- if (oldUUID != null && !theirTradeCurrent.contains(oldUUID)) {
- theirTradeChangesMillis[j] = System.currentTimeMillis();
- }
- j++;
- }
-
- for (int i = 0; i < 16; i++) {
- theirTradeOld[i] = null;
- }
- int theirTradeIndex = 0;
- displayCountMap.clear();
- j = 0;
- for (Map.Entry<Integer, List<Integer>> entry : theirTradeMap.descendingMap().entrySet()) {
- for (Integer index : entry.getValue()) {
- while (j <= 15 && (j - theirTradeIndex < maxMissing) && theirTradeChangesMillis[j] >= 0) j++;
- j = Math.min(15, j);
-
- theirTradeIndexes[j] = index;
-
- ItemStack stack = chest.inventorySlots.getInventory().get(index);
- if (stack == null) continue;
-
- NBTTagCompound tag = stack.getTagCompound();
- String uuid = null;
- if (tag != null && tag.hasKey("ExtraAttributes", 10)) {
- NBTTagCompound ea = tag.getCompoundTag("ExtraAttributes");
-
- if (ea.hasKey("uuid", 8)) {
- uuid = ea.getString("uuid");
- } else {
- int displayCount = displayCountMap.computeIfAbsent(stack.getDisplayName(), k -> 0);
- uuid = stack.getDisplayName() + ":" + displayCount;
- displayCountMap.put(stack.getDisplayName(), displayCount + 1);
- }
- } else {
- int displayCount = displayCountMap.computeIfAbsent(stack.getDisplayName(), k -> 0);
- uuid = stack.getDisplayName() + ":" + displayCount;
- displayCountMap.put(stack.getDisplayName(), displayCount + 1);
- }
- //System.out.println(uuid);
- theirTradeOld[theirTradeIndex] = uuid;
-
- j++;
- theirTradeIndex++;
- }
- }
-
- GlStateManager.color(1, 1, 1, 1);
- Minecraft.getMinecraft().getTextureManager().bindTexture(location);
- Utils.drawTexturedRect(guiLeft, guiTop, xSize, ySize, 0, 176 / 256f, 0, 204 / 256f, GL11.GL_NEAREST);
-
- Utils.drawStringF(new ChatComponentTranslation("container.inventory").getUnformattedText(),
- Minecraft.getMinecraft().fontRendererObj, guiLeft + 8, guiTop + 111, false, 4210752);
- Utils.drawStringF("You", Minecraft.getMinecraft().fontRendererObj, guiLeft + 8,
- guiTop + 5, false, 4210752);
- String[] split = containerName.split(" ");
- if (split.length >= 1) {
- Utils.drawStringF(split[split.length - 1], Minecraft.getMinecraft().fontRendererObj,
- guiLeft + 167 - Minecraft.getMinecraft().fontRendererObj.getStringWidth(split[split.length - 1]),
- guiTop + 5, false, 4210752);
- }
-
- int index = 0;
- for (ItemStack stack : Minecraft.getMinecraft().thePlayer.inventory.mainInventory) {
- int x = 8 + 18 * (index % 9);
- int y = 104 + 18 * (index / 9);
- if (index < 9) y = 180;
-
- chest.drawSlot(new Slot(Minecraft.getMinecraft().thePlayer.inventory, index, guiLeft + x, guiTop + y));
- //Utils.drawItemStack(stack, guiLeft+x, guiTop+y);
-
- int col = 0x80ffffff;
- if (SlotLocking.getInstance().isSlotIndexLocked(index)) {
- col = 0x80ff8080;
- }
-
- if (mouseX > guiLeft + x - 1 && mouseX < guiLeft + x + 18) {
- if (mouseY > guiTop + y - 1 && mouseY < guiTop + y + 18) {
- if (stack != null) stackToRender = stack;
-
- GlStateManager.disableLighting();
- GlStateManager.disableDepth();
- GlStateManager.colorMask(true, true, true, false);
- Utils.drawGradientRect(guiLeft + x, guiTop + y,
- guiLeft + x + 16, guiTop + y + 16, col, col);
- GlStateManager.colorMask(true, true, true, true);
- GlStateManager.enableLighting();
- GlStateManager.enableDepth();
- }
- }
-
- index++;
- }
-
- for (int i = 0; i < 16; i++) {
- int x = i % 4;
- int y = i / 4;
-
- int containerIndex = ourTradeIndexes[i];
-
- ItemStack stack = null;
- if (containerIndex >= 0) {
- stack = chest.inventorySlots.getInventory().get(containerIndex);
- Utils.drawItemStack(stack, guiLeft + 10 + x * 18, guiTop + 15 + y * 18);
- }
-
- if (mouseX > guiLeft + 10 + x * 18 - 1 && mouseX < guiLeft + 10 + x * 18 + 18) {
- if (mouseY > guiTop + 15 + y * 18 - 1 && mouseY < guiTop + 15 + y * 18 + 18) {
- if (stack != null) stackToRender = stack;
-
- GlStateManager.disableLighting();
- GlStateManager.disableDepth();
- GlStateManager.colorMask(true, true, true, false);
- Utils.drawGradientRect(guiLeft + 10 + x * 18, guiTop + 15 + y * 18,
- guiLeft + 10 + x * 18 + 16, guiTop + 15 + y * 18 + 16, -2130706433, -2130706433);
- GlStateManager.colorMask(true, true, true, true);
- GlStateManager.enableLighting();
- GlStateManager.enableDepth();
- }
- }
- }
-
- ItemStack bidStack = chest.inventorySlots.getInventory().get(36);
- if (bidStack != null) {
- Utils.drawItemStack(bidStack, guiLeft + 10, guiTop + 90);
- if (mouseX > guiLeft + 10 - 1 && mouseX < guiLeft + 10 + 18) {
- if (mouseY > guiTop + 90 - 1 && mouseY < guiTop + 90 + 18) {
- tooltipToDisplay = bidStack.getTooltip(Minecraft.getMinecraft().thePlayer,
- Minecraft.getMinecraft().gameSettings.advancedItemTooltips);
- }
- }
- }
-
- ItemStack confirmStack = chest.inventorySlots.getInventory().get(39);
- if (confirmStack != null) {
- String confirmDisplay = confirmStack.getDisplayName();
- if (!confirmDisplay.equals(EnumChatFormatting.GREEN + "Trading!")) {
- if (mouseX > guiLeft + 81 - 51 && mouseX < guiLeft + 81) {
- if (mouseY > guiTop + 91 && mouseY < guiTop + 91 + 14) {
- tooltipToDisplay = confirmStack.getTooltip(Minecraft.getMinecraft().thePlayer,
- Minecraft.getMinecraft().gameSettings.advancedItemTooltips);
- }
- }
-
- Minecraft.getMinecraft().getTextureManager().bindTexture(location);
- Utils.drawTexturedRect(guiLeft + 81 - 51, guiTop + 91, 51, 14,
- 0, 51 / 256f, ySize / 256f, (ySize + 14) / 256f, GL11.GL_NEAREST);
-
- Pattern pattern = Pattern.compile(EnumChatFormatting.GRAY + "\\(" + EnumChatFormatting.YELLOW + "([0-9]+)" + EnumChatFormatting.GRAY + "\\)");
- Matcher matcher = pattern.matcher(confirmDisplay);
-
- if (!confirmDisplay.equals(EnumChatFormatting.YELLOW + "Warning!") &&
- !confirmDisplay.equals(EnumChatFormatting.YELLOW + "Deal!")) {
- lastTradeMillis = -1;
- }
-
- if (matcher.find()) {
- String numS = matcher.group(1);
- int num = Integer.parseInt(numS);
-
- Utils.drawStringCentered(EnumChatFormatting.DARK_RED + "Check " + EnumChatFormatting.BOLD + (char) (9311 + num), Minecraft.getMinecraft().fontRendererObj, guiLeft + 56, guiTop + 99,
- false, 4210752);
- } else if (confirmDisplay.equals(EnumChatFormatting.AQUA + "Gift!")) {
- Utils.drawStringCentered(EnumChatFormatting.GREEN + "Accept", Minecraft.getMinecraft().fontRendererObj, guiLeft + 56, guiTop + 99,
- true, 4210752);
- } else if (confirmDisplay.equals(EnumChatFormatting.GREEN + "Deal accepted!")) {
- Utils.drawStringCentered(EnumChatFormatting.GREEN + "Accepted", Minecraft.getMinecraft().fontRendererObj,
- guiLeft + 56, guiTop + 99, true, 4210752);
- } else if (lastTradeMillis > 0) {
- long delta = System.currentTimeMillis() - lastTradeMillis;
- if (delta > 2000) {
- Utils.drawStringCentered(EnumChatFormatting.GREEN + "Accept", Minecraft.getMinecraft().fontRendererObj, guiLeft + 56, guiTop + 99,
- true, 4210752);
- } else {
- Utils.drawStringCentered(EnumChatFormatting.YELLOW + "Trade " + EnumChatFormatting.BOLD + (char) (9312 + (2000 - delta) / 1000),
- Minecraft.getMinecraft().fontRendererObj, guiLeft + 56, guiTop + 99,
- true, 4210752);
- }
- } else {
- Utils.drawStringCentered(EnumChatFormatting.YELLOW + "Trade " + EnumChatFormatting.BOLD + (char) (9314), Minecraft.getMinecraft().fontRendererObj, guiLeft + 56, guiTop + 99,
- true, 4210752);
- }
- }
- }
-
- ItemStack theirConfirmStack = chest.inventorySlots.getInventory().get(41);
- if (theirConfirmStack != null) {
- String confirmDisplay = theirConfirmStack.getDisplayName();
- if (mouseX > guiLeft + 95 && mouseX < guiLeft + 95 + 51) {
- if (mouseY > guiTop + 91 && mouseY < guiTop + 91 + 14) {
- tooltipToDisplay = theirConfirmStack.getTooltip(Minecraft.getMinecraft().thePlayer,
- Minecraft.getMinecraft().gameSettings.advancedItemTooltips);
- }
- }
-
- GlStateManager.color(1, 1, 1, 1);
- Minecraft.getMinecraft().getTextureManager().bindTexture(location);
- Utils.drawTexturedRect(guiLeft + 95, guiTop + 91, 51, 14,
- 0, 51 / 256f, ySize / 256f, (ySize + 14) / 256f, GL11.GL_NEAREST);
-
- if (confirmDisplay.equals(EnumChatFormatting.YELLOW + "Pending their confirm")) {
- Utils.drawStringCentered(EnumChatFormatting.YELLOW + "Pending", Minecraft.getMinecraft().fontRendererObj, guiLeft + 120, guiTop + 99,
- true, 4210752);
- } else if (confirmDisplay.equals(EnumChatFormatting.YELLOW + "Deal timer...")) {
- Utils.drawStringCentered(EnumChatFormatting.YELLOW + "Pending", Minecraft.getMinecraft().fontRendererObj, guiLeft + 120, guiTop + 99,
- true, 4210752);
- } else if (confirmDisplay.equals(EnumChatFormatting.GREEN + "Other player confirmed!")) {
- Utils.drawStringCentered(EnumChatFormatting.GREEN + "Accepted", Minecraft.getMinecraft().fontRendererObj, guiLeft + 120, guiTop + 99,
- true, 4210752);
- }
- }
-
- for (int i = 0; i < 16; i++) {
- int x = i % 4;
- int y = i / 4;
-
- int containerIndex = theirTradeIndexes[i];
-
- ItemStack stack = null;
- if (containerIndex >= 0) {
- stack = chest.inventorySlots.getInventory().get(containerIndex);
- Utils.drawItemStack(stack, guiLeft + 96 + x * 18, guiTop + 15 + y * 18);
- }
-
- if (currentTime % 400 > 200 && theirTradeChangesMillis[i] != null && theirTradeChangesMillis[i] > 0) {
- GlStateManager.translate(0, 0, 200);
- GlStateManager.color(1, 1, 1, 1);
- Minecraft.getMinecraft().getTextureManager().bindTexture(location);
- Utils.drawTexturedRect(guiLeft + 96 + x * 18, guiTop + 15 + y * 18, 16, 16,
- 51 / 256f, 67 / 256f, 204 / 256f, 220 / 256f, GL11.GL_NEAREST);
- GlStateManager.translate(0, 0, -200);
- }
-
- if (mouseX > guiLeft + 96 + x * 18 - 1 && mouseX < guiLeft + 96 + x * 18 + 18) {
- if (mouseY > guiTop + 15 + y * 18 - 1 && mouseY < guiTop + 15 + y * 18 + 18) {
- if (stack != null) stackToRender = stack;
-
- GlStateManager.disableLighting();
- GlStateManager.disableDepth();
- GlStateManager.colorMask(true, true, true, false);
- Utils.drawGradientRect(guiLeft + 96 + x * 18, guiTop + 15 + y * 18,
- guiLeft + 96 + x * 18 + 16, guiTop + 15 + y * 18 + 16, -2130706433, -2130706433);
- GlStateManager.colorMask(true, true, true, true);
- GlStateManager.enableLighting();
- GlStateManager.enableDepth();
- }
- }
- }
-
- if (NotEnoughUpdates.INSTANCE.config.tradeMenu.customTradePrices) {
- TreeMap<Integer, Set<String>> ourTopItems = new TreeMap<>();
- TreeMap<String, ItemStack> ourTopItemsStack = new TreeMap<>();
- TreeMap<String, Integer> ourTopItemsCount = new TreeMap<>();
- int ourPrice = 0;
- for (int i = 0; i < 16; i++) {
- int x = i % 4;
- int y = i / 4;
- int containerIndex = y * 9 + x;
-
- ItemStack stack = chest.inventorySlots.getInventory().get(containerIndex);
- if (stack == null) continue;
-
- ourPrice += processTopItems(stack, ourTopItems, ourTopItemsStack, ourTopItemsCount);
- }
- TreeMap<Integer, Set<String>> theirTopItems = new TreeMap<>();
- TreeMap<String, ItemStack> theirTopItemsStack = new TreeMap<>();
- TreeMap<String, Integer> theirTopItemsCount = new TreeMap<>();
- int theirPrice = 0;
- for (int i = 0; i < 16; i++) {
- int x = i % 4;
- int y = i / 4;
- int containerIndex = y * 9 + x + 5;
-
- ItemStack stack = chest.inventorySlots.getInventory().get(containerIndex);
- if (stack == null) continue;
-
- theirPrice += processTopItems(stack, theirTopItems, theirTopItemsStack, theirTopItemsCount);
- }
-
- NumberFormat format = NumberFormat.getInstance(Locale.US);
-
- GlStateManager.disableLighting();
- GlStateManager.color(1, 1, 1, 1);
- Minecraft.getMinecraft().getTextureManager().bindTexture(location);
- Utils.drawTexturedRect(guiLeft - 80 - 3, guiTop, 80, 106,
- 176 / 256f, 1, 0, 106 / 256f, GL11.GL_NEAREST);
- drawStringShadow(EnumChatFormatting.GOLD.toString() + EnumChatFormatting.BOLD + "Total Value",
- guiLeft - 40 - 3, guiTop + 11, 72);
- drawStringShadow(EnumChatFormatting.GOLD.toString() + EnumChatFormatting.BOLD + format.format(ourPrice),
- guiLeft - 40 - 3, guiTop + 21, 72);
-
- int ourTopIndex = Math.max(0, 3 - ourTopItemsStack.size());
- out:
- for (Map.Entry<Integer, Set<String>> entry : ourTopItems.descendingMap().entrySet()) {
- for (String ourTopItemInternal : entry.getValue()) {
- ItemStack stack = ourTopItemsStack.get(ourTopItemInternal);
- if (stack == null) continue;
-
- if (NotEnoughUpdates.INSTANCE.config.tradeMenu.customTradePriceStyle) {
- String countS = "";
- if (ourTopItemsCount.containsKey(ourTopItemInternal)) {
- int count = ourTopItemsCount.get(ourTopItemInternal);
- if (count > 999999) {
- countS = Math.floor(count / 10000f) / 100f + "m";
- } else if (count > 999) {
- countS = Math.floor(count / 10f) / 100f + "k";
- } else {
- countS = "" + count;
- }
- }
-
- Utils.drawItemStackWithText(stack, guiLeft - 75 - 3, guiTop + 49 + 18 * ourTopIndex, countS);
-
- GlStateManager.disableLighting();
- GlStateManager.disableBlend();
- GlStateManager.color(1, 1, 1, 1);
- drawStringShadow(EnumChatFormatting.GOLD.toString() + EnumChatFormatting.BOLD + format.format(entry.getKey()),
- guiLeft - 29 - 3, guiTop + 57 + 18 * ourTopIndex, 52);
- GlStateManager.enableBlend();
- } else {
- drawStringShadow(stack.getDisplayName() + EnumChatFormatting.GRAY + "x" + ourTopItemsCount.get(ourTopItemInternal),
- guiLeft - 40 - 3, guiTop + 46 + 20 * ourTopIndex, 72);
- drawStringShadow(EnumChatFormatting.GOLD.toString() + EnumChatFormatting.BOLD + format.format(entry.getKey()),
- guiLeft - 40 - 3, guiTop + 56 + 20 * ourTopIndex, 72);
- }
-
- if (++ourTopIndex >= 3) break out;
- }
- }
-
- GlStateManager.color(1, 1, 1, 1);
- Minecraft.getMinecraft().getTextureManager().bindTexture(location);
- Utils.drawTexturedRect(guiLeft + xSize + 3, guiTop, 80, 106,
- 176 / 256f, 1, 0, 106 / 256f, GL11.GL_NEAREST);
- drawStringShadow(EnumChatFormatting.GOLD.toString() + EnumChatFormatting.BOLD + "Total Value",
- guiLeft + xSize + 3 + 40, guiTop + 11, 72);
- drawStringShadow(EnumChatFormatting.GOLD.toString() + EnumChatFormatting.BOLD + format.format(theirPrice),
- guiLeft + xSize + 3 + 40, guiTop + 21, 72);
-
- int theirTopIndex = Math.max(0, 3 - theirTopItemsStack.size());
- out:
- for (Map.Entry<Integer, Set<String>> entry : theirTopItems.descendingMap().entrySet()) {
- for (String theirTopItemInternal : entry.getValue()) {
- ItemStack stack = theirTopItemsStack.get(theirTopItemInternal);
- if (stack == null) continue;
-
- if (NotEnoughUpdates.INSTANCE.config.tradeMenu.customTradePriceStyle) {
- String countS = "";
- if (theirTopItemsCount.containsKey(theirTopItemInternal)) {
- int count = theirTopItemsCount.get(theirTopItemInternal);
- if (count > 999999) {
- countS = Math.floor(count / 10000f) / 100f + "m";
- } else if (count > 999) {
- countS = Math.floor(count / 10f) / 100f + "k";
- } else {
-