Compare commits

..

4 commits

6 changed files with 35 additions and 34 deletions

View file

@ -37,7 +37,7 @@ object PlatformUtil {
// Lore
fun ItemMeta.componentLore(): MutableList<Component> {
val lore: List<Component>?
if(isPaper){
if (isPaper) {
lore = this.lore()
} else {
val legacyLores = this.lore ?: return ArrayList()
@ -52,49 +52,41 @@ object PlatformUtil {
}
fun ItemMeta.setComponentLore(lore: List<Component?>) {
if(isPaper){
if (isPaper) {
this.lore(lore)
} else {
val legacyLore = ArrayList<String?>(lore.size)
for (component in lore) {
legacyLore.add(if(component == null) null
else legacy_mm.serialize(component))
legacyLore.add(
if (component == null) null
else legacy_mm.serialize(component)
)
}
this.lore = legacyLore
}
}
// Display name
private val useCustomName = hasMethod(ItemStack::class.java, "customName")
fun ItemMeta.componentDisplayName(): Component? {
if(useCustomName){
if(!this.hasCustomName()) return null
return this.customName()
}else if(isPaper){
if(!this.hasDisplayName()) return null
return this.displayName()
} else {
if(!this.hasDisplayName()) return null
if (!this.hasDisplayName()) return null
val legacy = this.displayName
return legacy_mm.deserialize(legacy)
return if (isPaper) {
this.displayName()
} else {
legacy_mm.deserialize(this.displayName)
}
}
fun ItemMeta.setComponentDisplayName(component: Component?) {
if(useCustomName){
this.customName(component)
}else if(isPaper){
fun ItemMeta.setComponentDisplayName(component: Component?, fallback: String? = null) {
if (isPaper) {
this.displayName(component)
} else {
if(component == null){
if (component == null) {
this.setDisplayName(null)
return
}
val legacy = legacy_mm.serialize(component)
val legacy = fallback ?: legacy_mm.serialize(component)
this.setDisplayName(legacy)
}
}

View file

@ -136,7 +136,7 @@ open class CustomAnvil : JavaPlugin() {
override fun onEnable() {
instance = this
try {
legacyCheck()
if(legacyCheck()) return
} catch (e: Exception) {
logger.log(Level.SEVERE, "error trying to check for legacy system", e)
MetricsUtil.trackError(e)
@ -202,14 +202,15 @@ open class CustomAnvil : JavaPlugin() {
}
}
private fun legacyCheck() {
private fun legacyCheck(): Boolean {
val currentVersion = UpdateUtils.currentMinecraftVersion()
if (currentVersion.greaterEqual(Version(1, 21, 0))
&& !DependencyManager.inTesting) {
&& !DependencyManager.inTesting
&& !"true".equals(System.getenv("CUSTOM_ANVIL_BYPASS_LEGACY_CHECK"), true)) {
logger.warning("You are running a Minecraft version above or equal to 1.21.0")
logger.warning("Please use CustomAnvil v2 instead if you wish to use the plugin with this version.")
Bukkit.getPluginManager().disablePlugin(this)
return
return true
}
// Disable old plugin name if exist
val potentialPlugin = Bukkit.getPluginManager().getPlugin("UnsafeEnchantsPlus")
@ -242,6 +243,7 @@ open class CustomAnvil : JavaPlugin() {
logger.warning("An update may be available: $latestVer")
}
return false
}
private fun registerListeners() {

View file

@ -75,6 +75,6 @@ object ItemUtil {
* The two items should either be the same type, or, the [other] is a book
*/
fun ItemStack.canMergeWith(
other: ItemStack?
) = (other != null) && (customType == other.customType || (other.isEnchantedBook()))
other: ItemStack
) = customType == other.customType || (other.isEnchantedBook())
}

View file

@ -6,6 +6,7 @@ import io.delilaheve.util.EnchantmentUtil.combineWith
import io.delilaheve.util.ItemUtil.isEnchantedBook
import io.delilaheve.util.ItemUtil.repairFrom
import io.delilaheve.util.ItemUtil.unitRepair
import net.kyori.adventure.text.Component
import org.bukkit.ChatColor
import org.bukkit.Material
import org.bukkit.entity.HumanEntity
@ -17,6 +18,7 @@ import org.bukkit.inventory.meta.ItemMeta
import org.bukkit.persistence.PersistentDataType
import xyz.alexcrea.cuanvil.api.EnchantmentApi
import xyz.alexcrea.cuanvil.dependency.DependencyManager
import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil.setComponentDisplayName
import xyz.alexcrea.cuanvil.dialog.AnvilRenameDialog
import xyz.alexcrea.cuanvil.enchant.CAEnchantment
import xyz.alexcrea.cuanvil.recipe.AnvilCustomRecipe
@ -139,11 +141,12 @@ object AnvilMergeLogic {
private fun handleRename(resultItem: ItemStack, inventory: AnvilInventory, player: HumanEntity): Int {
// Can be null
var renameText = ChatColor.stripColor(inventory.renameText)
var component: Component? = null
var sumCost = 0
var useColor = false
if (ConfigOptions.renameColorPossible && renameText != null) {
val component = AnvilColorUtil.handleColor(
component = AnvilColorUtil.handleColor(
renameText,
AnvilColorUtil.renamePermission(player)
)
@ -170,7 +173,11 @@ object AnvilMergeLogic {
renameText == CasedStringUtil.snakeToUpperSpacedCase(resultItem.type.name.lowercase())
)
) {
it.setDisplayName(renameText)
if (component == null)
component = if (renameText == null || renameText.isEmpty()) null
else Component.text(renameText)
it.setComponentDisplayName(component, renameText)
processDialogPCD(it, player)
resultItem.itemMeta = it

View file

@ -31,6 +31,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.util.CustomRecipeUtil
import xyz.alexcrea.cuanvil.util.MaterialUtil.isAir
import xyz.alexcrea.cuanvil.util.MiniMessageUtil
import xyz.alexcrea.cuanvil.util.anvil.AnvilLoreEditUtil
import xyz.alexcrea.cuanvil.util.anvil.AnvilXpUtil
@ -92,7 +93,7 @@ class AnvilResultListener : Listener {
}
// Rename
if (rightItem == null) {
if (rightItem.isAir) {
val result = AnvilMergeLogic.doRenaming(view, inventory, player, leftItem)
if (result.isEmpty()) return
@ -106,7 +107,7 @@ class AnvilResultListener : Listener {
}
// Merge
val canMerge = leftItem.canMergeWith(rightItem)
val canMerge = leftItem.canMergeWith(rightItem!!)
if (canMerge) {
val result = AnvilMergeLogic.doMerge(view, inventory, player, leftItem, rightItem)

View file

@ -1,6 +1,5 @@
package xyz.alexcrea.cuanvil.util
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.NamespacedKey
import org.bukkit.inventory.ItemStack