Fixed villager enchants

This commit is contained in:
Auxilor 2022-11-21 12:35:18 +00:00
parent 545d886ef6
commit b398a41056
2 changed files with 21 additions and 3 deletions

View File

@ -33,6 +33,10 @@ class VillagerSupport(
val enchants = result.fast().getEnchants(true)
if (NumberUtils.randFloat(0.0, 100.0) < plugin.configYml.getDouble("villager.pass-through-chance")) {
return
}
var multiplier = 0.01
if (result.type == Material.ENCHANTED_BOOK) {
@ -78,14 +82,27 @@ class VillagerSupport(
multiplier /= this.plugin.configYml.getDouble("villager.reduction")
enchants[enchantment] = level
if (result.type == Material.ENCHANTED_BOOK) {
// Only allow one enchantment
enchants.clear()
enchants[enchantment] = level
break
} else {
enchants[enchantment] = level
}
}
val meta = result.itemMeta
if (meta is EnchantmentStorageMeta) {
enchants.forEach { (enchant, level) -> meta.addStoredEnchant(enchant, level, true) }
for ((enchant, level) in enchants) {
meta.removeStoredEnchant(enchant)
meta.addStoredEnchant(enchant, level, true)
}
} else {
enchants.forEach { (enchant, level) -> meta.addEnchant(enchant, level, true) }
for ((enchant, level) in enchants) {
meta.removeEnchant(enchant)
meta.addEnchant(enchant, level, true)
}
}
result.itemMeta = meta

View File

@ -14,6 +14,7 @@ enchanting-table:
# Options for obtaining custom enchants from villagers
villager:
enabled: true # If custom enchantments should be available from villagers
pass-through-chance: 25 # The chance to leave the book as-is with a vanilla/no enchantment applied.
book-multiplier: 0.14 # Multiplier applied to the chance of getting an enchantment on a book (to balance enchant numbers)
reduction: 5 # The chance to get each subsequent enchantment is divided by this number, e.g. 2nd enchant is 5x less likely than 1st, 3rd is 5x less likely again, etc