update from v1.18.0

This commit is contained in:
alexcrea 2026-07-10 15:50:50 +02:00
parent 13892f73b8
commit 036f480113
Signed by: alexcrea
GPG key ID: E59DF23EE2A2266C
7 changed files with 16 additions and 14 deletions

View file

@ -18,8 +18,8 @@ import org.bukkit.craftbukkit.inventory.CraftInventoryView
import org.bukkit.craftbukkit.inventory.view.CraftAnvilView import org.bukkit.craftbukkit.inventory.view.CraftAnvilView
import org.bukkit.entity.HumanEntity import org.bukkit.entity.HumanEntity
import org.bukkit.event.inventory.PrepareAnvilEvent import org.bukkit.event.inventory.PrepareAnvilEvent
import org.bukkit.inventory.InventoryView
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.view.AnvilView
import org.bukkit.persistence.PersistentDataType import org.bukkit.persistence.PersistentDataType
import org.bukkit.plugin.Plugin import org.bukkit.plugin.Plugin
import java.util.* import java.util.*
@ -121,7 +121,7 @@ class AnvilRenameDialogImpl(
} }
} }
private fun setResult(player: HumanEntity, view: InventoryView, result: String?) { private fun setResult(player: HumanEntity, view: AnvilView, result: String?) {
val defaultName = itemDefaultName(view.getItem(0)) val defaultName = itemDefaultName(view.getItem(0))
if (defaultName == result) { if (defaultName == result) {
setName(player, view, "", null) setName(player, view, "", null)
@ -129,7 +129,7 @@ class AnvilRenameDialogImpl(
} else setName(player, view, result, result) } else setName(player, view, result, result)
} }
private fun setName(player: HumanEntity, view: InventoryView, name: String?, rename: String?) { private fun setName(player: HumanEntity, view: AnvilView, name: String?, rename: String?) {
val menu = (containerField.get(view) as AnvilMenu) val menu = (containerField.get(view) as AnvilMenu)
val isSameName = menu.itemName == name val isSameName = menu.itemName == name
menu.itemName = rename menu.itemName = rename

View file

@ -2,17 +2,18 @@ package xyz.alexcrea.cuanvil.util
import io.papermc.paper.threadedregions.scheduler.ScheduledTask import io.papermc.paper.threadedregions.scheduler.ScheduledTask
import org.bukkit.entity.HumanEntity import org.bukkit.entity.HumanEntity
import org.bukkit.inventory.InventoryView import org.bukkit.inventory.view.AnvilView
import org.bukkit.plugin.Plugin import org.bukkit.plugin.Plugin
import xyz.alexcrea.cuanvil.dialog.AnvilRenameDialog import xyz.alexcrea.cuanvil.dialog.AnvilRenameDialog
import java.util.HashMap import java.util.HashMap
import java.util.UUID import java.util.UUID
@Suppress("UnstableApiUsage")
object AnvilTitleUtil { object AnvilTitleUtil {
private val runTaskMap = HashMap<UUID, ScheduledTask>() private val runTaskMap = HashMap<UUID, ScheduledTask>()
private fun actualRename(view: InventoryView, name: String, player: HumanEntity, anvilDialog: AnvilRenameDialog) { private fun actualRename(view: AnvilView, name: String, player: HumanEntity, anvilDialog: AnvilRenameDialog) {
runTaskMap.remove(player.uniqueId) runTaskMap.remove(player.uniqueId)
if (view.title == name) return if (view.title == name) return
@ -24,7 +25,7 @@ object AnvilTitleUtil {
// We don't want to rename instantly it is causing issue with rename text // We don't want to rename instantly it is causing issue with rename text
// especially as it can "override" current ui when it is rename ui time but rename ui also need some delay // especially as it can "override" current ui when it is rename ui time but rename ui also need some delay
fun rename(view: InventoryView, name: String, player: HumanEntity, anvilDialog: AnvilRenameDialog, plugin: Plugin) { fun rename(view: AnvilView, name: String, player: HumanEntity, anvilDialog: AnvilRenameDialog, plugin: Plugin) {
runTaskMap.remove(player.uniqueId)?.cancel() runTaskMap.remove(player.uniqueId)?.cancel()
val task = player.scheduler.runDelayed( val task = player.scheduler.runDelayed(

View file

@ -5,7 +5,6 @@ import org.bukkit.Material.ENCHANTED_BOOK
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.Damageable import org.bukkit.inventory.meta.Damageable
import xyz.alexcrea.cuanvil.update.UpdateUtils import xyz.alexcrea.cuanvil.update.UpdateUtils
import xyz.alexcrea.cuanvil.enchant.CAEnchantment
import xyz.alexcrea.cuanvil.util.MaterialUtil.customType import xyz.alexcrea.cuanvil.util.MaterialUtil.customType
import kotlin.math.ceil import kotlin.math.ceil
import kotlin.math.max import kotlin.math.max
@ -49,7 +48,6 @@ object ItemUtil {
val secondDurability = maxDamage - secondDamage val secondDurability = maxDamage - secondDamage
val combinedDurability = firstDurability + secondDurability val combinedDurability = firstDurability + secondDurability
val newDurability = min(combinedDurability, maxDamage) val newDurability = min(combinedDurability, maxDamage)
val maxDamage = if(it.hasMaxDamage()) it.maxDamage else Int.MAX_VALUE
meta.damage = min(maxDamage - newDurability, maxDamage) meta.damage = min(maxDamage - newDurability, maxDamage)
this.itemMeta = meta this.itemMeta = meta

View file

@ -116,7 +116,7 @@ class EnchantExecutor : CASubCommand {
} }
private fun firstEnchantment(name: String): CAEnchantment? { private fun firstEnchantment(name: String): CAEnchantment? {
val enchants = EnchantmentApi.getListByName(name.lowercase()) val enchants = EnchantmentApi.getByName(name.lowercase())
if (!enchants.isEmpty()) if (!enchants.isEmpty())
return enchants.iterator().next() return enchants.iterator().next()

View file

@ -334,7 +334,7 @@ object DependencyManager {
private val prepareAnvilConstructor = private val prepareAnvilConstructor =
PrepareAnvilEvent::class.java.constructors.first() as Constructor<PrepareAnvilEvent> PrepareAnvilEvent::class.java.constructors.first() as Constructor<PrepareAnvilEvent>
fun createFakeEvent(view: InventoryView, result: ItemStack?): PrepareAnvilEvent { fun createFakeEvent(view: AnvilView, result: ItemStack?): PrepareAnvilEvent {
return prepareAnvilConstructor.newInstance(view, result) return prepareAnvilConstructor.newInstance(view, result)
} }

View file

@ -1,10 +1,11 @@
package xyz.alexcrea.cuanvil.dependency.gui package xyz.alexcrea.cuanvil.dependency.gui
import org.bukkit.inventory.InventoryView import org.bukkit.inventory.view.AnvilView
import xyz.alexcrea.cuanvil.dependency.MinecraftVersionUtil import xyz.alexcrea.cuanvil.dependency.MinecraftVersionUtil
import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil import xyz.alexcrea.cuanvil.dependency.util.PlatformUtil
import java.lang.reflect.Method import java.lang.reflect.Method
@Suppress("UnstableApiUsage")
class GenericExternGuiTester { class GenericExternGuiTester {
companion object { companion object {
@ -21,7 +22,7 @@ class GenericExternGuiTester {
var testedClass: String? = null var testedClass: String? = null
lateinit var getHandleMethod: Method lateinit var getHandleMethod: Method
private fun getContainerClass(view: InventoryView): Class<Any>? { private fun getContainerClass(view: AnvilView): Class<Any>? {
if(!testedClass.contentEquals(view.javaClass.name)) if(!testedClass.contentEquals(view.javaClass.name))
return null return null
@ -64,7 +65,7 @@ class GenericExternGuiTester {
} }
// Try if were in another plugin anvil inventory // Try if were in another plugin anvil inventory
fun testIfGui(view: InventoryView): Boolean { fun testIfGui(view: AnvilView): Boolean {
// In case we are in a test environment // In case we are in a test environment
if(isInTest()) return false if(isInTest()) return false

View file

@ -2,15 +2,17 @@ package xyz.alexcrea.cuanvil.dependency.plugins
import org.bukkit.event.Event import org.bukkit.event.Event
import org.bukkit.event.inventory.InventoryClickEvent import org.bukkit.event.inventory.InventoryClickEvent
import org.bukkit.inventory.view.AnvilView
import org.bukkit.plugin.Plugin import org.bukkit.plugin.Plugin
import xyz.alexcrea.cuanvil.dependency.DependencyManager import xyz.alexcrea.cuanvil.dependency.DependencyManager
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener.Companion.ANVIL_INPUT_LEFT import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener.Companion.ANVIL_INPUT_LEFT
import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener.Companion.ANVIL_OUTPUT_SLOT import xyz.alexcrea.cuanvil.listener.PrepareAnvilListener.Companion.ANVIL_OUTPUT_SLOT
@Suppress("UnstableApiUsage")
class EnchantedBookDependency(plugin: Plugin) : GenericPluginDependency(plugin) { class EnchantedBookDependency(plugin: Plugin) : GenericPluginDependency(plugin) {
override fun testAnvilResult(event: InventoryClickEvent): Boolean { override fun testAnvilResult(event: InventoryClickEvent): Boolean {
val view = event.view val view = event.view as? AnvilView ?: return false
val inv = event.inventory val inv = event.inventory
//TODO use view here (v2) //TODO use view here (v2)