Skip to content

Commit

Permalink
Refactor BukkitFcItem and BukkitFcText to fix item name/lore.
Browse files Browse the repository at this point in the history
  • Loading branch information
BenWoodworth committed Mar 1, 2019
1 parent 2058eb2 commit 8631258
Show file tree
Hide file tree
Showing 20 changed files with 131 additions and 91 deletions.
Expand Up @@ -5,10 +5,12 @@ import net.benwoodworth.fastcraft.bukkit.item.BukkitFcItemConverter
import net.benwoodworth.fastcraft.events.HandlerSet
import net.benwoodworth.fastcraft.platform.gui.FcGuiClickEvent
import net.benwoodworth.fastcraft.platform.item.FcItem
import net.benwoodworth.fastcraft.platform.text.FcLocale
import org.bukkit.inventory.Inventory

class BukkitFcGuiButton_1_13_00_R01(
private val inventory: Inventory,
private val locale: FcLocale,
private val slotIndex: Int,
private val itemConverter: BukkitFcItemConverter
) : BukkitFcGuiButton {
Expand All @@ -17,7 +19,7 @@ class BukkitFcGuiButton_1_13_00_R01(

override fun setItem(item: FcItem?) {
with(itemConverter) {
inventory.setItem(slotIndex, item?.bukkit?.toItemStack())
inventory.setItem(slotIndex, item?.bukkit?.toItemStack(locale))
}
}
}
Expand Up @@ -30,7 +30,7 @@ class BukkitFcGuiFactory_1_13_00_R01 @Inject constructor(
return BukkitFcGui_1_13_00_R01(
player,
{ owner -> server.createInventory(owner, 9 * height, legacyTitle) },
{ inventory -> BukkitFcGuiLayoutGrid_1_13_00_R01(9, height, inventory, itemConverter) },
{ inventory -> BukkitFcGuiLayoutGrid_1_13_00_R01(9, height, inventory, player.locale, itemConverter) },
plugin,
legacyTextFactory,
pluginManager
Expand Down
Expand Up @@ -2,12 +2,14 @@ package net.benwoodworth.fastcraft.bukkit.gui

import net.benwoodworth.fastcraft.bukkit.item.BukkitFcItemConverter
import net.benwoodworth.fastcraft.platform.gui.FcGuiButton
import net.benwoodworth.fastcraft.platform.text.FcLocale
import org.bukkit.inventory.Inventory

class BukkitFcGuiLayoutGrid_1_13_00_R01(
override val width: Int,
override val height: Int,
inventory: Inventory,
override val locale: FcLocale,
itemConverter: BukkitFcItemConverter
) : BukkitFcGuiLayout_1_13_00_R01(inventory, itemConverter), BukkitFcGuiLayoutGrid {

Expand Down
Expand Up @@ -2,13 +2,16 @@ package net.benwoodworth.fastcraft.bukkit.gui

import net.benwoodworth.fastcraft.bukkit.item.BukkitFcItemConverter
import net.benwoodworth.fastcraft.platform.gui.FcGuiButton
import net.benwoodworth.fastcraft.platform.text.FcLocale
import org.bukkit.inventory.Inventory

abstract class BukkitFcGuiLayout_1_13_00_R01(
override val inventory: Inventory,
private val itemConverter: BukkitFcItemConverter
) : BukkitFcGuiLayout {

protected abstract val locale: FcLocale

private val buttons: MutableMap<Int, FcGuiButton> = mutableMapOf()

override fun getSlotButton(slot: Int): FcGuiButton? {
Expand All @@ -17,7 +20,7 @@ abstract class BukkitFcGuiLayout_1_13_00_R01(

protected fun getSlotButtonOrCreate(slot: Int): FcGuiButton {
return buttons.getOrPut(slot) {
BukkitFcGuiButton_1_13_00_R01(inventory, slot, itemConverter)
BukkitFcGuiButton_1_13_00_R01(inventory, locale, slot, itemConverter)
}
}
}
@@ -1,12 +1,28 @@
package net.benwoodworth.fastcraft.bukkit.item

import net.benwoodworth.fastcraft.bukkit.text.BukkitFcTextConverter
import net.benwoodworth.fastcraft.platform.text.FcLocale
import org.bukkit.inventory.ItemStack
import javax.inject.Inject

class BukkitFcItemConverter_1_13_00_R01 @Inject constructor(
private val textConverter: BukkitFcTextConverter
) : BukkitFcItemConverter {

override fun BukkitFcItem.toItemStack(): ItemStack {
return itemStack.clone()
override fun BukkitFcItem.toItemStack(locale: FcLocale): ItemStack {
val itemStack = base.clone()
val meta = itemStack.itemMeta

with(textConverter) {

meta.displayName = displayName?.toLegacy(locale)

meta.lore = lore
.takeIf { it.any() }
?.map { it.toLegacy(locale) }
}

itemStack.itemMeta = meta
return itemStack
}
}
Expand Up @@ -18,31 +18,30 @@ class BukkitFcItemFactory_1_13_00_R01 @Inject constructor(
type: FcItemType,
amount: Int,
displayName: FcText?,
lore: List<FcText>?
lore: List<FcText>
): FcItem {
val item = ItemStack(type.bukkit.material, amount)

return BukkitFcItem_1_13_00_R01(
itemStack = item,
base = item,
displayName = displayName,
lore = lore,
itemTypes = itemTypes
)
}

override fun createFcItem(
copy: FcItem,
override fun FcItem.copy(
type: FcItemType,
amount: Int,
displayName: FcText?,
lore: List<FcText>?
lore: List<FcText>
): FcItem {
val item = copy.bukkit.itemStack
val item = bukkit.base
item.type = type.bukkit.material
item.amount = amount

return BukkitFcItem_1_13_00_R01(
itemStack = item,
base = item,
displayName = displayName,
lore = lore,
itemTypes = itemTypes
Expand All @@ -54,11 +53,12 @@ class BukkitFcItemFactory_1_13_00_R01 @Inject constructor(
val meta = item.getItemMetaOrNull()

return BukkitFcItem_1_13_00_R01(
itemStack = item,
base = item,
displayName = meta?.displayName
?.let { textFactory.createFcText(it) },
lore = meta?.lore
?.map { textFactory.createFcText(it ?: "") },
?.map { textFactory.createFcText(it ?: "") }
?: emptyList(),
itemTypes = itemTypes
)
}
Expand Down
Expand Up @@ -8,15 +8,15 @@ import org.bukkit.inventory.ItemStack
import javax.inject.Inject

class BukkitFcItem_1_13_00_R01 @Inject constructor(
override val itemStack: ItemStack,
override val base: ItemStack,
override val displayName: FcText?,
override val lore: List<FcText>?,
override val lore: List<FcText>,
private val itemTypes: FcItemTypes
) : BukkitFcItem {

override val type: FcItemType
get() = itemTypes.bukkit.fromMaterial(itemStack.type)
get() = itemTypes.bukkit.fromMaterial(base.type)

override val amount: Int
get() = itemStack.amount
get() = base.amount
}
Expand Up @@ -5,15 +5,16 @@ import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import net.benwoodworth.fastcraft.bukkit.bukkit
import net.benwoodworth.fastcraft.platform.text.FcLocale
import net.benwoodworth.fastcraft.platform.text.FcText
import org.bukkit.ChatColor
import javax.inject.Inject

class BukkitFcTextConverter_1_13_00_R01 @Inject constructor(
private val localizer: BukkitLocalizer
) : BukkitFcTextConverter {

override fun BukkitFcText.toRaw(): String {
return RawText(this).toString()
override fun FcText.toRaw(): String {
return RawText(this.bukkit).toString()
}

@Serializable
Expand All @@ -38,7 +39,7 @@ class BukkitFcTextConverter_1_13_00_R01 @Inject constructor(
strikethrough = text.strikethrough,
obfuscate = text.obfuscate,
extra = text.extra
?.takeIf { it.any() }
.takeIf { it.any() }
?.map { RawText(it.bukkit) }
)

Expand All @@ -51,9 +52,13 @@ class BukkitFcTextConverter_1_13_00_R01 @Inject constructor(
}
}

override fun BukkitFcText.toLegacy(locale: FcLocale): String {
override fun FcText.toLegacy(locale: FcLocale): String {
bukkit.legacy?.let {
return it
}

return LegacyTextBuilder(locale)
.appendText(this)
.appendText(this.bukkit)
.toString()
}

Expand Down Expand Up @@ -108,7 +113,7 @@ class BukkitFcTextConverter_1_13_00_R01 @Inject constructor(
}

// Append the extra text.
text.extra?.forEach {
text.extra.forEach {
appendText(it.bukkit, format)
}
}
Expand Down
Expand Up @@ -16,7 +16,7 @@ class BukkitFcTextFactory_1_13_00_R01 @Inject constructor(
underline: Boolean?,
strikethrough: Boolean?,
obfuscate: Boolean?,
extra: List<FcText>?
extra: List<FcText>
): FcText {
return BukkitFcText_1_13_00_R01(
text = text,
Expand All @@ -39,7 +39,7 @@ class BukkitFcTextFactory_1_13_00_R01 @Inject constructor(
underline: Boolean?,
strikethrough: Boolean?,
obfuscate: Boolean?,
extra: List<FcText>?
extra: List<FcText>
): FcText {
return BukkitFcText_1_13_00_R01(
text = text,
Expand All @@ -52,4 +52,10 @@ class BukkitFcTextFactory_1_13_00_R01 @Inject constructor(
extra = extra
)
}

override fun createFcText(legacy: String): FcText {
return BukkitFcText_1_13_00_R01(
legacy = legacy
)
}
}
Expand Up @@ -4,6 +4,7 @@ import net.benwoodworth.fastcraft.platform.text.FcText
import net.benwoodworth.fastcraft.platform.text.FcTextColor

class BukkitFcText_1_13_00_R01(
override val legacy: String? = null,
override val text: String? = null,
override val translate: String? = null,
override val color: FcTextColor? = null,
Expand All @@ -12,5 +13,5 @@ class BukkitFcText_1_13_00_R01(
override val underline: Boolean? = null,
override val strikethrough: Boolean? = null,
override val obfuscate: Boolean? = null,
override val extra: List<FcText>? = null
override val extra: List<FcText> = emptyList()
) : BukkitFcText
@@ -1,13 +1,12 @@
package net.benwoodworth.fastcraft.bukkit.text

import net.benwoodworth.fastcraft.bukkit.bukkit
import net.benwoodworth.fastcraft.platform.text.FcLocale
import javax.inject.Inject

class BukkitLocalizer_1_13_00_R01 @Inject constructor(
) : BukkitLocalizer {

override fun localize(key: String, locale: FcLocale): String? {
return "[${locale.bukkit.localeId}/$key]"
return key // TODO
}
}
Expand Up @@ -5,5 +5,5 @@ import org.bukkit.inventory.ItemStack

interface BukkitFcItem : FcItem {

val itemStack: ItemStack
val base: ItemStack
}
@@ -1,8 +1,9 @@
package net.benwoodworth.fastcraft.bukkit.item

import net.benwoodworth.fastcraft.platform.text.FcLocale
import org.bukkit.inventory.ItemStack

interface BukkitFcItemConverter {

fun BukkitFcItem.toItemStack(): ItemStack
fun BukkitFcItem.toItemStack(locale: FcLocale): ItemStack
}
Expand Up @@ -5,7 +5,7 @@ import net.benwoodworth.fastcraft.platform.text.FcTextColor


interface BukkitFcText : FcText {

val legacy: String?
val text: String?
val translate: String?

Expand All @@ -16,5 +16,5 @@ interface BukkitFcText : FcText {
val strikethrough: Boolean?
val obfuscate: Boolean?

val extra: List<FcText>?
val extra: List<FcText>
}
@@ -1,10 +1,11 @@
package net.benwoodworth.fastcraft.bukkit.text

import net.benwoodworth.fastcraft.platform.text.FcLocale
import net.benwoodworth.fastcraft.platform.text.FcText

interface BukkitFcTextConverter {

fun BukkitFcText.toRaw(): String
fun FcText.toRaw(): String

fun BukkitFcText.toLegacy(locale: FcLocale): String
fun FcText.toLegacy(locale: FcLocale): String
}
Expand Up @@ -15,6 +15,10 @@ interface BukkitFcTextFactory : FcTextFactory {
underline: Boolean? = null,
strikethrough: Boolean? = null,
obfuscate: Boolean? = null,
extra: List<FcText>? = null
extra: List<FcText> = emptyList()
): FcText

fun createFcText(
legacy: String
): FcText
}

0 comments on commit 8631258

Please sign in to comment.