aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/com/ambientaddons/commands
diff options
context:
space:
mode:
authorAppability <appable@icloud.com>2022-11-13 02:53:02 -0800
committerAppability <appable@icloud.com>2022-11-13 02:53:02 -0800
commit4df8a87c044a1194bff4409974944c81ba191430 (patch)
treea84e137ccfb9c966216829bb56ef341f955b2352 /src/main/kotlin/com/ambientaddons/commands
parentf9826fb1392f946a91e6079cf424ca288ff56d6f (diff)
downloadAmbientAddons-4df8a87c044a1194bff4409974944c81ba191430.tar.gz
AmbientAddons-4df8a87c044a1194bff4409974944c81ba191430.tar.bz2
AmbientAddons-4df8a87c044a1194bff4409974944c81ba191430.zip
fml i almost made idkman reroll ANOTHER handle
also significant improvements to salvage list editing, cleanup chat formatting, and fix config description
Diffstat (limited to 'src/main/kotlin/com/ambientaddons/commands')
-rw-r--r--src/main/kotlin/com/ambientaddons/commands/AutoBuyCommand.kt10
-rw-r--r--src/main/kotlin/com/ambientaddons/commands/SalvageCommand.kt99
2 files changed, 76 insertions, 33 deletions
diff --git a/src/main/kotlin/com/ambientaddons/commands/AutoBuyCommand.kt b/src/main/kotlin/com/ambientaddons/commands/AutoBuyCommand.kt
index 1cead71..9899d40 100644
--- a/src/main/kotlin/com/ambientaddons/commands/AutoBuyCommand.kt
+++ b/src/main/kotlin/com/ambientaddons/commands/AutoBuyCommand.kt
@@ -13,7 +13,7 @@ object AutoBuyCommand {
val newPrice = args.getOrNull(2)?.toIntOrNull()
persistentData.autoBuyItems[item] = newPrice
persistentData.save()
- UChat.chat("§aAdded item §a§l$item §awith ${if (newPrice == null) "no minimum price." else " minimum price §a§l$newPrice"}".withModPrefix())
+ UChat.chat("§aAdded item §a§l$item §awith ${if (newPrice == null) "no maximum price." else "maximum price §a§l$newPrice"}".withModPrefix())
}
"remove" -> {
val item = args[1]
@@ -24,14 +24,16 @@ object AutoBuyCommand {
} else UChat.chat("§cItem §c§l$item §cdoes not exist!".withModPrefix())
}
"list" -> {
- UChat.chat("§2§lItems".withModPrefix())
+ UChat.chat(Chat.getChatBreak())
+ UChat.chat("§b§lAutobuy List")
persistentData.autoBuyItems.forEach {
if (it.value == null) {
- UChat.chat(" §b${it.key}")
+ UChat.chat(" §a${it.key}")
} else {
- UChat.chat(" §b${it.key} §7(max price §a${it.value} §7coins)")
+ UChat.chat(" §a${it.key} §e(maximum price §a§l${it.value} §ecoins)")
}
}
+ UChat.chat(Chat.getChatBreak())
}
else -> {
UChat.chat("""
diff --git a/src/main/kotlin/com/ambientaddons/commands/SalvageCommand.kt b/src/main/kotlin/com/ambientaddons/commands/SalvageCommand.kt
index 5e86757..bc8d442 100644
--- a/src/main/kotlin/com/ambientaddons/commands/SalvageCommand.kt
+++ b/src/main/kotlin/com/ambientaddons/commands/SalvageCommand.kt
@@ -1,64 +1,105 @@
package com.ambientaddons.commands
import AmbientAddons.Companion.persistentData
+import com.ambientaddons.features.misc.Salvage
import com.ambientaddons.utils.Chat
import com.ambientaddons.utils.Extensions.withModPrefix
import com.ambientaddons.utils.SalvageStrategy
import gg.essential.universal.UChat
object SalvageCommand {
+
+ private val armorSuffixes = listOf("_HELMET", "_CHESTPLATE", "_LEGGINGS", "_BOOTS")
+
fun processCommand(args: List<String>) {
when (args.getOrNull(0)) {
"auto" -> {
- val item = args[1]
- val added = persistentData.salvageMap.put(item, SalvageStrategy.Always) != SalvageStrategy.Always
- persistentData.save()
- UChat.chat((if (added) "§aAdded item §a§l${item}." else "§cItem already added.").withModPrefix())
+ val item = args[1].uppercase()
+ addItem(item, SalvageStrategy.Always)
}
"allow" -> {
- val item = args[1]
- val allowed = persistentData.salvageMap.put(item, SalvageStrategy.Allow) != SalvageStrategy.Allow
- persistentData.save()
- UChat.chat((if (allowed) "§aAllowing item §a§l${item}." else "§cItem already allowed.").withModPrefix())
+ val item = args[1].uppercase()
+ addItem(item, SalvageStrategy.Allow)
}
"block" -> {
- val item = args[1]
- val blocked = persistentData.salvageMap.put(item, SalvageStrategy.Block) != SalvageStrategy.Block
- persistentData.save()
- UChat.chat((if (blocked) "§aBlocking item §a§l${item}." else "§cItem already blocked.").withModPrefix())
+ val item = args[1].uppercase()
+ addItem(item, SalvageStrategy.Block)
}
"remove" -> {
- val item = args[1]
- val removed = persistentData.salvageMap.remove(item) != null
- persistentData.save()
- UChat.chat((if (removed) "§aRemoved item §a§l${item}." else "§cItem not in list.").withModPrefix())
+ val item = args[1].uppercase()
+ if (item.endsWith("_ARMOR")) {
+ val itemWithoutSuffix = item.substringBeforeLast("_")
+ val removedAny = armorSuffixes.map {
+ persistentData.salvageMap.remove(itemWithoutSuffix + it)
+ }.any { it != null }
+ persistentData.save()
+ UChat.chat((if (removedAny) "§aRemoved armor set §a§l${item}." else "§cSet not in list.").withModPrefix())
+ } else {
+ val removed = persistentData.salvageMap.remove(item) != null
+ UChat.chat((if (removed) "§aRemoved item §a§l${item}." else "§cItem not in list.").withModPrefix())
+ }
}
"list" -> {
- UChat.chat("§2§lItems §7(§aalways salvage, §eallow salvaging, §cblock salvaging§7)".withModPrefix())
- persistentData.salvageMap.forEach {
- when (it.value) {
- SalvageStrategy.Always -> UChat.chat(" §a${it.key}")
- SalvageStrategy.Allow -> UChat.chat(" §e${it.key}")
- else -> UChat.chat(" §c${it.key}")
- }
+ val sortedMap = persistentData.salvageMap.let { salvageMap ->
+ val armorSets = salvageMap.filter { entry ->
+ if (entry.key.endsWith(armorSuffixes.first())) {
+ val itemWithoutSuffix = entry.key.substringBeforeLast("_")
+ armorSuffixes.all { salvageMap[itemWithoutSuffix + it] == entry.value }
+ } else false
+ }.map { (it.key.substringBeforeLast("_") + "_ARMOR") to it.value }.toMap()
+ (salvageMap.filter {
+ !armorSets.contains(it.key.substringBeforeLast("_") + "_ARMOR")
+ } + armorSets).toSortedMap()
}
+ UChat.chat(Chat.getChatBreak())
+ UChat.chat("§b§lAlways salvage")
+ UChat.chat(sortedMap.entries.filter {
+ it.value == SalvageStrategy.Always
+ }.joinToString("\n") { " §a${it.key}" })
+ UChat.chat("§b§lAllow salvaging")
+ UChat.chat(sortedMap.entries.filter {
+ it.value == SalvageStrategy.Allow
+ }.joinToString("\n") { " §e${it.key}" })
+ UChat.chat("§b§lBlock salvaging")
+ UChat.chat(sortedMap.entries.filter {
+ it.value == SalvageStrategy.Block
+ }.joinToString("\n") { " §c${it.key}" })
+ UChat.chat(Chat.getChatBreak())
}
else -> {
- UChat.chat("""
+ UChat.chat(
+ """
${Chat.getChatBreak()}
§b§lUsage:
- §a/ambient salvage auto <Skyblock ID> §eto always salvage item.
- §a/ambient salvage allow <Skyblock ID> §eto allow salvaging item.
- §a/ambient salvage block <Skyblock ID> §eto block salvaging item.
- §a/ambient salvage remove <Skyblock ID> §eto removet item.
+ §a/ambient salvage auto <Skyblock ID> §eto always salvage.
+ §a/ambient salvage allow <Skyblock ID> §eto allow salvaging.
+ §a/ambient salvage block <Skyblock ID> §eto block salvaging.
+ §a/ambient salvage remove <Skyblock ID> §eto remove item.
§a/ambient salvage list §eto view current salvage list.
§b§lNotes:
§eSome items are explicitly blocked due to past item quality bugs.
§eIf not blocked in list, this will salvage all dungeon mob drops unless starred.
+ §eArmor set ids can be combined into a single name ending with _ARMOR.
${Chat.getChatBreak()}
- """.trimIndent())
+ """.trimIndent()
+ )
}
}
}
+
+ private fun addItem(item: String, strategy: SalvageStrategy) {
+ if (item.endsWith("_ARMOR")) {
+ val itemWithoutSuffix = item.substringBeforeLast("_")
+ val addedAny = armorSuffixes.map {
+ persistentData.salvageMap.put(itemWithoutSuffix + it, strategy)
+ }.any { it != strategy }
+ persistentData.save()
+ UChat.chat((if (addedAny) "§aAdded armor set §a§l${item}." else "§cSet already added.").withModPrefix())
+ } else {
+ val added = persistentData.salvageMap.put(item, strategy) != strategy
+ persistentData.save()
+ UChat.chat((if (added) "§aAdded item §a§l${item}." else "§cItem already added.").withModPrefix())
+ }
+ }
} \ No newline at end of file