use the adventure api

- migrate BungeeCord Chat API to Adventure API
- add some functions to literalText
- update some dependencies and plugins
This commit is contained in:
l4zs
2022-01-08 22:30:09 +01:00
parent 6bacddfdb5
commit 9c008dcba4
11 changed files with 156 additions and 84 deletions

View File

@@ -1,5 +1,11 @@
@file:Suppress("Unused")
package net.axay.kspigot.items
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.Component.text
import net.kyori.adventure.text.Component.translatable
import net.kyori.adventure.text.TranslatableComponent
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.inventory.ItemFlag
@@ -58,16 +64,16 @@ inline fun itemMeta(material: Material, builder: ItemMeta.() -> Unit) = itemMeta
* Sets the lore (description) of the item.
*/
inline fun ItemMeta.setLore(builder: ItemMetaLoreBuilder.() -> Unit) {
lore = ItemMetaLoreBuilder().apply(builder).lorelist
lore(ItemMetaLoreBuilder().apply(builder).lorelist)
}
/**
* Adds new lines to the lore (description) of the item.
*/
inline fun ItemMeta.addLore(builder: ItemMetaLoreBuilder.() -> Unit) {
val newLore = lore ?: mutableListOf<String>()
val newLore = lore() ?: mutableListOf<Component>()
newLore.addAll(ItemMetaLoreBuilder().apply(builder).lorelist)
lore = newLore
lore(newLore)
}
/**
@@ -75,10 +81,13 @@ inline fun ItemMeta.addLore(builder: ItemMetaLoreBuilder.() -> Unit) {
* It exists to provide overloaded operator functions.
*/
class ItemMetaLoreBuilder {
val lorelist = ArrayList<String>()
operator fun String.unaryPlus() {
val lorelist = ArrayList<Component>()
operator fun Component.unaryPlus() {
lorelist += this
}
operator fun String.unaryPlus() {
lorelist += text(this)
}
}
/**
@@ -104,9 +113,9 @@ fun ItemMeta.removeFlags(vararg itemFlag: ItemFlag) = removeItemFlags(*itemFlag)
/**
* Provides safe access to the items' displayName.
*/
var ItemMeta.name: String?
get() = if (hasDisplayName()) displayName else null
set(value) = setDisplayName(if (value == null || value == "") " " else value)
var ItemMeta.name: Component?
get() = if (hasDisplayName()) displayName() else null
set(value) = displayName(value ?: Component.space())
/**
* Provides safe access to the items' customModelData.
@@ -118,6 +127,6 @@ var ItemMeta.customModel: Int?
/**
* Provides more consistent access to the items' localizedName.
*/
var ItemMeta.localName: String
get() = localizedName
set(value) = setLocalizedName(value)
var ItemMeta.localName: TranslatableComponent
get() = if (hasDisplayName()) displayName() as TranslatableComponent else translatable("")
set(value) = displayName(value)