mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
163 lines
5.4 KiB
Kotlin
163 lines
5.4 KiB
Kotlin
package io.delilaheve.util
|
|
|
|
import io.delilaheve.UnsafeEnchants
|
|
import io.delilaheve.util.EnchantmentUtil.enchantmentName
|
|
import org.bukkit.enchantments.Enchantment
|
|
|
|
/**
|
|
* Config option accessors
|
|
*/
|
|
object ConfigOptions {
|
|
|
|
// Path for default enchantment limits
|
|
private const val DEFAULT_LIMIT_PATH = "default_limit"
|
|
// Path for limiting repair cost
|
|
private const val LIMIT_REPAIR_COST = "limit_repair_cost"
|
|
// Path for repair value limit
|
|
private const val LIMIT_REPAIR_VALUE = "limit_repair_value"
|
|
// Path for level cost on item repair
|
|
private const val ITEM_REPAIR_COST = "item_repair_cost"
|
|
// Path for level cost on illegal enchantment on sacrifice
|
|
private const val SACRIFICE_ILLEGAL_COST = "sacrifice_illegal_enchant_cost"
|
|
// Path for removing repair cost limits
|
|
private const val REMOVE_REPAIR_LIMIT = "remove_repair_limit"
|
|
// Root path for enchantment limits
|
|
private const val ENCHANT_LIMIT_ROOT = "enchant_limits"
|
|
// Root path for enchantment values
|
|
private const val ENCHANT_VALUES_ROOT = "enchant_values"
|
|
// Keys for specific enchantment values
|
|
private const val KEY_BOOK = "book"
|
|
private const val KEY_ITEM = "item"
|
|
// Debug logging toggle path
|
|
private const val DEBUG_LOGGING = "debug_log"
|
|
|
|
// Default value for enchantment limits
|
|
private const val DEFAULT_ENCHANT_LIMIT = 5
|
|
// Default value for limiting repair cost
|
|
private const val DEFAULT_LIMIT_REPAIR = true
|
|
// Default value for repair cost limit
|
|
private const val DEFAULT_LIMIT_REPAIR_VALUE = 39
|
|
// Default value for level cost on item repair
|
|
private const val DEFAULT_ITEM_REPAIR_COST = 2
|
|
// Default value for level cost on illegal enchantment on sacrifice
|
|
private const val DEFAULT_SACRIFICE_ILLEGAL_COST = 1
|
|
// Valid range for repair cost limit
|
|
private val REPAIR_LIMIT_RANGE = 1..39
|
|
// Valid range for repair cost limit
|
|
private val ITEM_REPAIR_COST_RANGE = 0..255
|
|
// Valid range for repair cost limit
|
|
private val SACRIFICE_ILLEGAL_COST_RANGE = 0..255
|
|
// Default for removing repair cost limits
|
|
private const val DEFAULT_REMOVE_LIMIT = false
|
|
// Valid range for an enchantment limit
|
|
private val ENCHANT_LIMIT_RANGE = 1..255
|
|
// Default value for an enchantment multiplier
|
|
private const val DEFAULT_ENCHANT_VALUE = 0
|
|
// Default value for debug logging
|
|
private const val DEFAULT_DEBUG_LOG = false
|
|
|
|
/**
|
|
* Default enchantment limit
|
|
*/
|
|
private val defaultEnchantLimit: Int
|
|
get() {
|
|
return UnsafeEnchants.instance
|
|
.config
|
|
.getInt(DEFAULT_LIMIT_PATH, DEFAULT_ENCHANT_LIMIT)
|
|
}
|
|
|
|
/**
|
|
* Whether to limit repair costs to the vanilla limit
|
|
*/
|
|
val limitRepairCost: Boolean
|
|
get() {
|
|
return UnsafeEnchants.instance
|
|
.config
|
|
.getBoolean(LIMIT_REPAIR_COST, DEFAULT_LIMIT_REPAIR)
|
|
}
|
|
|
|
/**
|
|
* Value to limit repair costs to
|
|
*/
|
|
val limitRepairValue: Int
|
|
get() {
|
|
return UnsafeEnchants.instance
|
|
.config
|
|
.getInt(LIMIT_REPAIR_VALUE, DEFAULT_LIMIT_REPAIR_VALUE)
|
|
.takeIf { it in REPAIR_LIMIT_RANGE }
|
|
?: DEFAULT_LIMIT_REPAIR_VALUE
|
|
}
|
|
|
|
/**
|
|
* Value to limit repair costs to
|
|
*/
|
|
val itemRepairCost: Int
|
|
get() {
|
|
return UnsafeEnchants.instance
|
|
.config
|
|
.getInt(ITEM_REPAIR_COST, DEFAULT_ITEM_REPAIR_COST)
|
|
.takeIf { it in ITEM_REPAIR_COST_RANGE }
|
|
?: DEFAULT_ITEM_REPAIR_COST
|
|
}
|
|
|
|
/**
|
|
* Value to limit repair costs to
|
|
*/
|
|
val sacrificeIllegalCost: Int
|
|
get() {
|
|
return UnsafeEnchants.instance
|
|
.config
|
|
.getInt(SACRIFICE_ILLEGAL_COST, DEFAULT_SACRIFICE_ILLEGAL_COST)
|
|
.takeIf { it in SACRIFICE_ILLEGAL_COST_RANGE }
|
|
?: DEFAULT_SACRIFICE_ILLEGAL_COST
|
|
}
|
|
/**
|
|
* Whether to remove repair cost limit
|
|
*/
|
|
val removeRepairLimit: Boolean
|
|
get() {
|
|
return UnsafeEnchants.instance
|
|
.config
|
|
.getBoolean(REMOVE_REPAIR_LIMIT, DEFAULT_REMOVE_LIMIT)
|
|
}
|
|
|
|
/**
|
|
* Whether to show debug logging
|
|
*/
|
|
val debugLog: Boolean
|
|
get() {
|
|
return UnsafeEnchants.instance
|
|
.config
|
|
.getBoolean(DEBUG_LOGGING, DEFAULT_DEBUG_LOG)
|
|
}
|
|
|
|
/**
|
|
* Get the given [enchantment]'s limit
|
|
*/
|
|
fun enchantLimit(enchantment: Enchantment): Int {
|
|
val path = "${ENCHANT_LIMIT_ROOT}.${enchantment.enchantmentName}"
|
|
return UnsafeEnchants.instance
|
|
.config
|
|
.getInt(path, defaultEnchantLimit)
|
|
.takeIf { it in ENCHANT_LIMIT_RANGE }
|
|
?: defaultEnchantLimit
|
|
}
|
|
|
|
/**
|
|
* Get the appropriate [enchantment]'s value dependent on whether
|
|
* it's source [isFromBook]
|
|
*/
|
|
fun enchantmentValue(
|
|
enchantment: Enchantment,
|
|
isFromBook: Boolean
|
|
): Int {
|
|
val typeKey = if (isFromBook) KEY_BOOK else KEY_ITEM
|
|
val path = "${ENCHANT_VALUES_ROOT}.${enchantment.enchantmentName}.$typeKey"
|
|
return UnsafeEnchants.instance
|
|
.config
|
|
.getInt(path, DEFAULT_ENCHANT_VALUE)
|
|
.takeIf { it >= DEFAULT_ENCHANT_VALUE }
|
|
?: DEFAULT_ENCHANT_VALUE
|
|
}
|
|
|
|
}
|