diff options
| author | DoKM <mcazzyman@gmail.com> | 2021-09-02 14:03:14 +0200 |
|---|---|---|
| committer | DoKM <mcazzyman@gmail.com> | 2021-09-02 14:03:14 +0200 |
| commit | 74db72ad590c74b040d0800d411c4e1f1270a09a (patch) | |
| tree | 8ebf9cdf596fae2ec6b149826475d1d84de9ec3a /src/main/java/io | |
| parent | 05d6207281e18980b8a28046621c741fa81c1606 (diff) | |
| parent | 8eee6262a6e2c372240331f3c43c2279bd18539e (diff) | |
| download | NotEnoughUpdates-74db72ad590c74b040d0800d411c4e1f1270a09a.tar.gz NotEnoughUpdates-74db72ad590c74b040d0800d411c4e1f1270a09a.tar.bz2 NotEnoughUpdates-74db72ad590c74b040d0800d411c4e1f1270a09a.zip | |
Merge remote-tracking branch 'Moulberry/master'
Diffstat (limited to 'src/main/java/io')
29 files changed, 766 insertions, 354 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java index 48cd0e57..e0a36686 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java @@ -966,21 +966,6 @@ public class NEUEventListener { GuiChest eventGui = (GuiChest) guiScreen; ContainerChest cc = (ContainerChest) eventGui.inventorySlots; containerName = cc.getLowerChestInventory().getDisplayName().getUnformattedText(); - if(containerName.contains(" Profile") && cc.inventorySlots.size() >= 54){ - if(cc.inventorySlots.get(22).getStack() != null && cc.inventorySlots.get(22).getStack().getTagCompound() != null){ - NBTTagCompound tag = eventGui.inventorySlots.inventorySlots.get(22).getStack().getTagCompound(); - if(tag.hasKey("SkullOwner") && tag.getCompoundTag("SkullOwner").hasKey("Name")){ - String tagName = tag.getCompoundTag("SkullOwner").getString("Name"); - String displayname = Utils.cleanColour(cc.inventorySlots.get(22).getStack().getDisplayName()); - if(tagName.equals(displayname.substring(displayname.length()-tagName.length()))){ - Slot slot = new Slot(cc.getLowerChestInventory(), 42, cc.inventorySlots.get(42).xDisplayPosition, cc.inventorySlots.get(42).yDisplayPosition); - slot.putStack(Utils.createItemStack(Item.getItemFromBlock(Blocks.command_block), EnumChatFormatting.GREEN + "Profile Viewer", - EnumChatFormatting.YELLOW + "Click to open NEU profile viewer!")); - cc.inventorySlots.set(42, slot); - } - } - } - } } if(GuiCustomEnchant.getInstance().shouldOverride(containerName)) { @@ -1199,6 +1184,10 @@ public class NEUEventListener { } } if(!hoveringButton) buttonHovered = null; + + if(AuctionBINWarning.getInstance().shouldShow()) { + AuctionBINWarning.getInstance().render(); + } } private void renderDungeonChestOverlay(GuiScreen gui) { @@ -1408,6 +1397,18 @@ public class NEUEventListener { return; } + final ScaledResolution scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); + final int scaledWidth = scaledresolution.getScaledWidth(); + final int scaledHeight = scaledresolution.getScaledHeight(); + int mouseX = Mouse.getX() * scaledWidth / Minecraft.getMinecraft().displayWidth; + int mouseY = scaledHeight - Mouse.getY() * scaledHeight / Minecraft.getMinecraft().displayHeight - 1; + + if(AuctionBINWarning.getInstance().shouldShow()) { + AuctionBINWarning.getInstance().mouseInput(mouseX, mouseY); + event.setCanceled(true); + return; + } + if(!event.isCanceled()) { Utils.scrollTooltip(Mouse.getEventDWheel()); } @@ -1422,20 +1423,14 @@ public class NEUEventListener { return; } - final ScaledResolution scaledresolution = new ScaledResolution(Minecraft.getMinecraft()); - final int scaledWidth = scaledresolution.getScaledWidth(); - final int scaledHeight = scaledresolution.getScaledHeight(); - int mouseX = Mouse.getX() * scaledWidth / Minecraft.getMinecraft().displayWidth; - int mouseY = scaledHeight - Mouse.getY() * scaledHeight / Minecraft.getMinecraft().displayHeight - 1; - String containerName = null; GuiScreen guiScreen = Minecraft.getMinecraft().currentScreen; if(guiScreen instanceof GuiChest) { GuiChest eventGui = (GuiChest) guiScreen; ContainerChest cc = (ContainerChest) eventGui.inventorySlots; containerName = cc.getLowerChestInventory().getDisplayName().getUnformattedText(); - if(containerName.contains(" Profile") && eventGui.getSlotUnderMouse() != null && - eventGui.getSlotUnderMouse().getSlotIndex() == 42 && Mouse.getEventButton() >= 0) { + if(containerName.contains(" Profile") && eventGui.isMouseOverSlot(cc.inventorySlots.get(42), mouseX, mouseY) + && Mouse.getEventButton() >= 0) { event.setCanceled(true); if(Mouse.getEventButtonState() && eventGui.inventorySlots.inventorySlots.get(22).getStack() != null && eventGui.inventorySlots.inventorySlots.get(22).getStack().getTagCompound() != null){ @@ -1547,6 +1542,12 @@ public class NEUEventListener { */ @SubscribeEvent public void onGuiScreenKeyboard(GuiScreenEvent.KeyboardInputEvent.Pre event) { + if(AuctionBINWarning.getInstance().shouldShow()) { + AuctionBINWarning.getInstance().keyboardInput(); + event.setCanceled(true); + return; + } + if(AuctionSearchOverlay.shouldReplace()) { AuctionSearchOverlay.keyEvent(); event.setCanceled(true); @@ -1846,7 +1847,6 @@ public class NEUEventListener { int index = 0; List<String> newTooltip = new ArrayList<>(); - for(String line : event.toolTip) { if(line.endsWith(EnumChatFormatting.DARK_GRAY+"Reforge Stone") && NotEnoughUpdates.INSTANCE.config.tooltipTweaks.showReforgeStats) { JsonObject reforgeStones = Constants.REFORGESTONES; @@ -2394,7 +2394,6 @@ public class NEUEventListener { private void onItemToolTipInternalNameNull(ItemTooltipEvent event){ petToolTipXPExtendPetMenu(event); - } private List<String> petToolTipXPExtend(ItemTooltipEvent event) { @@ -2407,7 +2406,6 @@ public class NEUEventListener { } //7 is just a random number i chose, prob no pets with less lines than 7 if (event.toolTip.size() > 7) { - if (Utils.cleanColour(event.toolTip.get(1)).matches("((Farming)|(Combat)|(Fishing)|(Mining)|(Foraging)|(Enchanting)|(Alchemy)) ((Mount)|(Pet)).*")) { GuiProfileViewer.PetLevel petlevel = null; @@ -2427,8 +2425,6 @@ public class NEUEventListener { } } - - if (petlevel != null) { tooltipText.add(""); if(petlevel.totalXp > petlevel.maxXP) { @@ -2437,7 +2433,8 @@ public class NEUEventListener { tooltipText.add(EnumChatFormatting.GRAY+"Progress to Level "+(int)Math.floor(petlevel.level+1)+": "+EnumChatFormatting.YELLOW+Utils.round(petlevel.levelPercentage*100, 1)+"%"); int levelpercentage = Math.round(petlevel.levelPercentage*20); tooltipText.add(EnumChatFormatting.DARK_GREEN+String.join("", Collections.nCopies(levelpercentage, "-"))+EnumChatFormatting.WHITE+String.join("", Collections.nCopies(20-levelpercentage, "-"))); - tooltipText.add(EnumChatFormatting.YELLOW + "" + myFormatter.format(petlevel.levelXp) + "/" + myFormatter.format(petlevel.currentLevelRequirement) + " EXP"); + tooltipText.add(EnumChatFormatting.GRAY + "EXP: " + EnumChatFormatting.YELLOW + myFormatter.format(petlevel.levelXp) + + EnumChatFormatting.GOLD + "/" + EnumChatFormatting.YELLOW + myFormatter.format(petlevel.currentLevelRequirement) + " EXP"); } } } @@ -2446,9 +2443,7 @@ public class NEUEventListener { return tooltipText; } - private void petToolTipXPExtendPetMenu(ItemTooltipEvent event) { - if (NotEnoughUpdates.INSTANCE.config.tooltipTweaks.petExtendExp) { //7 is just a random number i chose, prob no pets with less lines than 7 if (event.toolTip.size() > 7) { @@ -2477,7 +2472,8 @@ public class NEUEventListener { return; } - event.toolTip.add(xpLine+1, EnumChatFormatting.YELLOW + "" + myFormatter.format(petlevel.levelXp) + "/" + myFormatter.format(petlevel.currentLevelRequirement) + " EXP"); + event.toolTip.add(xpLine+1, EnumChatFormatting.GRAY + "EXP: " + EnumChatFormatting.YELLOW + myFormatter.format(petlevel.levelXp) + + EnumChatFormatting.GOLD + "/" + EnumChatFormatting.YELLOW + myFormatter.format(petlevel.currentLevelRequirement)); } } @@ -2486,9 +2482,6 @@ public class NEUEventListener { DecimalFormat myFormatter = new DecimalFormat("###,###.###"); - - - /** * This makes it so that holding LCONTROL while hovering over an item with NBT will show the NBT of the item. * @param event @@ -2496,14 +2489,14 @@ public class NEUEventListener { @SubscribeEvent public void onItemTooltip(ItemTooltipEvent event) { if(!neu.isOnSkyblock()) return; - if(NotEnoughUpdates.INSTANCE.config.improvedSBMenu.hideEmptyPanes && + /*if(NotEnoughUpdates.INSTANCE.config.improvedSBMenu.hideEmptyPanes && event.itemStack.getItem().equals(Item.getItemFromBlock(Blocks.stained_glass_pane))) { String first = Utils.cleanColour(event.toolTip.get(0)); first = first.replaceAll("\\(.*\\)", "").trim(); if(first.length() == 0) { event.toolTip.clear(); } - } + }*/ //AH prices /*if(Minecraft.getMinecraft().currentScreen != null) { if(Minecraft.getMinecraft().currentScreen instanceof GuiChest) { diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java index 1c6ae7f7..080353a7 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java @@ -329,7 +329,7 @@ public class NEUOverlay extends Gui { return; } if(Mouse.getEventButtonState()) { - NotEnoughUpdates.INSTANCE.openGui = new GuiScreenElementWrapper(new NEUConfigEditor(NotEnoughUpdates.INSTANCE.config)); + NotEnoughUpdates.INSTANCE.openGui = new GuiScreenElementWrapper(NEUConfigEditor.editor); } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java index 38c46415..5eb0f861 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java @@ -1157,7 +1157,7 @@ public class NotEnoughUpdates { if(args.length > 0) { openGui = new GuiScreenElementWrapper(new NEUConfigEditor(config, StringUtils.join(args, " "))); } else { - openGui = new GuiScreenElementWrapper(new NEUConfigEditor(config)); + openGui = new GuiScreenElementWrapper(NEUConfigEditor.editor); } } }; diff --git a/src/main/java/io/github/moulberry/notenoughupdates/cosmetics/NEUCape.java b/src/main/java/io/github/moulberry/notenoughupdates/cosmetics/NEUCape.java index 6011f0ac..3b0e0928 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/cosmetics/NEUCape.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/cosmetics/NEUCape.java @@ -95,8 +95,6 @@ public class NEUCape { if(defaultBehaviour){ this.capeName = capeName; - - if (capeName.equalsIgnoreCase("fade")) { shaderName = "fade_cape"; } else if (capeName.equalsIgnoreCase("space")) { @@ -125,26 +123,6 @@ public class NEUCape { ResourceLocation staticCapeTex = new ResourceLocation("notenoughupdates:capes/" + capeName + ".png"); capeTextures = new ResourceLocation[1]; capeTextures[0] = staticCapeTex; - - /*if(rlExists(staticCapeTex)) { - capeTextures = new ResourceLocation[1]; - capeTextures[0] = staticCapeTex; - } else { - List<ResourceLocation> texs = new ArrayList<>(); - for(int i=0; i<99; i++) { - ResourceLocation frame = new ResourceLocation( - "notenoughupdates:capes/"+capeName+"/"+capeName+"_"+String.format("%02d", i)+".png"); - if(rlExists(frame)) { - texs.add(frame); - } else { - break; - } - } - capeTextures = new ResourceLocation[texs.size()]; - for(int i=0; i<texs.size(); i++) { - capeTextures[i] = texs.get(i); - } - }*/ } private void bindTexture() { diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionBINWarning.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionBINWarning.java new file mode 100644 index 00000000..fc2eaf61 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionBINWarning.java @@ -0,0 +1,243 @@ +package io.github.moulberry.notenoughupdates.miscfeatures; + +import com.google.gson.JsonObject; +import io.github.moulberry.notenoughupdates.NotEnoughUpdates; +import io.github.moulberry.notenoughupdates.core.GuiElement; +import io.github.moulberry.notenoughupdates.core.util.render.RenderUtils; +import io.github.moulberry.notenoughupdates.core.util.render.TextRenderUtils; +import io.github.moulberry.notenoughupdates.util.SBInfo; +import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class AuctionBINWarning extends GuiElement { + + private static final AuctionBINWarning INSTANCE = new AuctionBINWarning(); + public static AuctionBINWarning getInstance() { + return INSTANCE; + } + + private static final Pattern ITEM_PRICE_REGEX = Pattern.compile("\u00a7fItem price: \u00a76([0-9,]+) coins"); + + private boolean showWarning = false; + private List<String> sellingTooltip; + private String sellingName; + private int sellingPrice; + private int lowestPrice; + + private boolean shouldPerformCheck() { + if(!NotEnoughUpdates.INSTANCE.config.ahTweaks.enableBINWarning || + !NotEnoughUpdates.INSTANCE.hasSkyblockScoreboard()) { + sellingTooltip = null; + showWarning = false; + return false; + } + + if(Minecraft.getMinecraft().currentScreen instanceof GuiChest && + SBInfo.getInstance().lastOpenContainerName.startsWith("Create BIN Auction")) { + return true; + } else { + sellingTooltip = null; + showWarning = false; + return false; + } + } + + public boolean shouldShow() { + return shouldPerformCheck() && showWarning; + } + + public boolean onMouseClick(Slot slotIn, int slotId, int clickedButton, int clickType) { + if(!shouldPerformCheck()) return false; + + if(slotId == 29) { + GuiChest chest = (GuiChest) Minecraft.getMinecraft().currentScreen; + + sellingPrice = -1; + + ItemStack priceStack = chest.inventorySlots.getSlot(31).getStack(); + if(priceStack != null) { + String displayName = priceStack.getDisplayName(); + Matcher priceMatcher = ITEM_PRICE_REGEX.matcher(displayName); + + if(priceMatcher.matches()) { + try { + sellingPrice = Integer.parseInt(priceMatcher.group(1).replace(",", "")); + } catch(NumberFormatException ignored) { + } + } + } + + ItemStack sellStack = chest.inventorySlots.getSlot(13).getStack(); + String internalname = NotEnoughUpdates.INSTANCE.manager.getInternalNameForItem(sellStack); + + if(internalname == null) { + return false; + } + + JsonObject itemInfo = NotEnoughUpdates.INSTANCE.manager.getItemInformation().get(internalname); + if(itemInfo == null || !itemInfo.has("displayname")) { + sellingName = internalname; + } else { + sellingName = itemInfo.get("displayname").getAsString(); + } + + sellingTooltip = sellStack.getTooltip(Minecraft.getMinecraft().thePlayer, + Minecraft.getMinecraft().gameSettings.advancedItemTooltips); + + lowestPrice = NotEnoughUpdates.INSTANCE.manager.auctionManager.getLowestBin(internalname); + if(lowestPrice <= 0) { + lowestPrice = (int)NotEnoughUpdates.INSTANCE.manager.auctionManager.getItemAvgBin(internalname); + } + + //TODO: Add option for warning if lowest price does not exist + + float factor = 1 - NotEnoughUpdates.INSTANCE.config.ahTweaks.warningThreshold/100; + if(factor < 0) factor = 0; + if(factor > 1) factor = 1; + + if(sellingPrice > 0 && lowestPrice > 0 && sellingPrice < lowestPrice*factor) { + showWarning = true; + return true; + } else { + return false; + } + } + return false; + } + + public void overrideIsMouseOverSlot(Slot slot, int mouseX, int mouseY, CallbackInfoReturnable<Boolean> cir) { + if(shouldShow()) { + cir.setReturnValue(false); + } + } + + @Override + public void render() { + final ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); + final int width = scaledResolution.getScaledWidth(); + final int height = scaledResolution.getScaledHeight(); + + GlStateManager.disableLighting(); + + GlStateManager.pushMatrix(); + GlStateManager.translate(0, 0, 500); + + Gui.drawRect(0, 0, width, height, 0x80000000); + + RenderUtils.drawFloatingRectDark(width/2-90, height/2-45, 180, 90); + + int neuLength = Minecraft.getMinecraft().fontRendererObj.getStringWidth("\u00a7lNEU"); + Minecraft.getMinecraft().fontRendererObj.drawString("\u00a7lNEU", width/2+90-neuLength-3, height/2-45+4, 0xff000000); + + TextRenderUtils.drawStringCenteredScaledMaxWidth("Are you SURE?", Minecraft.getMinecraft().fontRendererObj, + width/2, height/2-45+10, false, 170, 0xffff4040); + + String lowestPriceStr; + if(lowestPrice > 999) { + lowestPriceStr = Utils.shortNumberFormat(lowestPrice, 0); + } else { + lowestPriceStr = ""+lowestPrice; + } + + String sellingPriceStr; + if(sellingPrice > 999) { + sellingPriceStr = Utils.shortNumberFormat(sellingPrice, 0); + } else { + sellingPriceStr = ""+sellingPrice; + } + + String sellLine = "\u00a77[ \u00a7r"+sellingName+"\u00a77 ]"; + + TextRenderUtils.drawStringCenteredScaledMaxWidth(sellLine, Minecraft.getMinecraft().fontRendererObj, + width/2, height/2-45+25, false, 170, 0xffffffff); + TextRenderUtils.drawStringCenteredScaledMaxWidth("has a lowest BIN of \u00a76"+lowestPriceStr+"\u00a7r coins", Minecraft.getMinecraft().fontRendererObj, + width/2, height/2-45+34, false, 170, 0xffa0a0a0); + + int buyPercentage = 100 - sellingPrice*100/lowestPrice; + if(buyPercentage <= 0) buyPercentage = 1; + + TextRenderUtils.drawStringCenteredScaledMaxWidth("Continue selling it for", Minecraft.getMinecraft().fontRendererObj, + width/2, height/2-45+50, false, 170, 0xffa0a0a0); + TextRenderUtils.drawStringCenteredScaledMaxWidth("\u00a76"+sellingPriceStr+"\u00a7r coins? (\u00a7c-"+buyPercentage+"%\u00a7r)", + Minecraft.getMinecraft().fontRendererObj, + width/2, height/2-45+59, false, 170, 0xffa0a0a0); + + RenderUtils.drawFloatingRectDark(width/2-43, height/2+23, 40, 16, false); + RenderUtils.drawFloatingRectDark(width/2+3, height/2+23, 40, 16, false); + + TextRenderUtils.drawStringCenteredScaledMaxWidth(EnumChatFormatting.GREEN+"[Y]es", Minecraft.getMinecraft().fontRendererObj, + width/2-23, height/2+31, true, 36, 0xff00ff00); + TextRenderUtils.drawStringCenteredScaledMaxWidth(EnumChatFormatting.RED+"[n]o", Minecraft.getMinecraft().fontRendererObj, + width/2+23, height/2+31, true, 36, 0xffff0000); + + if(sellingTooltip != null) { + int mouseX = Mouse.getX() * width / Minecraft.getMinecraft().displayWidth; + int mouseY = height - Mouse.getY() * height / Minecraft.getMinecraft().displayHeight - 1; + + int sellLineLength = Minecraft.getMinecraft().fontRendererObj.getStringWidth(sellLine); + + if(mouseX >= width/2-sellLineLength/2 && mouseX <= width/2+sellLineLength/2 && + mouseY >= height/2-45+20 && mouseY <= height/2-45+30) { + Utils.drawHoveringText(sellingTooltip, mouseX, mouseY, width, height, -1, Minecraft.getMinecraft().fontRendererObj); + } + } + + GlStateManager.popMatrix(); + } + + @Override + public boolean mouseInput(int mouseX, int mouseY) { + final ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); + final int width = scaledResolution.getScaledWidth(); + final int height = scaledResolution.getScaledHeight(); + + if(Mouse.getEventButtonState()) { + if(mouseY >= height/2+23 && mouseY <= height/2+23+16) { + if(mouseX >= width/2-43 && mouseX <= width/2-3) { + GuiChest chest = (GuiChest) Minecraft.getMinecraft().currentScreen; + Minecraft.getMinecraft().playerController.windowClick(chest.inventorySlots.windowId, + 29, 0, 0, Minecraft.getMinecraft().thePlayer); + showWarning = false; + } else { + showWarning = false; + } + } + + if(mouseX < width/2-90 || mouseX > width/2+90 || + mouseY < height/2-45 || mouseY > height/2+45) { + showWarning = false; + } + } + + return false; + } + + @Override + public boolean keyboardInput() { + if(!Keyboard.getEventKeyState()) { + if(Keyboard.getEventKey() == Keyboard.KEY_Y || Keyboard.getEventKey() == Keyboard.KEY_RETURN) { + GuiChest chest = (GuiChest) Minecraft.getMinecraft().currentScreen; + Minecraft.getMinecraft().playerController.windowClick(chest.inventorySlots.windowId, + 29, 0, 0, Minecraft.getMinecraft().thePlayer); + } + showWarning = false; + } + + return false; + } + +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionSortModeWarning.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionSortModeWarning.java new file mode 100644 index 00000000..3002bce0 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionSortModeWarning.java @@ -0,0 +1,75 @@ +package io.github.moulberry.notenoughupdates.miscfeatures; + +import io.github.moulberry.notenoughupdates.NotEnoughUpdates; +import io.github.moulberry.notenoughupdates.core.util.render.RenderUtils; +import io.github.moulberry.notenoughupdates.core.util.render.TextRenderUtils; +import io.github.moulberry.notenoughupdates.util.SBInfo; +import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +import java.util.List; + +public class AuctionSortModeWarning { |
