Compare commits

..

12 commits

5 changed files with 23 additions and 38 deletions

View file

@ -285,14 +285,14 @@ public class EnchantCostSettingsGui extends IntSettingsGui {
*/ */
@Override @Override
public int getConfiguredValue() { public int getConfiguredValue() {
return ConfigOptions.INSTANCE.enchantmentValue(enchantment, false, false); return ConfigOptions.INSTANCE.enchantmentValue(enchantment, false);
} }
/** /**
* @return The configured value for the enchant setting book value. * @return The configured value for the enchant setting book value.
*/ */
public int getConfiguredBookValue() { public int getConfiguredBookValue() {
return ConfigOptions.INSTANCE.enchantmentValue(enchantment, false, true); return ConfigOptions.INSTANCE.enchantmentValue(enchantment, true);
} }
@Override @Override

View file

@ -24,7 +24,6 @@ import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener
import xyz.alexcrea.cuanvil.update.ModrinthUpdateChecker import xyz.alexcrea.cuanvil.update.ModrinthUpdateChecker
import xyz.alexcrea.cuanvil.update.PluginSetDefault import xyz.alexcrea.cuanvil.update.PluginSetDefault
import xyz.alexcrea.cuanvil.update.UpdateHandler import xyz.alexcrea.cuanvil.update.UpdateHandler
import xyz.alexcrea.cuanvil.update.UpdateUtils
import xyz.alexcrea.cuanvil.util.MetricsUtil import xyz.alexcrea.cuanvil.util.MetricsUtil
import java.io.File import java.io.File
import java.io.FileReader import java.io.FileReader
@ -224,8 +223,7 @@ open class CustomAnvil : JavaPlugin() {
val version = description.version val version = description.version
val featured = if(version.contains("dev")) null else true val featured = if(version.contains("dev")) null else true
ModrinthUpdateChecker(modrinthPluginID, loader, ModrinthUpdateChecker(modrinthPluginID, loader, null)
UpdateUtils.currentMinecraftVersion().toString())
.setFeatured(featured) .setFeatured(featured)
.setOnError { .setOnError {
logger.log(Level.WARNING, "error trying to fetch latest update", it) logger.log(Level.WARNING, "error trying to fetch latest update", it)

View file

@ -86,7 +86,6 @@ object ConfigOptions {
// Keys for specific enchantment values // Keys for specific enchantment values
private const val KEY_BOOK = "book" private const val KEY_BOOK = "book"
private const val KEY_BOOK_ON_BOOK = "book_on_book"
private const val KEY_ITEM = "item" private const val KEY_ITEM = "item"
// Debug flag // Debug flag
@ -579,15 +578,14 @@ object ConfigOptions {
*/ */
fun enchantmentValue( fun enchantmentValue(
enchantment: CAEnchantment, enchantment: CAEnchantment,
isToBook: Boolean, isFromBook: Boolean
isFromBook: Boolean,
): Int { ): Int {
// Test namespace // Test namespace
var limit = enchantmentValue(enchantment.key.toString(), isToBook, isFromBook) var limit = enchantmentValue(enchantment.key.toString(), isFromBook)
if (limit != null) return limit if (limit != null) return limit
// Test legacy (name only) // Test legacy (name only)
limit = enchantmentValue(enchantment.enchantmentName, isToBook, isFromBook) limit = enchantmentValue(enchantment.enchantmentName, isFromBook)
if (limit != null) return limit if (limit != null) return limit
// get default (and test old legacy if present) // get default (and test old legacy if present)
@ -601,22 +599,13 @@ object ConfigOptions {
*/ */
private fun enchantmentValue( private fun enchantmentValue(
enchantmentName: String, enchantmentName: String,
isToBook: Boolean, isFromBook: Boolean
isFromBook: Boolean,
): Int? { ): Int? {
val typeKey = if (isFromBook) KEY_BOOK else KEY_ITEM val typeKey = if (isFromBook) KEY_BOOK else KEY_ITEM
val path = "${ENCHANT_VALUES_ROOT}.${enchantmentName}.$typeKey" val path = "${ENCHANT_VALUES_ROOT}.${enchantmentName}.$typeKey"
return CustomAnvil.instance
val config = ConfigHolder.DEFAULT_CONFIG.config .config
if(isFromBook && isToBook) { .getInt(path, DEFAULT_ENCHANT_VALUE - 1)
val specialPath = "${ENCHANT_VALUES_ROOT}.${enchantmentName}.$KEY_BOOK_ON_BOOK"
if(config.isInt(specialPath))
return config.getInt(specialPath)
.takeIf { it >= DEFAULT_ENCHANT_VALUE }
}
return config.getInt(path, DEFAULT_ENCHANT_VALUE - 1)
.takeIf { it >= DEFAULT_ENCHANT_VALUE } .takeIf { it >= DEFAULT_ENCHANT_VALUE }
} }

View file

@ -23,7 +23,6 @@ import xyz.alexcrea.cuanvil.dependency.economy.EconomyManager
import xyz.alexcrea.cuanvil.group.ConflictType import xyz.alexcrea.cuanvil.group.ConflictType
import xyz.alexcrea.cuanvil.util.AnvilTitleUtil import xyz.alexcrea.cuanvil.util.AnvilTitleUtil
import xyz.alexcrea.cuanvil.util.dialog.AnvilRenameDialogUtil import xyz.alexcrea.cuanvil.util.dialog.AnvilRenameDialogUtil
import kotlin.math.sqrt
object AnvilXpUtil { object AnvilXpUtil {
@ -36,9 +35,8 @@ object AnvilXpUtil {
inventory: AnvilInventory, inventory: AnvilInventory,
view: InventoryView, view: InventoryView,
player: Player, player: Player,
result: AnvilResult result: AnvilResult) {
) { if(result.item == null) {
if (result.item == null) {
onNoResult(player, view) onNoResult(player, view)
return return
} }
@ -248,8 +246,7 @@ object AnvilXpUtil {
fun getRightValues(left: ItemStack, right: ItemStack, result: ItemStack, cost: AnvilCost) { fun getRightValues(left: ItemStack, right: ItemStack, result: ItemStack, cost: AnvilCost) {
// Calculate right value and illegal enchant penalty // Calculate right value and illegal enchant penalty
val isToBook = left.isEnchantedBook() val rightIsFormBook = right.isEnchantedBook()
val isFromBook = right.isEnchantedBook()
val rightEnchs = EnchantmentApi.getEnchantments(right) val rightEnchs = EnchantmentApi.getEnchantments(right)
val resultEnchs = EnchantmentApi.getEnchantments(result) val resultEnchs = EnchantmentApi.getEnchantments(result)
val resultEnchsKeys = HashMap(resultEnchs) val resultEnchsKeys = HashMap(resultEnchs)
@ -277,21 +274,22 @@ object AnvilXpUtil {
// We know "enchantment.key in resultEnchs" true // We know "enchantment.key in resultEnchs" true
val resultLevel = resultEnchs[enchantment.key]!! val resultLevel = resultEnchs[enchantment.key]!!
val enchantmentMultiplier = ConfigOptions.enchantmentValue(enchantment.key, isFromBook, isToBook) val enchantmentMultiplier = ConfigOptions.enchantmentValue(enchantment.key, rightIsFormBook)
val value = resultLevel * enchantmentMultiplier val value = resultLevel * enchantmentMultiplier
CustomAnvil.log("Value for sacrifice item ${enchantment.key.enchantmentName} level ${enchantment.value} is $value ($resultLevel * $enchantmentMultiplier)") CustomAnvil.log("Value for sacrifice item ${enchantment.key.enchantmentName} level ${enchantment.value} is $value ($resultLevel * $enchantmentMultiplier)")
rightValue += value rightValue += value
} }
if (ConfigOptions.includeLeftEnchantmentForCost) { if(ConfigOptions.includeLeftEnchantmentForCost) {
val leftIsFormBook = left.isEnchantedBook()
val leftEnchs = EnchantmentApi.getEnchantments(left) val leftEnchs = EnchantmentApi.getEnchantments(left)
for (enchantment in leftEnchs) { for (enchantment in leftEnchs) {
// Do not process enchantment that are present on the sacrifice // Do not process enchantment that are present on the sacrifice
if (rightEnchs.contains(enchantment.key)) continue if(rightEnchs.contains(enchantment.key)) continue
val resultLevel = resultEnchs.getOrDefault(enchantment.key, 0) val resultLevel = resultEnchs.getOrDefault(enchantment.key, 0)
val enchantmentMultiplier = ConfigOptions.enchantmentValue(enchantment.key, isFromBook, isToBook) val enchantmentMultiplier = ConfigOptions.enchantmentValue(enchantment.key, leftIsFormBook)
val value = resultLevel * enchantmentMultiplier val value = resultLevel * enchantmentMultiplier
CustomAnvil.log("Value for left item ${enchantment.key.enchantmentName} level ${enchantment.value} is $value ($resultLevel * $enchantmentMultiplier)") CustomAnvil.log("Value for left item ${enchantment.key.enchantmentName} level ${enchantment.value} is $value ($resultLevel * $enchantmentMultiplier)")
leftValue += value leftValue += value
@ -314,15 +312,15 @@ object AnvilXpUtil {
*/ */
fun calculateLevelForXp(xp: Int): Int { fun calculateLevelForXp(xp: Int): Int {
return when { return when {
xp <= 352 -> (sqrt((xp + 9).toDouble()) - 3).toInt() xp <= 352 -> (Math.sqrt((xp + 9).toDouble()) - 3).toInt()
xp <= 1507 -> { xp <= 1507 -> {
val inner = (2.0 / 5.0) * (xp - 7839.0 / 40.0) val inner = (2.0 / 5.0) * (xp - 7839.0 / 40.0)
(81.0 / 10.0 + sqrt(inner)).toInt() (81.0 / 10.0 + Math.sqrt(inner)).toInt()
} }
else -> { else -> {
val inner = (2.0 / 9.0) * (xp - 54215.0 / 72.0) val inner = (2.0 / 9.0) * (xp - 54215.0 / 72.0)
(325.0 / 18.0 + sqrt(inner)).toInt() (325.0 / 18.0 + Math.sqrt(inner)).toInt()
} }
} }
} }

View file

@ -49,8 +49,8 @@ public class DefaultConfigTests extends SharedCustomAnvilTest {
CAEnchantment enchantment = CAEnchantmentRegistry.getInstance().getByKey(key); CAEnchantment enchantment = CAEnchantmentRegistry.getInstance().getByKey(key);
Assertions.assertNotNull(enchantment, "Enchantment was somehow not found"); Assertions.assertNotNull(enchantment, "Enchantment was somehow not found");
int itemValue = ConfigOptions.INSTANCE.enchantmentValue(enchantment, false, false); int itemValue = ConfigOptions.INSTANCE.enchantmentValue(enchantment, false);
int bookValue = ConfigOptions.INSTANCE.enchantmentValue(enchantment, false, true); int bookValue = ConfigOptions.INSTANCE.enchantmentValue(enchantment, true);
EnchantmentRarity rarity = enchantment.defaultRarity(); EnchantmentRarity rarity = enchantment.defaultRarity();