aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/test/TestCopyBestiaryValues.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/test/TestCopyBestiaryValues.kt')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/test/TestCopyBestiaryValues.kt117
1 files changed, 117 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/test/TestCopyBestiaryValues.kt b/src/main/java/at/hannibal2/skyhanni/test/TestCopyBestiaryValues.kt
new file mode 100644
index 000000000..870752a25
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/test/TestCopyBestiaryValues.kt
@@ -0,0 +1,117 @@
+package at.hannibal2.skyhanni.test
+
+import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.events.InventoryUpdatedEvent
+import at.hannibal2.skyhanni.utils.ItemUtils.getLore
+import at.hannibal2.skyhanni.utils.ItemUtils.getSkullOwner
+import at.hannibal2.skyhanni.utils.ItemUtils.getSkullTexture
+import at.hannibal2.skyhanni.utils.ItemUtils.name
+import at.hannibal2.skyhanni.utils.LorenzUtils.nextAfter
+import at.hannibal2.skyhanni.utils.NumberUtil.formatNumber
+import at.hannibal2.skyhanni.utils.OSUtils
+import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
+import at.hannibal2.skyhanni.utils.StringUtils.removeColor
+import com.google.gson.GsonBuilder
+import com.google.gson.annotations.Expose
+import net.minecraft.item.ItemStack
+import net.minecraftforge.fml.common.eventhandler.EventPriority
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+
+object TestCopyBestiaryValues {
+
+ class BestiarityObject {
+ @Expose
+ var name: String = ""
+
+ @Expose
+ var skullOwner: String = ""
+
+ @Expose
+ var texture: String = ""
+
+ @Expose
+ var cap: Int = 0
+
+ @Expose
+ var mobs: Array<String> = emptyArray()
+
+ @Expose
+ var bracket: Int = 0
+ }
+
+ val pattern = "\\[Lv(?<lvl>.*)] (?<text>.*)".toPattern()
+
+ @SubscribeEvent(priority = EventPriority.LOW)
+ fun onLateInventoryOpen(event: InventoryUpdatedEvent) {
+ if (!SkyHanniMod.feature.dev.copyBestiaryData) return
+ SkyHanniTestCommand.displayLine = ""
+
+ val backItem = event.inventoryItems[3 + 9 * 5 + 3]
+ if (backItem == null) {
+// println("first is null!")
+ return
+ }
+ if (backItem.getLore().none { it.contains("Bestiary Milestone") }) {
+// println("wrong first: ${backItem.getLore()}")
+ return
+ }
+
+ val rankingItem = event.inventoryItems[3 + 9 * 5 + 2]
+ if (rankingItem == null) {
+// println("second is null!")
+ return
+ }
+ if (rankingItem.getLore().none { it.contains("Ranking") }) {
+// println("wrong second: ${rankingItem.getLore()}")
+ return
+ }
+
+ val titleItem = event.inventoryItems[4] ?: return
+ copy(titleItem, event.inventoryItems)
+ }
+
+ private fun copy(titleItem: ItemStack, inventoryItems: Map<Int, ItemStack>) {
+ val name = titleItem.name ?: return
+ val titleName = name.split(" ").dropLast(1).joinToString(" ")
+
+ val obj: BestiarityObject = BestiarityObject()
+ obj.name = titleName
+ obj.texture = titleItem.getSkullTexture() ?: "no texture found"
+ obj.skullOwner = titleItem.getSkullOwner() ?: "no skullOwner found"
+
+ val lore = titleItem.getLore()
+ val overallProgress = lore.find { it.contains("Overall Progress") }
+ if (overallProgress == null) {
+ println("overallProgress not found!")
+ return
+ }
+ val capLine = lore.nextAfter(overallProgress) ?: return
+ val rawCap = capLine.substringAfter("/").removeColor().formatNumber()
+ obj.cap = rawCap.toInt()
+
+ val mobs = mutableListOf<String>()
+ for (i in 10..43) {
+ val stack = inventoryItems[i] ?: continue
+ val stackName = stack.name ?: continue
+ pattern.matchMatcher(stackName.removeColor()) {
+ val lvl = group("lvl").toInt()
+ var text = group("text").lowercase().replace(" ", "_")
+
+ val master = text.endsWith("(master)")
+ val masterText = if (master) "master_" else ""
+ if (master) {
+ text = text.split("_").dropLast(1).joinToString("_")
+ }
+ val result = "$masterText${text}_$lvl"
+ mobs.add(result)
+ }
+ }
+ obj.mobs = mobs.toTypedArray()
+
+ val gson = GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create()
+ val text = gson.toJson(obj)
+ OSUtils.copyToClipboard(text)
+
+ SkyHanniTestCommand.displayLine = "Bestiary for $titleName"
+ }
+} \ No newline at end of file