mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 08:14:00 +02:00
seems to work better
This commit is contained in:
parent
3992ce1662
commit
2d31a7f5a8
1 changed files with 14 additions and 8 deletions
|
|
@ -18,6 +18,7 @@ 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.persistence.PersistentDataType
|
import org.bukkit.persistence.PersistentDataType
|
||||||
import org.bukkit.plugin.Plugin
|
import org.bukkit.plugin.Plugin
|
||||||
|
|
@ -49,6 +50,10 @@ class AnvilRenameDialogImpl(
|
||||||
)
|
)
|
||||||
private val USER_FACING_CONFIRM = Component.text("Confirm").color(TextColor.fromHexString("#40FF40"))
|
private val USER_FACING_CONFIRM = Component.text("Confirm").color(TextColor.fromHexString("#40FF40"))
|
||||||
private val USER_FACING_CANCEL = Component.text("Cancel").color(TextColor.fromHexString("#FF4040"))
|
private val USER_FACING_CANCEL = Component.text("Cancel").color(TextColor.fromHexString("#FF4040"))
|
||||||
|
|
||||||
|
fun itemDefaultName(item: ItemStack?): String? {
|
||||||
|
return PLAIN_TEXT_SERIALIZER.serializeOrNull(item?.effectiveName())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val lastNames = HashMap<UUID, String>()
|
private val lastNames = HashMap<UUID, String>()
|
||||||
|
|
@ -76,7 +81,7 @@ class AnvilRenameDialogImpl(
|
||||||
val initialFinal = initial?.take(maxLength)
|
val initialFinal = initial?.take(maxLength)
|
||||||
|
|
||||||
val baseBuilder = DialogBase.builder(USER_FACING_RENAME_TITLE)
|
val baseBuilder = DialogBase.builder(USER_FACING_RENAME_TITLE)
|
||||||
.canCloseWithEscape(false)
|
.canCloseWithEscape(true)
|
||||||
.afterAction(DialogBase.DialogAfterAction.CLOSE)
|
.afterAction(DialogBase.DialogAfterAction.CLOSE)
|
||||||
.inputs(
|
.inputs(
|
||||||
listOf(
|
listOf(
|
||||||
|
|
@ -116,18 +121,18 @@ class AnvilRenameDialogImpl(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setResult(player: HumanEntity, view: CraftAnvilView, result: String?) {
|
private fun setResult(player: HumanEntity, view: InventoryView, result: String?) {
|
||||||
val defaultName = PLAIN_TEXT_SERIALIZER.serializeOrNull(view.getItem(0)?.effectiveName())
|
val defaultName = itemDefaultName(view.getItem(0))
|
||||||
if (defaultName == result) {
|
if (defaultName == result) {
|
||||||
setName(player, view, "", null)
|
setName(player, view, "", null)
|
||||||
if (defaultName != null) lastNames[player.uniqueId] = defaultName
|
if (defaultName != null) lastNames[player.uniqueId] = defaultName
|
||||||
} else setName(player, view, lastNames[player.uniqueId], result)
|
} else setName(player, view, result, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setName(player: HumanEntity, view: CraftAnvilView, name: String?, rename: String?) {
|
private fun setName(player: HumanEntity, view: InventoryView, 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 = name
|
menu.itemName = rename
|
||||||
|
|
||||||
if (name == null)
|
if (name == null)
|
||||||
lastNames.remove(player.uniqueId)
|
lastNames.remove(player.uniqueId)
|
||||||
|
|
@ -180,10 +185,10 @@ class AnvilRenameDialogImpl(
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastName == renameText)
|
if (lastName == renameText || lastRename == renameText)
|
||||||
return
|
return
|
||||||
|
|
||||||
if (renameText?.isBlank() == true) {
|
if (renameText?.isBlank() == true || renameText == itemDefaultName(leftItem)) {
|
||||||
setName(player, view, lastName, lastRename)
|
setName(player, view, lastName, lastRename)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -215,6 +220,7 @@ class AnvilRenameDialogImpl(
|
||||||
|
|
||||||
override fun closeInventory(player: HumanEntity) {
|
override fun closeInventory(player: HumanEntity) {
|
||||||
lastNames.remove(player.uniqueId)
|
lastNames.remove(player.uniqueId)
|
||||||
|
lastRenames.remove(player.uniqueId)
|
||||||
lastLeftItem.remove(player.uniqueId)
|
lastLeftItem.remove(player.uniqueId)
|
||||||
runTaskMap.remove(player.uniqueId)?.cancel()
|
runTaskMap.remove(player.uniqueId)?.cancel()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue