aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorDoKM <mcazzyman@gmail.com>2021-09-02 14:03:14 +0200
committerDoKM <mcazzyman@gmail.com>2021-09-02 14:03:14 +0200
commit74db72ad590c74b040d0800d411c4e1f1270a09a (patch)
tree8ebf9cdf596fae2ec6b149826475d1d84de9ec3a /src/main/java
parent05d6207281e18980b8a28046621c741fa81c1606 (diff)
parent8eee6262a6e2c372240331f3c43c2279bd18539e (diff)
downloadNotEnoughUpdates-74db72ad590c74b040d0800d411c4e1f1270a09a.tar.gz
NotEnoughUpdates-74db72ad590c74b040d0800d411c4e1f1270a09a.tar.bz2
NotEnoughUpdates-74db72ad590c74b040d0800d411c4e1f1270a09a.zip
Merge remote-tracking branch 'Moulberry/master'
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java67
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/cosmetics/NEUCape.java22
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionBINWarning.java243
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionSortModeWarning.java75
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/BetterContainers.java27
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/FlyFix.java74
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiCustomEnchant.java121
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiEnchantColour.java124
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/GuiInvButtonEditor.java39
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinGuiContainer.java92
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinNetHandlerPlayClient.java5
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/NEUConfig.java14
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/NEUConfigEditor.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/AHTweaks.java97
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/AuctionHouseSearch.java40
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Enchanting.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ItemOverlays.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/MiscOverlays.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/SlotLocking.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TooltipTweaks.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/AuctionSearchOverlay.java16
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/BonemerangOverlay.java11
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/OverlayManager.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/TimersOverlay.java5
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java6
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/SBInfo.java11
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/XPInformation.java3
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.noteno