-
-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Description
Similar to ConfigurationSerializable, would be nice to allow for this type aswell
Several projects I work on which are already written around these would be very nice
They are effectively serialized already excluding some which we have custom serializers ontop of
Current way I have to do it:
player.persistentDataContainer.set(DISCONNECT_MID_DUEL_KEY, DataType.CONFIGURATION_SERIALIZABLE, duel)
....
@Serializable
@SerialName("colosseum:duel_instance")
data class ColosseumDuelInstance(
val arena: String,
val arenaInstance: String,
val players: Set<@Serializable(UUIDSerializer::class) UUID>,
var status: ColosseumDuelStatus
) : ConfigurationSerializable {
override fun serialize(): MutableMap<String, Any> {
return mutableMapOf(
"arena" to arena,
"arena_instance" to arenaInstance,
"players" to players.map { it.toString() },
"status" to status.name
)
}
companion object {
@JvmStatic
fun deserialize(serializable: ConfigurationSerializable?): ColosseumDuelInstance? {
val map = serializable?.serialize() ?: return null
if (map.keys != setOf("arena", "arena_instance", "players", "status")) return null
return ColosseumDuelInstance(
map["arena"] as String,
map["arena_instance"] as String,
(map["players"] as List<*>).map { UUID.fromString(it.toString()) }.toSet(),
ColosseumDuelStatus.valueOf(map["status"] as String)
)
}
}
}if KSerializer was supported:
player.persistentDataContainer.set(DISCONNECT_MID_DUEL_KEY, DataType.KSERIALIZER, duel.serializer())
@Serializable
@SerialName("colosseum:duel_instance")
data class ColosseumDuelInstance(
val arena: String,
val arenaInstance: String,
val players: Set<@Serializable(UUIDSerializer::class) UUID>,
var status: ColosseumDuelStatus
)Metadata
Metadata
Assignees
Labels
No labels