package at.hannibal2.skyhanni.config.features; import at.hannibal2.skyhanni.config.FeatureToggle; import at.hannibal2.skyhanni.config.core.config.Position; import at.hannibal2.skyhanni.features.misc.ghostcounter.GhostFormatting; import at.hannibal2.skyhanni.features.misc.ghostcounter.GhostUtil; import com.google.gson.annotations.Expose; import io.github.moulberry.moulconfig.annotations.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class GhostCounterConfig { @Expose @ConfigOption(name = "Enabled", desc = "Enable ghost counter.") @ConfigEditorBoolean @FeatureToggle public boolean enabled = true; @Expose @ConfigOption( name = "Display Text", desc = "Drag text to change the appearance of the overlay." ) @ConfigEditorDraggableList( exampleText = { "§6Ghosts Counter", " §bGhost Killed: 42", " §bSorrow: 6", " §bGhost since Sorrow: 1", " §bGhosts/Sorrow: 5", " §bVolta: 6", " §bPlasma: 8", " §bGhostly Boots: 1", " §bBag Of Cash: 4", " §bAvg Magic Find: 271", " §bScavenger Coins: 15,000", " §bKill Combo: 14", " §bHighest Kill Combo: 96", " §bSkill XP Gained: 145,648", " §bBestiary 1: 0/10", " §bXP/h: 810,410", " §bKills/h: 420", " §bETA: 14d", " §bMoney/h: 13,420,069", " §bMoney made: 14B" } ) public List ghostDisplayText = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 9, 10, 11, 12)); @ConfigOption(name = "Text Formatting", desc = "") @Accordion @Expose public TextFormatting textFormatting = new TextFormatting(); public static class TextFormatting { @ConfigOption(name = "§eText Formatting Info", desc = "§e%session% §ris §e§lalways §rreplaced with\n" + "§7the count for your current session.\n" + "§7Reset when restarting the game.\n" + "§7You can use §e&Z §7color code to use SBA chroma") @ConfigEditorInfoText public boolean formatInfo = false; @ConfigOption(name = "Reset Formatting", desc = "Reset formatting to default text.") @ConfigEditorButton(buttonText = "Reset") public Runnable resetFormatting = GhostFormatting.INSTANCE::reset; @ConfigOption(name = "Export Formatting", desc = "Export current formatting to clipboard.") @ConfigEditorButton(buttonText = "Export") public Runnable exportFormatting = GhostFormatting.INSTANCE::export; @ConfigOption(name = "Import Formatting", desc = "Import formatting from clipboard.") @ConfigEditorButton(buttonText = "Import") public Runnable importFormatting = GhostFormatting.INSTANCE::importFormat; @Expose @ConfigOption(name = "Title", desc = "Title Line.") @ConfigEditorText public String titleFormat = "&6Ghost Counter"; @Expose @ConfigOption(name = "Ghost Killed", desc = "Ghost Killed line.\n§e%value% §ris replaced with\n" + "Ghost Killed.\n" + "§e%session% §7is replaced with Ghost killed") @ConfigEditorText public String ghostKilledFormat = " &6Ghost Killed: &b%value% &7(%session%)"; @Expose @ConfigOption(name = "Sorrows", desc = "Sorrows drop line.\n" + "§e%value% §7is replaced with\nsorrows dropped.") @ConfigEditorText public String sorrowsFormat = " &6Sorrow: &b%value% &7(%session%)"; @Expose @ConfigOption(name = "Ghost Since Sorrow", desc = "Ghost Since Sorrow line.\n" + "§e%value% §7is replaced with\nGhost since last sorrow drop.") @ConfigEditorText public String ghostSinceSorrowFormat = " &6Ghost since Sorrow: &b%value%"; @Expose @ConfigOption(name = "Ghost Kill Per Sorrow", desc = "Ghost Kill Per Sorrow line.\n" + "§e%value% §7is replaced with\naverage ghost kill per sorrow drop.") @ConfigEditorText public String ghostKillPerSorrowFormat = " &6Ghosts/Sorrow: &b%value%"; @Expose @ConfigOption(name = "Voltas", desc = "Voltas drop line.\n" + "§e%value% §7is replaced with\nvoltas dropped.") @ConfigEditorText public String voltasFormat = " &6Voltas: &b%value% &7(%session%)"; @Expose @ConfigOption(name = "Plasmas", desc = "Plasmas drop line.\n" + "§e%value% §7is replaced with\nplasmas dropped.") @ConfigEditorText public String plasmasFormat = " &6Plasmas: &b%value% &7(%session%)"; @Expose @ConfigOption(name = "Ghostly Boots", desc = "Ghostly Boots drop line.\n" + "§e%value% §7is replaced with\nGhostly Boots dropped.") @ConfigEditorText public String ghostlyBootsFormat = " &6Ghostly Boots: &b%value% &7(%session%)"; @Expose @ConfigOption(name = "Bag Of Cash", desc = "Bag Of Cash drop line.\n" + "§e%value% §7is replaced with\nBag Of Cash dropped.") @ConfigEditorText public String bagOfCashFormat = " &6Bag Of Cash: &b%value% &7(%session%)"; @Expose @ConfigOption(name = "Average Magic Find", desc = "Average Magic Find line.\n" + "§e%value% §7is replaced with\nAverage Magic Find.") @ConfigEditorText public String avgMagicFindFormat = " &6Avg Magic Find: &b%value%"; @Expose @ConfigOption(name = "Scavenger Coins", desc = "Scavenger Coins line.\n" + "§e%value% §7is replaced with\nCoins earned from kill ghosts.\nInclude: Scavenger Enchant, Scavenger Talismans, Kill Combo.") @ConfigEditorText public String scavengerCoinsFormat = " &6Scavenger Coins: &b%value% &7(%session%)"; @Expose @ConfigOption(name = "Kill Combo", desc = "Kill Combo line.\n" + "§e%value% §7is replaced with\nYour current kill combo.") @ConfigEditorText public String killComboFormat = " &6Kill Combo: &b%value%"; @Expose @ConfigOption(name = "Highest Kill Combo", desc = "Highest Kill Combo line.\n" + "§e%value% §7is replaced with\nYour current highest kill combo.") @ConfigEditorText public String highestKillComboFormat = " &6Highest Kill Combo: &b%value% &7(%session%)"; @Expose @ConfigOption(name = "Skill XP Gained", desc = "Skill XP Gained line.\n" + "§e%value% §7is replaced with\nSkill XP Gained from killing Ghosts.") @ConfigEditorText public String skillXPGainFormat = " &6Skill XP Gained: &b%value% &7(%session%)"; @ConfigOption(name = "Bestiary Formatting", desc = "") @Accordion @Expose public BestiaryFormatting bestiaryFormatting = new BestiaryFormatting(); public static class BestiaryFormatting { @Expose @ConfigOption(name = "Bestiary", desc = "Bestiary Progress line.\n§e%value% §7is replaced with\n" + "Your current progress to next level.\n" + "§e%currentLevel% &7is replaced with your current bestiary level\n" + "§e%nextLevel% §7is replaced with your current bestiary level +1.\n" + "§e%value% §7is replaced with one of the text below.") @ConfigEditorText public String base = " &6Bestiary %display%: &b%value%"; @Expose @ConfigOption(name = "No Data", desc = "Text to show when you need to open the\nBestiary Menu to gather data.") @ConfigEditorText public String openMenu = "§cOpen Bestiary Menu !"; @Expose @ConfigOption(name = "Maxed", desc = "Text to show when your bestiary for ghost is at max level.\n" + "§e%currentKill% §7is replaced with your current total kill.") @ConfigEditorText public String maxed = "%currentKill% (&c&lMaxed!)"; @Expose @ConfigOption(name = "Progress to Max", desc = "Text to show progress when the §eMaxed Bestiary §7option is §aON\n" + "§e%currentKill% §7is replaced with your current total kill.") @ConfigEditorText public String showMax_progress = "%currentKill%/250k (%percentNumber%%)"; @Expose @ConfigOption(name = "Progress", desc = "Text to show progress when the §eMaxed Bestiary§7 option is §cOFF\n" + "§e%currentKill% §7is replaced with how many kill you have to the next level.\n" + "§e%killNeeded% §7is replaced with how many kill you need to reach the next level.") @ConfigEditorText public String progress = "%currentKill%/%killNeeded%"; } @ConfigOption(name = "XP Per Hour Formatting", desc = "") @Accordion @Expose public XPHourFormatting xpHourFormatting = new XPHourFormatting(); public static class XPHourFormatting { @Expose @ConfigOption(name = "XP/h", desc = "XP Per Hour line.\n" + "§e%value% §7is replaced with one of the text below.") @ConfigEditorText public String base = " &6XP/h: &b%value%"; @Expose @ConfigOption(name = "No Data", desc = "XP Per Hour line.\n§e%value% §7is replaced with\nEstimated amount of combat xp you gain per hour.") @ConfigEditorText public String noData = "&bN/A"; @Expose @ConfigOption(name = "Paused", desc = "Text displayed next to the time \n" + "when you are doing nothing for a given amount of seconds") @ConfigEditorText public String paused = "&c(PAUSED)"; } @ConfigOption(name = "ETA Formatting", desc = "") @Accordion @Expose public ETAFormatting etaFormatting = new ETAFormatting(); public static class ETAFormatting { @Expose @ConfigOption(name = "ETA to next level", desc = "ETA To Next Level Line.\n" + "§e%value% §7is replaced with one of the text below.") @ConfigEditorText public String base = " &6ETA: &b%value%"; @Expose @ConfigOption(name = "Maxed!", desc = "So you really maxed ghost bestiary ?") @ConfigEditorText public String maxed = "&c&lMAXED!"; @Expose @ConfigOption(name = "No Data", desc = "Start killing some ghosts !") @ConfigEditorText public String noData = "&bN/A"; @Expose @ConfigOption(name = "Progress", desc = "Text to show progress to next level.") @ConfigEditorText public String progress = "&b%value%"; @Expose @ConfigOption(name = "Paused", desc = "Text displayed next to the time \n" + "when you are doing nothing for a given amount of seconds") @ConfigEditorText public String paused = "&c(PAUSED)"; @Expose @ConfigOption(name = "Time", desc = "§e%days% §7is replaced with days remaining.\n" + "§e%hours% §7is replaced with hours remaining.\n" + "§e%minutes% §7is replaced with minutes remaining.\n" + "§e%seconds% §7is replaced with seconds remaining.") @ConfigEditorText public String time = "&6%days%%hours%%minutes%%seconds%"; } @ConfigOption(name = "Kill Per Hour Formatting", desc = "") @Expose @Accordion public KillHourFormatting killHourFormatting = new KillHourFormatting(); public static class KillHourFormatting { @Expose @ConfigOption(name = "Kill/h", desc = "Kill Per Hour line.\n§e%value% §7is replaced with\nEstimated kills per hour you get.") @ConfigEditorText public String base = " &6Kill/h: &b%value%"; @Expose @ConfigOption(name = "No Data", desc = "Start killing some ghosts !") @ConfigEditorText public String noData = "&bN/A"; @Expose @ConfigOption(name = "Paused", desc = "Text displayed next to the time \n" + "when you are doing nothing for a given amount of seconds") @ConfigEditorText public String paused = "&c(PAUSED)"; } @Expose @ConfigOption(name = "Money Per Hour", desc = "Money Per Hour.\n§e%value% §7is replaced with\nEstimated money you get per hour\n" + "Calculated with your kill per hour and your average magic find.") @ConfigEditorText public String moneyHourFormat = " &6$/h: &b%value%"; @Expose @ConfigOption(name = "Money made", desc = "Calculate the money you made.\nInclude §eSorrow§7, §ePlasma§7, §eVolta§7, §e1M coins drop\n" + "§eGhostly Boots§7, §eScavenger coins.\n" + "§cUsing current Sell Offer value.") @ConfigEditorText public String moneyMadeFormat = " &6Money made: &b%value%"; } @Expose @ConfigOption(name = "Extra space", desc = "Space between each line of text.") @ConfigEditorSlider( minValue = -5, maxValue = 10, minStep = 1) public int extraSpace = 1; @Expose @ConfigOption(name = "Pause Timer", desc = "How many seconds does it wait before pausing.") @ConfigEditorSlider( minValue = 1, maxValue = 20, minStep = 1 ) public int pauseTimer = 3; @Expose @ConfigOption(name = "Show only in The Mist", desc = "Show the overlay only when you are in The Mist.") @ConfigEditorBoolean public boolean onlyOnMist = true; @Expose @ConfigOption(name = "Maxed Bestiary", desc = "Show progress to max bestiary instead of next level.") @ConfigEditorBoolean public boolean showMax = false; @ConfigOption(name = "Reset", desc = "Reset the counter.") @ConfigEditorButton(buttonText = "Reset") public Runnable resetCounter = GhostUtil.INSTANCE::reset; @Expose public Position position = new Position(50, 50, false, true); }