mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 08:14:00 +02:00
create AnvilUseType enum
This commit is contained in:
parent
33474c379a
commit
ea19ffc4a1
4 changed files with 18 additions and 15 deletions
|
|
@ -20,6 +20,7 @@ import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener.Companion.ANVIL_INPUT_
|
|||
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener.Companion.ANVIL_INPUT_RIGHT
|
||||
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener.Companion.ANVIL_OUTPUT_SLOT
|
||||
import xyz.alexcrea.cuanvil.recipe.AnvilCustomRecipe
|
||||
import xyz.alexcrea.cuanvil.util.AnvilUseType
|
||||
import xyz.alexcrea.cuanvil.util.AnvilXpUtil
|
||||
import xyz.alexcrea.cuanvil.util.CustomRecipeUtil
|
||||
import xyz.alexcrea.cuanvil.util.UnitRepairUtil.getRepair
|
||||
|
|
@ -239,7 +240,7 @@ class AnvilResultListener: Listener {
|
|||
}
|
||||
}
|
||||
|
||||
repairCost += AnvilXpUtil.calculatePenalty(leftItem, null, resultCopy)
|
||||
repairCost += AnvilXpUtil.calculatePenalty(leftItem, null, resultCopy, AnvilUseType.UNIT_REPAIR)
|
||||
repairCost += resultAmount * ConfigOptions.unitRepairCost
|
||||
|
||||
if (
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import org.bukkit.inventory.AnvilInventory
|
|||
import org.bukkit.inventory.ItemStack
|
||||
import xyz.alexcrea.cuanvil.dependency.DependencyManager
|
||||
import xyz.alexcrea.cuanvil.util.AnvilColorUtil
|
||||
import xyz.alexcrea.cuanvil.util.AnvilUseType
|
||||
import xyz.alexcrea.cuanvil.util.AnvilXpUtil
|
||||
import xyz.alexcrea.cuanvil.util.CustomRecipeUtil
|
||||
import xyz.alexcrea.cuanvil.util.UnitRepairUtil.getRepair
|
||||
|
|
@ -112,7 +113,7 @@ class PrepareAnvilListener : Listener {
|
|||
event.result = resultItem
|
||||
if(DependencyManager.tryTreatAnvilResult(event, resultItem)) return
|
||||
|
||||
anvilCost += AnvilXpUtil.calculatePenalty(first, null, resultItem)
|
||||
anvilCost += AnvilXpUtil.calculatePenalty(first, null, resultItem, AnvilUseType.RENAME_ONLY)
|
||||
|
||||
AnvilXpUtil.setAnvilInvXp(inventory, event.view, player, anvilCost)
|
||||
}
|
||||
|
|
@ -177,7 +178,7 @@ class PrepareAnvilListener : Listener {
|
|||
return
|
||||
}
|
||||
// As calculatePenalty edit result, we need to calculate penalty after checking equality
|
||||
anvilCost += AnvilXpUtil.calculatePenalty(first, second, resultItem)
|
||||
anvilCost += AnvilXpUtil.calculatePenalty(first, second, resultItem, AnvilUseType.MERGE)
|
||||
// Calculate rename cost
|
||||
anvilCost += handleRename(resultItem, inventory, player)
|
||||
|
||||
|
|
@ -201,7 +202,7 @@ class PrepareAnvilListener : Listener {
|
|||
anvilCost += repairAmount * ConfigOptions.unitRepairCost
|
||||
}
|
||||
// We do not care about right item penalty for unit repair
|
||||
anvilCost += AnvilXpUtil.calculatePenalty(first, null, resultItem, true)
|
||||
anvilCost += AnvilXpUtil.calculatePenalty(first, null, resultItem, AnvilUseType.UNIT_REPAIR)
|
||||
|
||||
// Test/stop if nothing changed.
|
||||
if (first == resultItem) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
package xyz.alexcrea.cuanvil.util
|
||||
|
||||
enum class AnvilUseType {
|
||||
|
||||
RENAME_ONLY,
|
||||
MERGE,
|
||||
UNIT_REPAIR
|
||||
|
||||
}
|
||||
|
|
@ -69,32 +69,24 @@ object AnvilXpUtil {
|
|||
}
|
||||
})
|
||||
}
|
||||
/**
|
||||
* Function to calculate work penalty of anvil work
|
||||
* Also change result work penalty if right item is not null
|
||||
*/
|
||||
fun calculatePenalty(left: ItemStack, right: ItemStack?, result: ItemStack): Int {
|
||||
return calculatePenalty(left, right, result, false)
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to calculate work penalty of anvil work
|
||||
* Also change result work penalty if right item is not null
|
||||
*/
|
||||
fun calculatePenalty(left: ItemStack, right: ItemStack?, result: ItemStack, unitRepair: Boolean): Int {
|
||||
fun calculatePenalty(left: ItemStack, right: ItemStack?, result: ItemStack, useType: AnvilUseType): Int {
|
||||
// Extracted From https://minecraft.fandom.com/wiki/Anvil_mechanics#Enchantment_equation
|
||||
// Calculate work penalty
|
||||
val penaltyType = ConfigOptions.workPenaltyType;
|
||||
val penaltyType = ConfigOptions.workPenaltyType
|
||||
val leftPenalty = (left.itemMeta as? Repairable)?.repairCost ?: 0
|
||||
|
||||
|
||||
val rightPenalty =
|
||||
if (right == null) 0
|
||||
else (right.itemMeta as? Repairable)?.repairCost ?: 0
|
||||
|
||||
|
||||
// Increase penalty on fusing or unit repair
|
||||
if(penaltyType.isPenaltyIncreasing && (right != null || unitRepair)){
|
||||
if(penaltyType.isPenaltyIncreasing && (right != null || AnvilUseType.UNIT_REPAIR == useType)){
|
||||
result.itemMeta?.let {
|
||||
(it as? Repairable)?.repairCost = leftPenalty * 2 + 1
|
||||
result.itemMeta = it
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue