File tree Expand file tree Collapse file tree 4 files changed +24
-16
lines changed
surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/serializer/bukkit Expand file tree Collapse file tree 4 files changed +24
-16
lines changed Original file line number Diff line number Diff line change 11package dev.slne.surf.surfapi.bukkit.api.serializer.bukkit.blockdata
22
33import com.mojang.serialization.Codec
4- import org.bukkit.Bukkit
4+ import com.mojang.serialization.DataResult
5+ import dev.slne.surf.surfapi.bukkit.api.extensions.server
56import org.bukkit.block.data.BlockData
67
78object BlockDataCodec {
8- val CODEC : Codec <BlockData > = Codec .STRING .xmap(
9- { str -> Bukkit .createBlockData(str) },
10- { blockData -> blockData.asString }
11- )
9+ val CODEC : Codec <BlockData > = Codec .STRING .comapFlatMap({ data ->
10+ try {
11+ DataResult .success(server.createBlockData(data))
12+ } catch (e: IllegalArgumentException ) {
13+ DataResult .error { " Invalid block data: $data (${e.message} )" }
14+ }
15+ }, BlockData ::getAsString)
1216}
Original file line number Diff line number Diff line change @@ -12,6 +12,6 @@ object ItemStackCodec {
1212 buffer.get(bytes)
1313 ItemStack .deserializeBytes(bytes)
1414 },
15- { itemStack -> itemStack.serializeAsBytes(). let { ByteBuffer .wrap(it) } }
15+ { itemStack -> ByteBuffer .wrap( itemStack.serializeAsBytes()) }
1616 )
1717}
Original file line number Diff line number Diff line change 11package dev.slne.surf.surfapi.bukkit.api.serializer.bukkit.offlineplayer
22
33import com.mojang.serialization.Codec
4+ import dev.slne.surf.surfapi.bukkit.api.extensions.server
45import dev.slne.surf.surfapi.core.api.serializer.java.uuid.JavaUUIDCodec
5- import org.bukkit.Bukkit
66import org.bukkit.OfflinePlayer
77
88object OfflinePlayerCodec {
9- val CODEC : Codec <OfflinePlayer > = JavaUUIDCodec .CODEC .xmap(
10- { uuid -> Bukkit .getOfflinePlayer(uuid) },
11- { player -> player.uniqueId }
12- )
9+ val CODEC : Codec <OfflinePlayer > = JavaUUIDCodec .CODEC
10+ .xmap(server::getOfflinePlayer, OfflinePlayer ::getUniqueId)
1311}
Original file line number Diff line number Diff line change 11package dev.slne.surf.surfapi.bukkit.api.serializer.bukkit.player
22
33import com.mojang.serialization.Codec
4+ import com.mojang.serialization.DataResult
5+ import dev.slne.surf.surfapi.bukkit.api.extensions.server
46import dev.slne.surf.surfapi.core.api.serializer.java.uuid.JavaUUIDCodec
5- import org.bukkit.Bukkit
67import org.bukkit.entity.Player
78
89object PlayerCodec {
9- val CODEC : Codec <Player > = JavaUUIDCodec .CODEC .xmap(
10- { uuid -> Bukkit .getPlayer(uuid) },
11- { player -> player.uniqueId }
12- )
10+ val CODEC : Codec <Player > = JavaUUIDCodec .CODEC .comapFlatMap({ uuid ->
11+ val player = server.getPlayer(uuid)
12+
13+ if (player != null ) {
14+ DataResult .success(player)
15+ } else {
16+ DataResult .error { " Player with UUID $uuid is not online" }
17+ }
18+ }, Player ::getUniqueId)
1319}
You can’t perform that action at this time.
0 commit comments