Skip to content

Commit

Permalink
feat: add few more components again
Browse files Browse the repository at this point in the history
  • Loading branch information
Boy0000 committed Jun 18, 2024
1 parent 3bfb04f commit 12857c5
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import io.papermc.paper.component.DataComponentType
import io.papermc.paper.component.DataComponentTypes
import io.papermc.paper.component.item.*
import io.papermc.paper.component.item.Tool.Rule
import io.papermc.paper.registry.RegistryAccess
import io.papermc.paper.registry.RegistryKey
import io.papermc.paper.registry.TypedKey
import io.papermc.paper.registry.set.RegistrySet
Expand All @@ -15,6 +16,9 @@ import net.kyori.adventure.util.TriState
import org.bukkit.Color
import org.bukkit.Registry
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.trim.ArmorTrim
import org.bukkit.inventory.meta.trim.TrimMaterial
import org.bukkit.inventory.meta.trim.TrimPattern
import org.bukkit.potion.PotionEffect

object SerializableDataTypes {
Expand Down Expand Up @@ -298,6 +302,34 @@ object SerializableDataTypes {
}
}

@Serializable
data class MapColor(
val color: @Serializable(ColorSerializer::class) Color,
) : DataType {
constructor(mapItemColor: MapItemColor) : this(mapItemColor.mapColor())

override fun setDataType(itemStack: ItemStack) {
itemStack.setData(DataComponentTypes.MAP_COLOR, MapItemColor.mapItemColor().mapColor(color).build())
}

}

@Serializable
class Trim(
val material: @Serializable(KeySerializer::class) Key,
val pattern: @Serializable(KeySerializer::class) Key,
val showInToolTip: Boolean = true
) : DataType {
constructor(trim: ItemArmorTrim) : this(trim.armorTrim().material.key(), trim.armorTrim().pattern.key(), trim.showInTooltip())

override fun setDataType(itemStack: ItemStack) {
val trimMaterial = RegistryAccess.registryAccess().getRegistry(RegistryKey.TRIM_MATERIAL).get(material) ?: error("Invalid TrimMaterial: " + material.asString())
val trimPattern = RegistryAccess.registryAccess().getRegistry(RegistryKey.TRIM_PATTERN).get(pattern) ?: error("Invalid TrimPattern: " + pattern.asString())
itemStack.setData(DataComponentTypes.TRIM, ItemArmorTrim.itemArmorTrim(ArmorTrim(trimMaterial, trimPattern), showInToolTip))
}

}

