diff options
author | hannibal2 <24389977+hannibal002@users.noreply.github.com> | 2023-01-21 03:06:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-21 13:06:42 +1100 |
commit | 239fdf3f8035ea0a6f4f805451be3b9070d5a952 (patch) | |
tree | e63521a18e649ecf2dd8c7f40caa49402e195d2f | |
parent | 25817b279a5e7342fc42e19a9977d41396c55602 (diff) | |
download | NotEnoughUpdates-239fdf3f8035ea0a6f4f805451be3b9070d5a952.tar.gz NotEnoughUpdates-239fdf3f8035ea0a6f4f805451be3b9070d5a952.tar.bz2 NotEnoughUpdates-239fdf3f8035ea0a6f4f805451be3b9070d5a952.zip |
Want to Complete Commission Tasks Like a Pro? This Feature is a Must-Have (#517)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
-rw-r--r-- | src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Mining.java | 21 | ||||
-rw-r--r-- | src/main/java/io/github/moulberry/notenoughupdates/overlays/MiningOverlay.java | 121 |
2 files changed, 127 insertions, 15 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Mining.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Mining.java index 797083b5..74400f59 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Mining.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Mining.java @@ -233,12 +233,31 @@ public class Mining { @ConfigOption( name = "Star Cult Tab", desc = "Only show the star cult timer when tab list is open\n" + - "\u00A7cThis only works outside of Dwarven Caves!" + "§cThis only works outside of Dwarven Caves!" ) @ConfigEditorBoolean @ConfigAccordionId(id = 2) public boolean starCultDisplayOnlyShowTab = false; + @Expose + @ConfigOption( + name = "Commission Task Tips", + desc = "Show tips to help complete commission tasks" + ) + @ConfigEditorDropdown( + values = {"Off", "Only while sneaking", "Always"} + ) + @ConfigAccordionId(id = 2) + public int commissionTaskTips = 0; + + @Expose + @ConfigOption( + name = "Tips in New Line", + desc = "Show the Commission Task Tips in the next line.") + @ConfigEditorBoolean + @ConfigAccordionId(id = 2) + public boolean commissionTaskTipNewLine = true; + @ConfigOption( name = "Metal Detector Solver", desc = "" diff --git a/src/main/java/io/github/moulberry/notenoughupdates/overlays/MiningOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/overlays/MiningOverlay.java index f25407b6..ea253e94 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/overlays/MiningOverlay.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/overlays/MiningOverlay.java @@ -31,7 +31,6 @@ import io.github.moulberry.notenoughupdates.util.StarCultCalculator; import io.github.moulberry.notenoughupdates.util.TabListUtils; import io.github.moulberry.notenoughupdates.util.Utils; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiChat; import net.minecraft.client.gui.inventory.GuiChest; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.init.Items; @@ -39,10 +38,6 @@ import net.minecraft.inventory.ContainerChest; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.WorldSettings; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import org.lwjgl.input.Keyboard; import org.lwjgl.util.vector.Vector2f; import java.util.ArrayList; @@ -379,22 +374,35 @@ public class MiningOverlay extends TextTabOverlay { } else if (entry.getValue() >= 0.25) { col = GOLD; } + String tips = getTipPart(entry.getKey()); + boolean newLine = NotEnoughUpdates.INSTANCE.config.mining.commissionTaskTipNewLine; + String newLineTip = null; + if (newLine) { + if (!tips.isEmpty()) { + newLineTip = " " + tips; + tips = ""; + } + } NEUConfig.HiddenLocationSpecific locationSpecific = NotEnoughUpdates.INSTANCE.config.getLocationSpecific(); int max; if (-1 != (max = locationSpecific.commissionMaxes.getOrDefault(entry.getKey(), -1))) { commissionsStrings.add( - DARK_AQUA + entry.getKey() + ": " + col + Math.round(entry.getValue() * max) + "/" + max); + DARK_AQUA + entry.getKey() + ": " + col + Math.round(entry.getValue() * max) + "/" + max + tips); } else { String valS = Utils.floatToString(entry.getValue() * 100, 1); - commissionsStrings.add(DARK_AQUA + entry.getKey() + ": " + col + valS + "%"); + commissionsStrings.add(DARK_AQUA + entry.getKey() + ": " + col + valS + "%" + tips); + } + if (newLineTip != null) { + commissionsStrings.add(newLineTip); } } } if (ItemCooldowns.firstLoadMillis > 0) { //set cooldown on first skyblock load. - ItemCooldowns.pickaxeUseCooldownMillisRemaining = 60 * 1000 - (System.currentTimeMillis() - ItemCooldowns.firstLoadMillis); + ItemCooldowns.pickaxeUseCooldownMillisRemaining = + 60 * 1000 - (System.currentTimeMillis() - ItemCooldowns.firstLoadMillis); ItemCooldowns.firstLoadMillis = 0; } @@ -449,7 +457,7 @@ public class MiningOverlay extends TextTabOverlay { } if (starCultDisplay) { - if(overlayStrings == null) overlayStrings = new ArrayList<>(); + if (overlayStrings == null) overlayStrings = new ArrayList<>(); if (!NotEnoughUpdates.INSTANCE.config.mining.starCultDisplayOnlyShowTab || lastTabState) { @@ -467,7 +475,7 @@ public class MiningOverlay extends TextTabOverlay { } if (forgeDisplay) { - if(overlayStrings == null) overlayStrings = new ArrayList<>(); + if (overlayStrings == null) overlayStrings = new ArrayList<>(); if (!NotEnoughUpdates.INSTANCE.config.mining.forgeDisplayOnlyShowTab || lastTabState) { @@ -484,14 +492,97 @@ public class MiningOverlay extends TextTabOverlay { if (overlayStrings != null && overlayStrings.isEmpty()) overlayStrings = null; } + private String getTipPart(String name) { + int settings = NotEnoughUpdates.INSTANCE.config.mining.commissionTaskTips; + if (settings == 0) return ""; + + if (!Minecraft.getMinecraft().thePlayer.isSneaking() && settings == 1) return ""; + + String tip = getTip(name); + if (tip == null) return " §4???"; + + return " §8§l>§7 " + tip; + } + + private String getTip(String name) { + if (SBInfo.getInstance().getLocation().equals("mining_3")) { // Dwarven Mines + if (name.equals("First Event")) return "Participate in any §6Mining Event"; + + // During Event + if (name.equals("Lucky Raffle")) return "Collect 20 Raffle Tickets during §6Raffle Event"; + if (name.equals("Goblin Raid Slayer")) return "Kill 20 Goblins during §6Goblin Raid Event"; + if (name.equals("Raffle")) return "Participate in §6Raffle Event"; + if (name.equals("Goblin Raid")) return "Participate in §6Goblin Raid event"; + if (name.equals("2x Mithril Powder Collector")) return "Collect 500 Mithril Powder during §62x Powder event"; + + // Slay + if (name.equals("Ice Walker Slayer")) return "Kill 50 Ice Walkers §b(Great Ice Wall)"; + if (name.equals("Goblin Slayer")) return "Kill 100 Goblins §b(Goblin Borrows)"; + if (name.equals("Golden Goblin Slayer")) return "Kill 1 Golden Goblin (anywhere)"; + if (name.equals("Star Sentry Puncher")) return "Damage Star Sentries 10 times (anywhere)"; + + // Mining + if (name.equals("Mithril Miner")) return "Break 500 Mithril (anywhere)"; + if (name.equals("Titanium Miner")) return "Break 15 Titanium (anywhere)"; + + if (name.equals("Cliffside Veins Mithril")) return "Break 350 Mithril §b(Cliffside Veins)"; + if (name.equals("Royal Mines Mithril")) return "Break 350 Mithril §b(Royal Mines)"; + if (name.equals("Lava Springs Mithril")) return "Break 350 Mithril §b(Lava Springs)"; + if (name.equals("Rampart's Quarry Mithril")) return "Break 350 Mithril §b(Rampart's Quarry)"; + if (name.equals("Upper Mines Mithril")) return "Break 350 Mithril §b(Upper Mines)"; + + if (name.equals("Cliffside Veins Titanium")) return "Break 10 Titanium §b(Cliffside Veins)"; + if (name.equals("Lava Springs Titanium")) return "Break 10 Titanium §b(Lava Springs)"; + if (name.equals("Royal Mines Titanium")) return "Break 10 Titanium §b(Royal Mines)"; + if (name.equals("Rampart's Quarry Titanium")) return "Break 10 Titanium §b(Rampart's Quarry)"; + if (name.equals("Upper Mines Titanium")) return "Break 10 Titanium §b(Upper Mines)"; + + } else if (SBInfo.getInstance().getLocation().equals("crystal_hollows")) { // Crystal Hollows + if (name.equals("Chest Looter")) return "Open 3 chests"; + if (name.equals("Hard Stone Miner")) return "Break 1,000 Hard Stone"; + + String jungle = " §a(Jungle)"; + String goblin = " §6(Golbin Holdout)"; + String mithril = " §b(Mithril Deposits)"; + String precursor = " §8(Precursor Remenants)"; + String magma = " §c(Magma Fields)"; + + if (name.equals("Goblin Slayer")) return "Kill 13 Goblins" + goblin; + if (name.equals("Sludge Slayer")) return "Kill 25 Sludges" + jungle; + if (name.equals("Thyst Slayer")) return "Kill 5 Thysts, when breaking Amethysts" + jungle; + if (name.equals("Boss Corleone Slayer")) return "Find and kill Corleone" + mithril; + if (name.equals("Yog Slayer")) return "Kill 13 Yogs" + magma; + if (name.equals("Automaton Slayer")) return "Kill 13 Automatons" + precursor; + if (name.equals("Team Treasurite Member Slayer")) return "Kill 13 Team Treasurite Members" + mithril; + + if (name.endsWith("Crystal Hunter")) { + if (name.startsWith("Amethyst")) return "Temple Jump & Run" + jungle; + if (name.startsWith("Jade")) return "4 weapons from Mines of Divan" + mithril; + if (name.startsWith("Amber")) return "King and Queen" + goblin; + if (name.startsWith("Sapphire")) return "6 Robot Parts in Precursor City" + precursor; + if (name.startsWith("Topaz")) return "Kill Bal" + magma; + } + + if (name.endsWith("Gemstone Collector")) { + if (name.startsWith("Amber")) return "Break orange glass" + goblin; + if (name.startsWith("Sapphire")) return "Break blue glass" + precursor; + if (name.startsWith("Jade")) return "Break green glass" + mithril; + if (name.startsWith("Amethyst")) return "Break purple glass" + jungle; + if (name.startsWith("Ruby")) return "Break red glass (anywhere)"; + if (name.startsWith("Topaz")) return "Break yellow glass" + magma; + } + } + + return null; + } + private static List<String> getForgeStrings(List<ForgeItem> forgeItems) { List<String> forgeString = new ArrayList<>(); long currentTimeMillis = System.currentTimeMillis(); forgeIDLabel: for (int i = 0; i < 5; i++) { - for (ForgeItem forgeItem : forgeItems) { - if (forgeItem.forgeID == i) { - ForgeItem item = forgeItem; + for (ForgeItem item : forgeItems) { + if (item.forgeID == i) { if (NotEnoughUpdates.INSTANCE.config.mining.forgeDisplay == 0) { if (item.status == 2 && item.finishTime < currentTimeMillis) { @@ -541,7 +632,6 @@ public class MiningOverlay extends TextTabOverlay { } } forgeItems.add(item); - return; } public static class ForgeItem { @@ -617,6 +707,9 @@ public class MiningOverlay extends TextTabOverlay { if (!NotEnoughUpdates.INSTANCE.config.mining.dwarvenOverlayIcons) return; GlStateManager.enableDepth(); + // No icon for the tip line + if (line.contains(">")) return; + ItemStack icon = null; String cleaned = Utils.cleanColour(line); String beforeColon = cleaned.split(":")[0]; |