summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/data
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/neu/NeuReforgeJson.kt (renamed from src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/neu/NeuReforgeStoneJson.kt)28
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt80
2 files changed, 96 insertions, 12 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/neu/NeuReforgeStoneJson.kt b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/neu/NeuReforgeJson.kt
index 8ebe2dea6..a8c8f3fe4 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/neu/NeuReforgeStoneJson.kt
+++ b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/neu/NeuReforgeJson.kt
@@ -1,21 +1,26 @@
package at.hannibal2.skyhanni.data.jsonobjects.repo.neu
+import at.hannibal2.skyhanni.data.model.SkyblockStatList
import at.hannibal2.skyhanni.utils.LorenzRarity
import at.hannibal2.skyhanni.utils.NEUInternalName
+import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName
+import at.hannibal2.skyhanni.utils.NEUItems
import com.google.gson.annotations.Expose
import com.google.gson.annotations.SerializedName
+import net.minecraft.item.Item
-data class NeuReforgeStoneJson(
- @Expose val internalName: NEUInternalName,
+data class NeuReforgeJson(
+ @Expose val internalName: NEUInternalName?,
@Expose val reforgeName: String,
@Expose @SerializedName("itemTypes") val rawItemTypes: Any,
@Expose val requiredRarities: List<LorenzRarity>,
- @Expose val reforgeCosts: Map<LorenzRarity, Long>,
- @Expose val reforgeStats: Map<LorenzRarity, Map<String, Double>>,
+ @Expose val reforgeCosts: Map<LorenzRarity, Long>?,
+ @Expose val reforgeStats: Map<LorenzRarity, SkyblockStatList>?,
@Expose @SerializedName("reforgeAbility") val rawReforgeAbility: Any?,
) {
private lateinit var reforgeAbilityField: Map<LorenzRarity, String>
+ private lateinit var itemTypeField: Pair<String, List<NEUInternalName>>
val reforgeAbility
get() = if (this::reforgeAbilityField.isInitialized) reforgeAbilityField
@@ -27,7 +32,7 @@ data class NeuReforgeStoneJson(
is Map<*, *> -> (this.rawReforgeAbility as? Map<String, String>)?.mapKeys {
LorenzRarity.valueOf(
- it.key.uppercase().replace(" ", "_")
+ it.key.uppercase().replace(" ", "_"),
)
} ?: emptyMap()
@@ -36,28 +41,27 @@ data class NeuReforgeStoneJson(
reforgeAbilityField
}
- /* used in ReforgeAPI which isn't in beta yet
- val itemType: Pair<String, List<NEUInternalName>> by lazy {
+ val itemType: Pair<String, List<NEUInternalName>>
+ get() = if (this::itemTypeField.isInitialized) itemTypeField
+ else run {
val any = this.rawItemTypes
- return@lazy when (any) {
+ return when (any) {
is String -> {
any.replace("/", "_AND_").uppercase() to emptyList()
}
is Map<*, *> -> {
val type = "SPECIAL_ITEMS"
- val map = any as? Map<String, List<String>> ?: return@lazy type to emptyList()
+ val map = any as? Map<String, List<String>> ?: return type to emptyList()
val internalNames = map["internalName"]?.map { it.asInternalName() } ?: emptyList()
val itemType = map["itemid"]?.map {
NEUItems.getInternalNamesForItemId(Item.getByNameOrId(it))
- }?.flatten()
- ?: emptyList()
+ }?.flatten() ?: emptyList()
type to (internalNames + itemType)
}
else -> throw IllegalStateException()
}
}
-*/
}
diff --git a/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt b/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt
new file mode 100644
index 000000000..161ec76f5
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/data/model/SkyblockStat.kt
@@ -0,0 +1,80 @@
+package at.hannibal2.skyhanni.data.model
+
+import at.hannibal2.skyhanni.utils.StringUtils.allLettersFirstUppercase
+import net.minecraft.client.Minecraft
+import java.util.EnumMap
+
+enum class SkyblockStat(val icon: String) {
+ DAMAGE("§c❁"),
+ HEALTH("§c❤"),
+ DEFENSE("§a❈"),
+ STRENGTH("§c❁"),
+ INTELLIGENCE("§b✎"),
+ CRIT_DAMAGE("§9☠"),
+ CRIT_CHANCE("§9☣"),
+ FEROCITY("§c⫽"),
+ BONUS_ATTACK_SPEED("§e⚔"),
+ ABILITY_DAMAGE("§c๑"),
+ HEALTH_REGEN("§c❣"),
+ VITALITY("§4♨"),
+ MENDING("§a☄"),
+ TRUE_DEFENCE("§7❂"),
+ SWING_RANGE("§eⓈ"),
+ SPEED("§f✦"),
+ SEA_CREATURE_CHANCE("§3α"),
+ MAGIC_FIND("§b✯"),
+ PET_LUCK("§d♣"),
+ FISHING_SPEED("§b☂"),
+ BONUS_PEST_CHANCE("§2ൠ"),
+ COMBAT_WISDOM("§3☯"),
+ MINING_WISDOM("§3☯"),
+ FARMING_WISDOM("§3☯"),
+ FORAGING_WISDOM("§3☯"),
+ FISHING_WISDOM("§3☯"),
+ ENCHANTING_WISDOM("§3☯"),
+ ALCHEMY_WISDOM("§3☯"),
+ CARPENTRY_WISDOM("§3☯"),
+ RUNECRAFTING_WISDOM("§3☯"),
+ SOCIAL_WISDOM("§3☯"),
+ TAMING_WISDOM("§3☯"),
+ MINING_SPEED("§6⸕"),
+ BREAKING_POWER("§2Ⓟ"),
+ PRISTINE("§5✧"),
+ FORAGING_FORTUNE("§☘"),
+ FARMING_FORTUNE("§6☘"),
+ MINING_FORTUNE("§6☘"),
+ FEAR("§a☠")
+ ;
+
+ val capitalizedName = name.lowercase().allLettersFirstUppercase()
+
+ val iconWithName = "$icon $capitalizedName"
+
+ fun asString(value: Int) = (if (value > 0) "+" else "") + value.toString() + " " + this.icon
+
+ companion object {
+ val fontSizeOfLargestIcon by lazy {
+ entries.maxOf { Minecraft.getMinecraft().fontRendererObj.getStringWidth(it.icon) } + 1
+ }
+ }
+}
+
+class SkyblockStatList : EnumMap<SkyblockStat, Double>(SkyblockStat::class.java), Map<SkyblockStat, Double> {
+ operator fun minus(other: SkyblockStatList): SkyblockStatList {
+ return SkyblockStatList().apply {
+ val keys = this.keys + other.keys
+ for (key in keys) {
+ this[key] = (this@SkyblockStatList[key] ?: 0.0) - (other[key] ?: 0.0)
+ }
+ }
+ }
+
+ companion object {
+ fun mapOf(vararg list: Pair<SkyblockStat, Double>) = SkyblockStatList().apply {
+ for ((key, value) in list) {
+ this[key] = value
+ }
+ }
+ }
+}
+