@Serializable
data class AttributeModifiers(
val attributes: List<SerializableAttribute>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ package com.mineinabyss.idofront.serialization

import com.mineinabyss.idofront.di.DI
import com.mineinabyss.idofront.messaging.idofrontLogger
import com.mineinabyss.idofront.nms.hideAttributeTooltipWithItemFlagSet
import com.mineinabyss.idofront.plugin.Plugins
import dev.lone.itemsadder.api.CustomStack
import io.lumine.mythiccrucible.MythicCrucible
import io.papermc.paper.component.DataComponentTypes
import io.papermc.paper.component.item.BundleContents
import io.papermc.paper.component.item.ItemLore
import io.papermc.paper.component.item.MapID
import io.th0rgal.oraxen.OraxenPlugin
import io.th0rgal.oraxen.api.OraxenItems
import kotlinx.serialization.Contextual
Expand Down Expand Up @@ -52,17 +53,22 @@ data class BaseSerializableItemStack(
@EncodeDefault(NEVER) val storedEnchantments: SerializableDataTypes.StoredEnchantments? = null,
@EncodeDefault(NEVER) val potionType: SerializableDataTypes.PotionContents? = null,
@EncodeDefault(NEVER) val attributeModifiers: SerializableDataTypes.AttributeModifiers? = null,
@EncodeDefault(NEVER) val recipes: List<@Serializable(KeySerializer::class) Key>? = null,
@EncodeDefault(NEVER) val dyedColor: SerializableDataTypes.DyedColor? = null,
@EncodeDefault(NEVER) val food: SerializableDataTypes.FoodProperties? = null,
@EncodeDefault(NEVER) val tool: SerializableDataTypes.Tool? = null,
@EncodeDefault(NEVER) val canPlaceOn: SerializableDataTypes.CanPlaceOn? = null,
@EncodeDefault(NEVER) val canBreak: SerializableDataTypes.CanBreak? = null,
@EncodeDefault(NEVER) val dyedColor: SerializableDataTypes.DyedColor? = null,
@EncodeDefault(NEVER) val mapColor: SerializableDataTypes.MapColor? = null,
@EncodeDefault(NEVER) val trim: SerializableDataTypes.Trim? = null,

@EncodeDefault(NEVER) val bundleContents: List<SerializableItemStack>? = null,
@EncodeDefault(NEVER) val recipes: List<@Serializable(KeySerializer::class) Key>? = null,
@EncodeDefault(NEVER) val enchantmentGlintOverride: Boolean? = null,
@EncodeDefault(NEVER) val maxStackSize: Int? = null,
@EncodeDefault(NEVER) val rarity: ItemRarity? = null,
@EncodeDefault(NEVER) val repaircost: Int? = null,
@EncodeDefault(NEVER) val repairCost: Int? = null,
@EncodeDefault(NEVER) val mapId: Int? = null,


@EncodeDefault(NEVER) val prefab: String? = null,
@EncodeDefault(NEVER) val tag: String? = null,
Expand Down Expand Up @@ -142,7 +148,7 @@ data class BaseSerializableItemStack(
potionType?.setDataType(applyTo)
attributeModifiers?.setDataType(applyTo)

SerializableDataTypes.setData(applyTo, DataComponentTypes.REPAIR_COST, repaircost)
SerializableDataTypes.setData(applyTo, DataComponentTypes.REPAIR_COST, repairCost)
SerializableDataTypes.setData(applyTo, DataComponentTypes.DAMAGE, damage)
SerializableDataTypes.setData(applyTo, DataComponentTypes.MAX_DAMAGE, maxDamage)
SerializableDataTypes.setData(applyTo, DataComponentTypes.MAX_STACK_SIZE, maxStackSize)
Expand All @@ -153,6 +159,11 @@ data class BaseSerializableItemStack(
tool?.setDataType(applyTo)
canPlaceOn?.setDataType(applyTo)
canBreak?.setDataType(applyTo)
trim?.setDataType(applyTo)

bundleContents?.let { applyTo.setData(DataComponentTypes.BUNDLE_CONTENTS, BundleContents.bundleContents(bundleContents.map { it.toItemStack() })) }
mapId?.let { applyTo.setData(DataComponentTypes.MAP_ID, MapID.mapId().mapId(mapId).build()) }
mapColor?.setDataType(applyTo)

SerializableDataTypes.setData(applyTo, DataComponentTypes.FIRE_RESISTANT, fireResistant)
SerializableDataTypes.setData(applyTo, DataComponentTypes.HIDE_TOOLTIP, hideTooltip)
Expand Down Expand Up @@ -199,7 +210,7 @@ fun ItemStack.toSerializable(): SerializableItemStack = with(itemMeta) {
maxStackSize = getData(DataComponentTypes.MAX_STACK_SIZE),
rarity = getData(DataComponentTypes.RARITY),
enchantmentGlintOverride = getData(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE),
repaircost = getData(DataComponentTypes.REPAIR_COST),
repairCost = getData(DataComponentTypes.REPAIR_COST),
//recipes = getData(DataComponentTypes.RECIPES),

enchantments = getData(DataComponentTypes.ENCHANTMENTS)?.let(SerializableDataTypes::Enchantments),
Expand All @@ -211,6 +222,11 @@ fun ItemStack.toSerializable(): SerializableItemStack = with(itemMeta) {
tool = getData(DataComponentTypes.TOOL)?.let(SerializableDataTypes::Tool),
canPlaceOn = getData(DataComponentTypes.CAN_PLACE_ON)?.let(SerializableDataTypes::CanPlaceOn),
canBreak = getData(DataComponentTypes.CAN_BREAK)?.let(SerializableDataTypes::CanBreak),
bundleContents = getData(DataComponentTypes.BUNDLE_CONTENTS)?.contents()?.map { it.toSerializable() },
trim = getData(DataComponentTypes.TRIM)?.let(SerializableDataTypes::Trim),

mapId = getData(DataComponentTypes.MAP_ID)?.id(),
mapColor = getData(DataComponentTypes.MAP_COLOR)?.let(SerializableDataTypes::MapColor),

fireResistant = SerializableDataTypes.FireResistant.takeIf { hasData(DataComponentTypes.FIRE_RESISTANT) },
hideTooltip = SerializableDataTypes.HideToolTip.takeIf { hasData(DataComponentTypes.HIDE_TOOLTIP) },
Expand Down

0 comments on commit 12857c5

Please sign in to comment.