mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 08:14:00 +02:00
monetary cost require dialog rename
This commit is contained in:
parent
fb27ad2e55
commit
171a8cad6d
9 changed files with 57 additions and 29 deletions
|
|
@ -433,7 +433,10 @@ lore_edit:
|
|||
# Allow to replace the xp cost by a monetary cost
|
||||
# If enabled it will not be bound to the experience level limits
|
||||
#
|
||||
# This feature can only be enabled starting with 1.21
|
||||
# It also requires to enable dialog rename (set "enable_dialog_rename: false" a bit higher)
|
||||
# If dialog rename permission is enabled and player do not have the permission merge will fall back to vanilla xp cost
|
||||
#
|
||||
# As this feature require dialog rename, it can only be enabled starting with paper 1.21.6
|
||||
monetary_cost:
|
||||
enabled: false
|
||||
# If using vault unlocked this allow to specify what currency should be used for anvil usage
|
||||
|
|
|
|||
|
|
@ -453,7 +453,10 @@ lore_edit:
|
|||
# Allow to replace the xp cost by a monetary cost
|
||||
# If enabled it will not be bound to the experience level limits
|
||||
#
|
||||
# This feature can only be enabled starting with 1.21
|
||||
# It also requires to enable dialog rename (set "enable_dialog_rename: false" a bit higher)
|
||||
# If dialog rename permission is enabled and player do not have the permission merge will fall back to vanilla xp cost
|
||||
#
|
||||
# As this feature require dialog rename, it can only be enabled starting with paper 1.21.6
|
||||
monetary_cost:
|
||||
enabled: false
|
||||
# If using vault unlocked this allow to specify what currency should be used for anvil usage
|
||||
|
|
|
|||
|
|
@ -445,7 +445,10 @@ lore_edit:
|
|||
# Allow to replace the xp cost by a monetary cost
|
||||
# If enabled it will not be bound to the experience level limits
|
||||
#
|
||||
# This feature can only be enabled starting with 1.21
|
||||
# It also requires to enable dialog rename (set "enable_dialog_rename: false" a bit higher)
|
||||
# If dialog rename permission is enabled and player do not have the permission merge will fall back to vanilla xp cost
|
||||
#
|
||||
# As this feature require dialog rename, it can only be enabled starting with paper 1.21.6
|
||||
monetary_cost:
|
||||
enabled: false
|
||||
# If using vault unlocked this allow to specify what currency should be used for anvil usage
|
||||
|
|
|
|||
|
|
@ -433,7 +433,10 @@ lore_edit:
|
|||
# Allow to replace the xp cost by a monetary cost
|
||||
# If enabled it will not be bound to the experience level limits
|
||||
#
|
||||
# This feature can only be enabled starting with 1.21
|
||||
# It also requires to enable dialog rename (set "enable_dialog_rename: false" a bit higher)
|
||||
# If dialog rename permission is enabled and player do not have the permission merge will fall back to vanilla xp cost
|
||||
#
|
||||
# As this feature require dialog rename, it can only be enabled starting with paper 1.21.6
|
||||
monetary_cost:
|
||||
enabled: false
|
||||
# If using vault unlocked this allow to specify what currency should be used for anvil usage
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ import org.bukkit.inventory.InventoryView
|
|||
object AnvilTitleUtil {
|
||||
|
||||
fun rename(view: InventoryView, name: String) {
|
||||
if(view.title == name) return
|
||||
|
||||
view.title = name
|
||||
}
|
||||
|
||||
|
|
@ -3,15 +3,16 @@ package io.delilaheve.util
|
|||
import io.delilaheve.CustomAnvil
|
||||
import io.delilaheve.util.EnchantmentUtil.enchantmentName
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.entity.HumanEntity
|
||||
import xyz.alexcrea.cuanvil.config.ConfigHolder
|
||||
import xyz.alexcrea.cuanvil.config.WorkPenaltyType
|
||||
import xyz.alexcrea.cuanvil.config.WorkPenaltyType.WorkPenaltyPart
|
||||
import xyz.alexcrea.cuanvil.dependency.DependencyManager
|
||||
import xyz.alexcrea.cuanvil.dependency.economy.EconomyManager
|
||||
import xyz.alexcrea.cuanvil.enchant.CAEnchantment
|
||||
import xyz.alexcrea.cuanvil.update.UpdateUtils
|
||||
import xyz.alexcrea.cuanvil.update.Version
|
||||
import xyz.alexcrea.cuanvil.util.AnvilUseType
|
||||
import xyz.alexcrea.cuanvil.util.dialog.AnvilRenameDialogUtil
|
||||
import java.math.BigDecimal
|
||||
import java.util.*
|
||||
|
||||
|
|
@ -90,9 +91,6 @@ object ConfigOptions {
|
|||
const val DEBUG_LOGGING = "debug_log"
|
||||
const val VERBOSE_DEBUG_LOGGING = "debug_log_verbose"
|
||||
|
||||
// Minimum versions
|
||||
val MINIMUM_MONETARY_COST_VER = Version(1, 21, 0)
|
||||
|
||||
// ----------------------
|
||||
// Default config values
|
||||
// ----------------------
|
||||
|
|
@ -181,6 +179,11 @@ object ConfigOptions {
|
|||
// Default max before merge disabled (negative mean enabled)
|
||||
const val DEFAULT_MAX_BEFORE_MERGE_DISABLED = -1
|
||||
|
||||
// -----------
|
||||
// Permissions
|
||||
// -----------
|
||||
private const val RENAME_DIALOG_PERMISSION = "ca.rename.dialog"
|
||||
|
||||
// -------------
|
||||
// Get methods
|
||||
// -------------
|
||||
|
|
@ -469,6 +472,13 @@ object ConfigOptions {
|
|||
.getBoolean(DIALOG_RENAME_USE_PERMISSION, DEFAULT_DIALOG_RENAME_USE_PERMISSION)
|
||||
}
|
||||
|
||||
fun canUseDialogRename(player: HumanEntity): Boolean {
|
||||
if(!doRenameDialog || !AnvilRenameDialogUtil.anvilRenameDialog.canSendDialog()) return false
|
||||
if(doRenameDialogUsePermission && !player.hasPermission(RENAME_DIALOG_PERMISSION)) return false
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* Do the dialog menu require permission
|
||||
*/
|
||||
|
|
@ -643,12 +653,12 @@ object ConfigOptions {
|
|||
}
|
||||
|
||||
/*
|
||||
* Monetary configs (only for 1.21+)
|
||||
* Monetary configs (only for 1.21.6+)
|
||||
* Also require dialog rename
|
||||
*/
|
||||
val shouldUseMoney: Boolean
|
||||
get() {
|
||||
fun shouldUseMoney(player: HumanEntity): Boolean {
|
||||
return EconomyManager.economy?.initialized() == true &&
|
||||
UpdateUtils.currentMinecraftVersion().greaterEqual(MINIMUM_MONETARY_COST_VER) &&
|
||||
canUseDialogRename(player) &&
|
||||
ConfigHolder.DEFAULT_CONFIG
|
||||
.config
|
||||
.getBoolean(SHOULD_USE_MONEY, DEFAULT_SHOULD_USE_MONEY)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package xyz.alexcrea.cuanvil.listener
|
||||
|
||||
import com.github.stefvanschie.inventoryframework.util.InventoryViewUtil
|
||||
import com.jankominek.disenchantment.utils.AnvilCostUtils
|
||||
import io.delilaheve.CustomAnvil
|
||||
import io.delilaheve.util.ConfigOptions
|
||||
import io.delilaheve.util.EnchantmentUtil.combineWith
|
||||
|
|
@ -19,6 +20,7 @@ import org.bukkit.event.EventPriority
|
|||
import org.bukkit.event.Listener
|
||||
import org.bukkit.event.inventory.PrepareAnvilEvent
|
||||
import org.bukkit.inventory.AnvilInventory
|
||||
import org.bukkit.inventory.InventoryView
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import org.bukkit.inventory.meta.EnchantmentStorageMeta
|
||||
import org.bukkit.inventory.meta.ItemMeta
|
||||
|
|
@ -45,8 +47,6 @@ class PrepareAnvilListener : Listener {
|
|||
const val ANVIL_OUTPUT_SLOT = 2
|
||||
|
||||
var IS_EMPTY_TEST = false
|
||||
|
||||
private const val RENAME_DIALOG_PERMISSION = "ca.rename.dialog"
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -121,29 +121,26 @@ class PrepareAnvilListener : Listener {
|
|||
// Test for lore edit
|
||||
if (testLoreEdit(event, inventory, player, first, second)) return
|
||||
|
||||
CustomAnvil.log("no anvil fuse type found")
|
||||
event.result = null
|
||||
|
||||
}
|
||||
|
||||
private fun setNoResult(event: PrepareAnvilEvent, view: InventoryView) {
|
||||
event.result = null
|
||||
AnvilXpUtil.onNoResult(view)
|
||||
}
|
||||
|
||||
private fun tryRenameDialog(
|
||||
player: HumanEntity,
|
||||
event: PrepareAnvilEvent
|
||||
) {
|
||||
if(!canUseRenameDialog(player)) return
|
||||
if(!ConfigOptions.canUseDialogRename(player)) return
|
||||
|
||||
AnvilRenameDialogUtil.anvilRenameDialog.tryShowDialog(player, event)
|
||||
}
|
||||
|
||||
private fun canUseRenameDialog(player: HumanEntity): Boolean {
|
||||
if(!ConfigOptions.doRenameDialog || !AnvilRenameDialogUtil.anvilRenameDialog.canSendDialog()) return false
|
||||
if(ConfigOptions.doRenameDialogUsePermission && !player.hasPermission(RENAME_DIALOG_PERMISSION)) return false
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
private fun processDialogPCD(it: ItemMeta, player: HumanEntity) {
|
||||
val keepDialog = canUseRenameDialog(player) && ConfigOptions.shouldKeepRenameText
|
||||
val keepDialog = ConfigOptions.canUseDialogRename(player) && ConfigOptions.shouldKeepRenameText
|
||||
|
||||
val pdc = it.persistentDataContainer
|
||||
if(!keepDialog)
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@ import io.delilaheve.util.ConfigOptions.getMonetaryMultiplier as moneyMultiplier
|
|||
import io.delilaheve.util.EnchantmentUtil.enchantmentName
|
||||
import io.delilaheve.util.ItemUtil.findEnchantments
|
||||
import io.delilaheve.util.ItemUtil.isEnchantedBook
|
||||
import net.kyori.adventure.text.Component
|
||||
import net.kyori.adventure.text.format.TextColor
|
||||
import org.bukkit.GameMode
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.entity.HumanEntity
|
||||
|
|
@ -21,6 +19,7 @@ import xyz.alexcrea.cuanvil.config.ConfigHolder
|
|||
import xyz.alexcrea.cuanvil.dependency.DependencyManager
|
||||
import xyz.alexcrea.cuanvil.dependency.economy.EconomyManager
|
||||
import xyz.alexcrea.cuanvil.group.ConflictType
|
||||
import xyz.alexcrea.cuanvil.util.dialog.AnvilRenameDialogUtil
|
||||
import java.math.BigDecimal
|
||||
import kotlin.math.min
|
||||
|
||||
|
|
@ -64,7 +63,7 @@ object AnvilXpUtil {
|
|||
cost: AnvilCost,
|
||||
ignoreRules: Boolean = false
|
||||
) {
|
||||
if (ConfigOptions.shouldUseMoney)
|
||||
if (ConfigOptions.shouldUseMoney(player))
|
||||
setAnvilPrice(inventory, view, player, cost)
|
||||
else
|
||||
setAnvilInvXp(inventory, view, player, cost.sum(), ignoreRules)
|
||||
|
|
@ -228,6 +227,11 @@ object AnvilXpUtil {
|
|||
return resultSum
|
||||
}
|
||||
|
||||
fun onNoResult(player: HumanEntity, view: InventoryView) {
|
||||
if (ConfigOptions.shouldUseMoney(player))
|
||||
AnvilTitleUtil.rename(view, "")
|
||||
}
|
||||
|
||||
private fun exclusivePenaltyKey(useType: AnvilUseType): NamespacedKey {
|
||||
return NamespacedKey(CustomAnvil.instance, "${EXCLUSIVE_PENALTY_PREFIX}_${useType.typeName}")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -435,7 +435,10 @@ lore_edit:
|
|||
# Allow to replace the xp cost by a monetary cost
|
||||
# If enabled it will not be bound to the experience level limits
|
||||
#
|
||||
# This feature can only be enabled starting with 1.21
|
||||
# It also requires to enable dialog rename (set "enable_dialog_rename: false" a bit higher)
|
||||
# If dialog rename permission is enabled and player do not have the permission merge will fall back to vanilla xp cost
|
||||
#
|
||||
# As this feature require dialog rename, it can only be enabled starting with paper 1.21.6
|
||||
monetary_cost:
|
||||
enabled: false
|
||||
# If using vault unlocked this allow to specify what currency should be used for anvil usage
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue