Skip to content

Commit d289485

Browse files
committed
Merge remote-tracking branch 'origin/version/1.21.10' into version/1.21.10
# Conflicts: # gradle.properties # gradle/libs.versions.toml # surf-api-gradle-plugin/build.gradle.kts
2 parents 03427b0 + 5c78f5f commit d289485

File tree

151 files changed

+21995
-5019
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

151 files changed

+21995
-5019
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
77
javaVersion=21
88
mcVersion=1.21.10
99
group=dev.slne.surf
10-
version=1.21.10-2.40.2
10+
version=1.21.10-2.42.3
1111
relocationPrefix=dev.slne.surf.surfapi.libs
1212
snapshot=false

gradle/libs.versions.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ kotlinxCoroutines = "1.10.2"
88
kotlinx-serialization = "1.9.0"
99

1010
# Packet Events
11-
packetevents = "2.10.0-SNAPSHOT"
12-
packetevents-plugin = "2.10.0-SNAPSHOT"
11+
packetevents = "2.10.0"
12+
packetevents-plugin = "2.10.0"
1313

1414
# Command API
1515
commandapi = "11.0.0"
@@ -49,6 +49,7 @@ okhttp = "5.1.0"
4949
dazzleconf = "1.4.0-M1"
5050
reflection-remapper = "0.1.3"
5151
brigadier = "1.0.500"
52+
datafixerupper = "8.0.16"
5253
configurate = "4.2.0"
5354
more-persistent-data-types = "2.4.0"
5455
stefvanschie-if = "0.11.3"
@@ -148,6 +149,7 @@ flogger = { module = "com.google.flogger:flogger", version.ref = "flogger" }
148149
flogger-slf4j-backend = { module = "com.google.flogger:flogger-slf4j-backend", version.ref = "flogger" }
149150
aide-reflection = { module = "tech.hiddenproject:aide-reflection", version.ref = "aide-reflection" }
150151
glm = { module = "io.github.kotlin-graphics:glm", version.ref = "glm" }
152+
datafixerupper = { module = "com.mojang:datafixerupper", version.ref = "datafixerupper" }
151153

152154
auto-service-annotations = { module = "com.google.auto.service:auto-service-annotations", version.ref = "auto-service" }
153155
auto-service = { module = "dev.zacsweers.autoservice:auto-service-ksp", version.ref = "auto-service-ksp" }

surf-api-bukkit/surf-api-bukkit-api/api/surf-api-bukkit-api.api

Lines changed: 7599 additions & 3337 deletions
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package dev.slne.surf.surfapi.bukkit.api.nms.bridges.packets.player
2+
3+
import dev.slne.surf.surfapi.bukkit.api.nms.NmsUseWithCaution
4+
import dev.slne.surf.surfapi.bukkit.api.nms.bridges.packets.PacketOperation
5+
import dev.slne.surf.surfapi.bukkit.api.nms.bridges.packets.player.toast.Toast
6+
import dev.slne.surf.surfapi.core.api.util.requiredService
7+
8+
@NmsUseWithCaution
9+
interface SurfBukkitNmsPlayerToastPackets {
10+
11+
fun showToast(toast: Toast): PacketOperation
12+
13+
companion object {
14+
val instance = requiredService<SurfBukkitNmsPlayerToastPackets>()
15+
}
16+
}
17+
18+
@NmsUseWithCaution
19+
val toastPacketsBridge get() = SurfBukkitNmsPlayerToastPackets.instance
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package dev.slne.surf.surfapi.bukkit.api.nms.bridges.packets.player.toast
2+
3+
import dev.slne.surf.surfapi.bukkit.api.builder.buildItem
4+
import dev.slne.surf.surfapi.bukkit.api.nms.NmsUseWithCaution
5+
import dev.slne.surf.surfapi.bukkit.api.nms.bridges.packets.player.toastPacketsBridge
6+
import dev.slne.surf.surfapi.core.api.messages.builder.SurfComponentBuilder
7+
import io.papermc.paper.advancement.AdvancementDisplay
8+
import net.kyori.adventure.text.Component
9+
import org.bukkit.inventory.ItemStack
10+
import org.bukkit.inventory.ItemType
11+
12+
data class Toast(
13+
val icon: ItemStack,
14+
val title: Component,
15+
val frame: AdvancementDisplay.Frame = AdvancementDisplay.Frame.TASK,
16+
) {
17+
18+
@NmsUseWithCaution
19+
fun createOperation() = toastPacketsBridge.showToast(this)
20+
21+
companion object {
22+
inline operator fun invoke(block: Builder.() -> Unit): Toast {
23+
return Builder().apply(block).build()
24+
}
25+
26+
class Builder @PublishedApi internal constructor() {
27+
private var icon: ItemStack? = null
28+
private var title: Component? = null
29+
private var frame: AdvancementDisplay.Frame = AdvancementDisplay.Frame.TASK
30+
31+
fun icon(itemStack: ItemStack) {
32+
this.icon = itemStack
33+
}
34+
35+
fun icon(type: ItemType) {
36+
this.icon = type.createItemStack()
37+
}
38+
39+
fun icon(type: ItemType, block: ItemStack.() -> Unit) {
40+
this.icon = buildItem(type, init = block)
41+
}
42+
43+
fun title(component: Component) {
44+
this.title = component
45+
}
46+
47+
fun title(block: SurfComponentBuilder.() -> Unit) {
48+
this.title = SurfComponentBuilder(block)
49+
}
50+
51+
fun frame(frame: AdvancementDisplay.Frame) {
52+
this.frame = frame
53+
}
54+
55+
fun build() = Toast(
56+
icon = icon ?: error("Icon must be set!"),
57+
title = title ?: error("Title must be set!"),
58+
frame = frame
59+
)
60+
}
61+
}
62+
}
63+
64+
inline fun toast(block: Toast.Companion.Builder.() -> Unit): Toast {
65+
return Toast(block)
66+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package dev.slne.surf.surfapi.bukkit.api.serializer.bukkit.blockdata
2+
3+
import com.mojang.serialization.Codec
4+
import com.mojang.serialization.DataResult
5+
import dev.slne.surf.surfapi.bukkit.api.extensions.server
6+
import org.bukkit.block.data.BlockData
7+
8+
object BlockDataCodec {
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)
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package dev.slne.surf.surfapi.bukkit.api.serializer.bukkit.blockdata
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.descriptors.PrimitiveKind
5+
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
6+
import kotlinx.serialization.encoding.Decoder
7+
import kotlinx.serialization.encoding.Encoder
8+
import org.bukkit.Bukkit
9+
import org.bukkit.block.data.BlockData
10+
11+
object BlockDataSerializer : KSerializer<BlockData> {
12+
override val descriptor =
13+
PrimitiveSerialDescriptor("surfapi.bukkit.BlockData", PrimitiveKind.STRING)
14+
15+
override fun serialize(
16+
encoder: Encoder,
17+
value: BlockData,
18+
) {
19+
encoder.encodeString(value.asString)
20+
}
21+
22+
override fun deserialize(decoder: Decoder) =
23+
Bukkit.createBlockData(decoder.decodeString())
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package dev.slne.surf.surfapi.bukkit.api.serializer.bukkit.blockstate
2+
3+
import com.mojang.serialization.Codec
4+
import org.bukkit.Bukkit
5+
import org.bukkit.block.BlockState
6+
7+
object BlockStateCodec {
8+
val CODEC: Codec<BlockState> = Codec.STRING.xmap(
9+
{ str -> Bukkit.createBlockData(str).createBlockState() },
10+
{ blockState -> blockState.blockData.asString }
11+
)
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package dev.slne.surf.surfapi.bukkit.api.serializer.bukkit.blockstate
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.descriptors.PrimitiveKind
5+
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
6+
import kotlinx.serialization.encoding.Decoder
7+
import kotlinx.serialization.encoding.Encoder
8+
import org.bukkit.Bukkit
9+
import org.bukkit.block.BlockState
10+
11+
object BlockStateSerializer : KSerializer<BlockState> {
12+
override val descriptor =
13+
PrimitiveSerialDescriptor("surfapi.bukkit.BlockState", PrimitiveKind.STRING)
14+
15+
override fun serialize(
16+
encoder: Encoder,
17+
value: BlockState,
18+
) {
19+
encoder.encodeString(value.blockData.asString)
20+
}
21+
22+
override fun deserialize(decoder: Decoder) =
23+
Bukkit.createBlockData(decoder.decodeString()).createBlockState()
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package dev.slne.surf.surfapi.bukkit.api.serializer.bukkit.itemstack
2+
3+
import com.mojang.serialization.Codec
4+
import org.bukkit.inventory.ItemStack
5+
import java.nio.ByteBuffer
6+
7+
object ItemStackCodec {
8+
val CODEC: Codec<ItemStack> = Codec.BYTE_BUFFER
9+
.xmap(
10+
{ buffer ->
11+
val bytes = ByteArray(buffer.remaining())
12+
buffer.get(bytes)
13+
ItemStack.deserializeBytes(bytes)
14+
},
15+
{ itemStack -> ByteBuffer.wrap(itemStack.serializeAsBytes()) }
16+
)
17+
}

0 commit comments

Comments
 (0)