diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/event/listener/CATreatAnvilResult2Event.java b/src/main/java/xyz/alexcrea/cuanvil/api/event/listener/CATreatAnvilResult2Event.java
index aa8f8e1..30c5380 100644
--- a/src/main/java/xyz/alexcrea/cuanvil/api/event/listener/CATreatAnvilResult2Event.java
+++ b/src/main/java/xyz/alexcrea/cuanvil/api/event/listener/CATreatAnvilResult2Event.java
@@ -8,8 +8,8 @@ import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import xyz.alexcrea.cuanvil.anvil.AnvilCost;
import xyz.alexcrea.cuanvil.anvil.AnvilUseType;
-import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil;
/**
* Called after custom anvil processed the click on the result on the anvil inventory.
@@ -48,7 +48,7 @@ public class CATreatAnvilResult2Event extends Event {
@Nullable
private ItemStack result;
- private final AnvilXpUtil.AnvilCost cost;
+ private final AnvilCost cost;
@ApiStatus.Internal
public CATreatAnvilResult2Event(
@@ -56,7 +56,7 @@ public class CATreatAnvilResult2Event extends Event {
Inventory inv,
AnvilUseType useType,
@Nullable ItemStack result,
- AnvilXpUtil.AnvilCost cost) {
+ AnvilCost cost) {
this.view = view;
this.useType = useType;
@@ -190,7 +190,7 @@ public class CATreatAnvilResult2Event extends Event {
*
* @return the current anvil cost
*/
- public AnvilXpUtil.AnvilCost getCost() {
+ public AnvilCost getCost() {
return cost;
}
}
diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/event/listener/CATreatAnvilResultEvent.java b/src/main/java/xyz/alexcrea/cuanvil/api/event/listener/CATreatAnvilResultEvent.java
index 6e6358d..80965b5 100644
--- a/src/main/java/xyz/alexcrea/cuanvil/api/event/listener/CATreatAnvilResultEvent.java
+++ b/src/main/java/xyz/alexcrea/cuanvil/api/event/listener/CATreatAnvilResultEvent.java
@@ -6,8 +6,8 @@ import org.bukkit.event.inventory.PrepareAnvilEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import xyz.alexcrea.cuanvil.anvil.AnvilCost;
import xyz.alexcrea.cuanvil.anvil.AnvilUseType;
-import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil.AnvilCost;
/**
* Called after custom anvil processed the click on the result on the anvil inventory.
@@ -108,8 +108,8 @@ public class CATreatAnvilResultEvent extends Event {
*
Item rename
*
*
- * @deprecated use #{@link #getCost()} instead
* @return The current cost.
+ * @deprecated use #{@link #getCost()} instead
*/
@Deprecated(forRemoval = true, since = "1.17.0")
public int getLevelCost() {
@@ -130,8 +130,8 @@ public class CATreatAnvilResultEvent extends Event {
* Item rename
*
*
- * @deprecated use #{@link #getCost()} and set value on this instead
* @param levelCost The new cost.
+ * @deprecated use #{@link #getCost()} and set value on this instead
*/
@Deprecated(forRemoval = true, since = "1.17.0")
public void setLevelCost(int levelCost) {
diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/anvil/AnvilCost.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/anvil/AnvilCost.kt
new file mode 100644
index 0000000..f8ff89c
--- /dev/null
+++ b/src/main/kotlin/xyz/alexcrea/cuanvil/anvil/AnvilCost.kt
@@ -0,0 +1,55 @@
+package xyz.alexcrea.cuanvil.anvil
+
+import java.math.BigDecimal
+import io.delilaheve.util.ConfigOptions.getMonetaryMultiplier as moneyMultiplier
+
+open class AnvilCost {
+ private val isAlone: Boolean
+ var valid = true // Get set as invalid if cost can be satisfied
+ var isMonetary = false
+
+ var generic = 0
+ var enchantment = 0
+ var repair = 0
+ var rename = 0
+ var lore = 0
+ var illegalPenalty = 0
+ var workPenalty = 0
+ var recipe = 0
+
+ constructor(generic: Int) {
+ this.generic = generic
+ isAlone = true
+ }
+
+ constructor() {
+ isAlone = false
+ }
+
+ fun asXpCost(): Int {
+ return generic + enchantment + repair + rename + lore + illegalPenalty + workPenalty + recipe
+ }
+
+ open fun asMonetaryCost(): BigDecimal {
+ // multiply by per use type multipliers
+ return BigDecimal(generic)
+ .add(BigDecimal(enchantment).multiply(moneyMultiplier("enchantment")))
+ .add(BigDecimal(repair).multiply(moneyMultiplier("repair")))
+ .add(BigDecimal(rename).multiply(moneyMultiplier("rename")))
+ .add(BigDecimal(lore).multiply(moneyMultiplier("lore_edit")))
+ .add(BigDecimal(enchantment).multiply(moneyMultiplier("enchantment")))
+ .add(BigDecimal(illegalPenalty).multiply(moneyMultiplier("work_penalty")))
+ .add(BigDecimal(workPenalty).multiply(moneyMultiplier("work_penalty")))
+ .add(BigDecimal(recipe).multiply(moneyMultiplier("recipe")))
+ .multiply(moneyMultiplier("global"))
+ }
+}
+
+class CustomCraftCost(val rawCost: Int): AnvilCost() {
+
+ override fun asMonetaryCost(): BigDecimal {
+ return BigDecimal(rawCost)
+ .multiply(moneyMultiplier("global"))
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/anvil/AnvilMergeLogic.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/anvil/AnvilMergeLogic.kt
index 67b9b7d..6b106fc 100644
--- a/src/main/kotlin/xyz/alexcrea/cuanvil/anvil/AnvilMergeLogic.kt
+++ b/src/main/kotlin/xyz/alexcrea/cuanvil/anvil/AnvilMergeLogic.kt
@@ -29,8 +29,6 @@ import xyz.alexcrea.cuanvil.util.UnitRepairUtil.getRepair
import xyz.alexcrea.cuanvil.util.anvil.AnvilColorUtil
import xyz.alexcrea.cuanvil.util.anvil.AnvilLoreEditUtil
import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil
-import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil.AnvilCost
-import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil.CustomCraftCost
import xyz.alexcrea.cuanvil.util.config.LoreEditType
import xyz.alexcrea.cuanvil.util.dialog.AnvilRenameDialogUtil
@@ -115,7 +113,8 @@ object AnvilMergeLogic {
}
cost.workPenalty = AnvilXpUtil.calculatePenalty(first, null, resultItem, AnvilUseType.RENAME_ONLY)
- val result = DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.RENAME_ONLY, cost)
+ val result =
+ DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.RENAME_ONLY, cost)
return AnvilResult(result, cost)
}
@@ -220,7 +219,8 @@ object AnvilMergeLogic {
// Calculate rename cost
cost.rename = handleRename(resultItem, inventory, player)
- val result = DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.MERGE, cost)
+ val result =
+ DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.MERGE, cost)
return AnvilResult(result, cost)
}
@@ -261,7 +261,8 @@ object AnvilMergeLogic {
cost.recipe = if (recipe.removeExactLinearXp) AnvilXpUtil.calculateMinimumLevelForXp(xpCost)
else AnvilXpUtil.calculateLevelForXp(xpCost)
- val result = DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.CUSTOM_CRAFT, cost)
+ val result =
+ DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.CUSTOM_CRAFT, cost)
return CustomCraftResult(result, cost, amount, recipe)
}
@@ -300,7 +301,8 @@ object AnvilMergeLogic {
return UnitRepairResult.EMPTY
}
- val result = DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.UNIT_REPAIR, cost)
+ val result =
+ DependencyManager.tryTreatAnvilResult(view, inventory, player, resultItem, AnvilUseType.UNIT_REPAIR, cost)
return UnitRepairResult(result, cost, repairAmount)
}
diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt
index 0da6b30..cb24eaa 100644
--- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt
+++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt
@@ -14,6 +14,7 @@ import org.bukkit.inventory.AnvilInventory
import org.bukkit.inventory.Inventory
import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemStack
+import xyz.alexcrea.cuanvil.anvil.AnvilCost
import xyz.alexcrea.cuanvil.anvil.AnvilUseType
import xyz.alexcrea.cuanvil.api.event.listener.CAClickResultBypassEvent
import xyz.alexcrea.cuanvil.api.event.listener.CAEarlyPreAnvilBypassEvent
@@ -33,7 +34,6 @@ import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil
import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil.componentLore
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener.Companion.ANVIL_OUTPUT_SLOT
import xyz.alexcrea.cuanvil.util.MetricsUtil.trackError
-import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil
import java.util.logging.Level
object DependencyManager {
@@ -240,7 +240,7 @@ object DependencyManager {
player: HumanEntity,
result: ItemStack,
useType: AnvilUseType,
- cost: AnvilXpUtil.AnvilCost
+ cost: AnvilCost
): ItemStack? {
val treatEvent = CATreatAnvilResult2Event(view, inventory, useType, result, cost)
try {
diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt
index 32ca99d..690b384 100644
--- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt
+++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/DisenchantmentDependency.kt
@@ -14,10 +14,10 @@ import org.bukkit.event.inventory.InventoryClickEvent
import org.bukkit.event.inventory.PrepareAnvilEvent
import org.bukkit.inventory.AnvilInventory
import org.bukkit.inventory.ItemStack
+import xyz.alexcrea.cuanvil.anvil.AnvilCost
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener
import xyz.alexcrea.cuanvil.util.MetricsUtil.trackError
import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil
-import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil.AnvilCost
import java.util.logging.Level
import kotlin.reflect.KClass
diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/HavenBagsDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/HavenBagsDependency.kt
index 62d9e4e..6f30497 100644
--- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/HavenBagsDependency.kt
+++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/HavenBagsDependency.kt
@@ -9,9 +9,9 @@ import org.bukkit.plugin.RegisteredListener
import valorless.havenbags.HavenBags
import valorless.havenbags.features.BagSkin
import valorless.havenbags.features.BagUpgrade
+import xyz.alexcrea.cuanvil.anvil.AnvilCost
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener
import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil
-import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil.AnvilCost
class HavenBagsDependency {
diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/listener/AnvilResultListener.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/listener/AnvilResultListener.kt
index 775a685..feee833 100644
--- a/src/main/kotlin/xyz/alexcrea/cuanvil/listener/AnvilResultListener.kt
+++ b/src/main/kotlin/xyz/alexcrea/cuanvil/listener/AnvilResultListener.kt
@@ -15,6 +15,7 @@ import org.bukkit.inventory.AnvilInventory
import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.BookMeta
+import xyz.alexcrea.cuanvil.anvil.AnvilCost
import xyz.alexcrea.cuanvil.anvil.AnvilMergeLogic
import xyz.alexcrea.cuanvil.anvil.AnvilMergeLogic.AnvilResult
import xyz.alexcrea.cuanvil.anvil.AnvilMergeLogic.CustomCraftResult
@@ -30,10 +31,8 @@ import xyz.alexcrea.cuanvil.util.CustomRecipeUtil
import xyz.alexcrea.cuanvil.util.MiniMessageUtil
import xyz.alexcrea.cuanvil.util.anvil.AnvilLoreEditUtil
import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil
-import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil.AnvilCost
import xyz.alexcrea.cuanvil.util.config.LoreEditConfigUtil
import xyz.alexcrea.cuanvil.util.config.LoreEditType
-import java.math.BigDecimal
import java.util.*
import java.util.concurrent.atomic.AtomicReference
import kotlin.math.min
@@ -483,7 +482,6 @@ class AnvilResultListener : Listener {
val paperMeta = rightItem.itemMeta ?: return
-
val paperCopy: ItemStack?
if (LoreEditType.APPEND_PAPER.doConsume) {
paperCopy = null
diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/listener/PrepareAnvilListener.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/listener/PrepareAnvilListener.kt
index b2f6785..0217983 100644
--- a/src/main/kotlin/xyz/alexcrea/cuanvil/listener/PrepareAnvilListener.kt
+++ b/src/main/kotlin/xyz/alexcrea/cuanvil/listener/PrepareAnvilListener.kt
@@ -15,6 +15,7 @@ import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.EnchantmentStorageMeta
import org.bukkit.inventory.meta.ItemMeta
+import xyz.alexcrea.cuanvil.anvil.AnvilCost
import xyz.alexcrea.cuanvil.anvil.AnvilMergeLogic.AnvilResult
import xyz.alexcrea.cuanvil.anvil.AnvilMergeLogic.doMerge
import xyz.alexcrea.cuanvil.anvil.AnvilMergeLogic.doRenaming
@@ -24,7 +25,6 @@ import xyz.alexcrea.cuanvil.anvil.AnvilMergeLogic.testUnitRepair
import xyz.alexcrea.cuanvil.dependency.DependencyManager
import xyz.alexcrea.cuanvil.util.MaterialUtil.isAir
import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil
-import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil.AnvilCost
import xyz.alexcrea.cuanvil.util.dialog.AnvilRenameDialogUtil
/**
diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/util/anvil/AnvilLoreEditUtil.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/util/anvil/AnvilLoreEditUtil.kt
index e9bb633..a021b46 100644
--- a/src/main/kotlin/xyz/alexcrea/cuanvil/util/anvil/AnvilLoreEditUtil.kt
+++ b/src/main/kotlin/xyz/alexcrea/cuanvil/util/anvil/AnvilLoreEditUtil.kt
@@ -5,12 +5,12 @@ import org.bukkit.entity.HumanEntity
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.BookMeta
import org.bukkit.permissions.Permissible
+import xyz.alexcrea.cuanvil.anvil.AnvilCost
import xyz.alexcrea.cuanvil.anvil.AnvilMergeLogic.LoreEditResult
import xyz.alexcrea.cuanvil.dependency.DependencyManager
import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil.componentLore
import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil.setComponentLore
import xyz.alexcrea.cuanvil.util.MiniMessageUtil
-import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil.AnvilCost
import xyz.alexcrea.cuanvil.util.config.LoreEditConfigUtil
import xyz.alexcrea.cuanvil.util.config.LoreEditType
import java.util.*
@@ -44,8 +44,10 @@ object AnvilLoreEditUtil {
val page = book.pages[0]
val lines = ArrayList(page.split("\n"))
val outLines = ArrayList(lines.size)
- val colorCost = colorLines(player, LoreEditType.APPEND_BOOK,
- lines, outLines)
+ val colorCost = colorLines(
+ player, LoreEditType.APPEND_BOOK,
+ lines, outLines
+ )
lore.addAll(outLines)
@@ -81,7 +83,7 @@ object AnvilLoreEditUtil {
// Handle xp
cost.lore = uncolorCost
- cost.lore+= currentLore.size * LoreEditType.REMOVE_BOOK.perLineCost
+ cost.lore += currentLore.size * LoreEditType.REMOVE_BOOK.perLineCost
baseEditLoreXpCost(cost, first, result, LoreEditType.REMOVE_BOOK)
return result
@@ -120,7 +122,7 @@ object AnvilLoreEditUtil {
fun tryLoreEditByBook(player: HumanEntity, first: ItemStack, second: ItemStack): LoreEditResult {
val isAppend = bookLoreEditIsAppend(first, second) ?: return LoreEditResult.EMPTY
- val type = if(isAppend) LoreEditType.APPEND_BOOK else LoreEditType.REMOVE_BOOK
+ val type = if (isAppend) LoreEditType.APPEND_BOOK else LoreEditType.REMOVE_BOOK
val meta = second.itemMeta as BookMeta
val cost = AnvilCost()
@@ -166,9 +168,11 @@ object AnvilLoreEditUtil {
// A bit overdone to color 1 line but hey
val outList = ArrayList(1)
- val colorCost = colorLines(player, LoreEditType.APPEND_PAPER,
+ val colorCost = colorLines(
+ player, LoreEditType.APPEND_PAPER,
Collections.singletonList(second.itemMeta!!.displayName),
- outList)
+ outList
+ )
val line = outList[0]
if (appendEnd)
@@ -232,7 +236,7 @@ object AnvilLoreEditUtil {
second: ItemStack
): LoreEditResult {
val isAppend = paperLoreEditIsAppend(first, second) ?: return LoreEditResult.EMPTY
- val type = if(isAppend) LoreEditType.APPEND_BOOK else LoreEditType.REMOVE_BOOK
+ val type = if (isAppend) LoreEditType.APPEND_BOOK else LoreEditType.REMOVE_BOOK
val cost = AnvilCost()
val item = if (isAppend)
@@ -248,18 +252,20 @@ object AnvilLoreEditUtil {
result: ItemStack,
editType: LoreEditType
) {
- cost.lore+= editType.fixedCost
+ cost.lore += editType.fixedCost
cost.workPenalty = AnvilXpUtil.calculatePenalty(first, null, result, editType.useType)
}
fun colorPermission(player: Permissible, editType: LoreEditType): AnvilColorUtil.ColorPermissions {
- return AnvilColorUtil.calculatePermissions(player,
+ return AnvilColorUtil.calculatePermissions(
+ player,
false,
editType.allowColorCode,
editType.allowHexColor,
editType.allowMinimessage,
- AnvilColorUtil.ColorUseType.LORE_EDIT)
+ AnvilColorUtil.ColorUseType.LORE_EDIT
+ )
}
private fun colorLine(line: String, permission: AnvilColorUtil.ColorPermissions): Component? {
@@ -269,8 +275,10 @@ object AnvilLoreEditUtil {
)
}
- private fun colorLines(player: Permissible, editType: LoreEditType,
- lines: List, outLines: MutableList): Int {
+ private fun colorLines(
+ player: Permissible, editType: LoreEditType,
+ lines: List, outLines: MutableList
+ ): Int {
val permission = colorPermission(player, editType)
val colorCost = editType.useColorCost
@@ -297,7 +305,7 @@ object AnvilLoreEditUtil {
// Now handle color of each lines
var hasUndidColor = false
for ((index, line) in lines.withIndex()) {
- if(line == null){
+ if (line == null) {
lines[index] = null
continue
}
@@ -312,7 +320,7 @@ object AnvilLoreEditUtil {
hasUndidColor = true
result = clearedLine
} else {
- result = MiniMessageUtil.plain_text_mm.serialize(line)
+ result = MiniMessageUtil.plain_text_mm.serialize(line)
}
lines[index] = MiniMessageUtil.plain_text_mm.deserialize(result)
@@ -341,7 +349,7 @@ object AnvilLoreEditUtil {
var hasUndidColor = false
val result: String
- if(clearedLine != null){
+ if (clearedLine != null) {
hasUndidColor = true
result = clearedLine
} else {
diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/util/anvil/AnvilXpUtil.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/util/anvil/AnvilXpUtil.kt
index 8c39a0a..f6ee12f 100644
--- a/src/main/kotlin/xyz/alexcrea/cuanvil/util/anvil/AnvilXpUtil.kt
+++ b/src/main/kotlin/xyz/alexcrea/cuanvil/util/anvil/AnvilXpUtil.kt
@@ -14,6 +14,7 @@ import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.Repairable
import org.bukkit.persistence.PersistentDataType
+import xyz.alexcrea.cuanvil.anvil.AnvilCost
import xyz.alexcrea.cuanvil.anvil.AnvilUseType
import xyz.alexcrea.cuanvil.config.ConfigHolder
import xyz.alexcrea.cuanvil.dependency.DependencyManager
@@ -21,65 +22,12 @@ import xyz.alexcrea.cuanvil.dependency.economy.EconomyManager
import xyz.alexcrea.cuanvil.group.ConflictType
import xyz.alexcrea.cuanvil.util.AnvilTitleUtil
import xyz.alexcrea.cuanvil.util.dialog.AnvilRenameDialogUtil
-import java.math.BigDecimal
import kotlin.math.min
-import io.delilaheve.util.ConfigOptions.getMonetaryMultiplier as moneyMultiplier
object AnvilXpUtil {
const val EXCLUSIVE_PENALTY_PREFIX = "repair_cost"
- open class AnvilCost {
- private val isAlone: Boolean
- var valid = true // Get set as invalid if cost can be satisfied
- var isMonetary = false
-
- var generic = 0
- var enchantment = 0
- var repair = 0
- var rename = 0
- var lore = 0
- var illegalPenalty = 0
- var workPenalty = 0
- var recipe = 0
-
- constructor(generic: Int) {
- this.generic = generic
- isAlone = true
- }
-
- constructor() {
- isAlone = false
- }
-
- fun asXpCost(): Int {
- return generic + enchantment + repair + rename + lore + illegalPenalty + workPenalty + recipe
- }
-
- open fun asMonetaryCost(): BigDecimal {
- // multiply by per use type multipliers
- return BigDecimal(generic)
- .add(BigDecimal(enchantment).multiply(moneyMultiplier("enchantment")))
- .add(BigDecimal(repair).multiply(moneyMultiplier("repair")))
- .add(BigDecimal(rename).multiply(moneyMultiplier("rename")))
- .add(BigDecimal(lore).multiply(moneyMultiplier("lore_edit")))
- .add(BigDecimal(enchantment).multiply(moneyMultiplier("enchantment")))
- .add(BigDecimal(illegalPenalty).multiply(moneyMultiplier("work_penalty")))
- .add(BigDecimal(workPenalty).multiply(moneyMultiplier("work_penalty")))
- .add(BigDecimal(recipe).multiply(moneyMultiplier("recipe")))
- .multiply(moneyMultiplier("global"))
- }
- }
-
- class CustomCraftCost(val rawCost: Int): AnvilCost() {
-
- override fun asMonetaryCost(): BigDecimal {
- return BigDecimal(rawCost)
- .multiply(moneyMultiplier("global"))
- }
-
- }
-
/**
* Display the required cost (either as xp or as )
*/