From 3a2185612a2ba57ab528e9103fdea58f5d28f2c8 Mon Sep 17 00:00:00 2001 From: twisti <76837088+twisti-dev@users.noreply.github.com> Date: Mon, 25 May 2026 14:37:16 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9C=A8=20feat(reflection):=20add=20getPl?= =?UTF-8?q?ayerDataDir=20method=20for=20player=20data=20directory=20retrie?= =?UTF-8?q?val?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bridges/V1_21_11SurfPaperNmsPlayerBridgeImpl.kt | 5 +++++ .../v26_1/bridges/V26_1SurfPaperNmsPlayerBridgeImpl.kt | 5 +++++ .../api/paper/nms/bridges/SurfPaperNmsPlayerBridge.kt | 8 ++++++++ 3 files changed, 18 insertions(+) diff --git a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsPlayerBridgeImpl.kt b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsPlayerBridgeImpl.kt index 12a2b35a..be118bdf 100644 --- a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsPlayerBridgeImpl.kt +++ b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsPlayerBridgeImpl.kt @@ -45,6 +45,7 @@ import org.bukkit.craftbukkit.inventory.CraftItemStack import org.bukkit.entity.Player import org.bukkit.inventory.EquipmentSlot import org.bukkit.inventory.ItemStack +import java.io.File import java.util.* import java.util.concurrent.CompletableFuture import kotlin.io.path.createTempFile @@ -232,6 +233,10 @@ class V1_21_11SurfPaperNmsPlayerBridgeImpl : SurfPaperNmsPlayerBridge { saveInventoryEdit(server, rootPathElement, currentTag, nameAndId, inventoryEdit) } + override fun getPlayerDataDir(): File { + return MinecraftServer.getServer().playerDataStorage.playerDir + } + private suspend fun loadPlayerTag(server: MinecraftServer, nameAndId: NameAndId): CompoundTag { val dataStorage = server.playerDataStorage return withContext(Dispatchers.IO) { diff --git a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsPlayerBridgeImpl.kt b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsPlayerBridgeImpl.kt index 0e54a00b..c1e00390 100644 --- a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsPlayerBridgeImpl.kt +++ b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsPlayerBridgeImpl.kt @@ -45,6 +45,7 @@ import org.bukkit.craftbukkit.inventory.CraftItemStack import org.bukkit.entity.Player import org.bukkit.inventory.EquipmentSlot import org.bukkit.inventory.ItemStack +import java.io.File import java.util.concurrent.CompletableFuture import kotlin.io.path.createTempFile import kotlin.jvm.optionals.getOrNull @@ -231,6 +232,10 @@ class V26_1SurfPaperNmsPlayerBridgeImpl : SurfPaperNmsPlayerBridge { saveInventoryEdit(server, rootPathElement, currentTag, nameAndId, inventoryEdit) } + override fun getPlayerDataDir(): File { + return MinecraftServer.getServer().playerDataStorage.playerDir + } + private suspend fun loadPlayerTag(server: MinecraftServer, nameAndId: NameAndId): CompoundTag { val dataStorage = server.playerDataStorage return withContext(Dispatchers.IO) { diff --git a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge.kt b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge.kt index c64f1377..99f89f20 100644 --- a/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge.kt +++ b/surf-api-paper/surf-api-paper/src/main/kotlin/dev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge.kt @@ -14,6 +14,7 @@ import org.bukkit.entity.Player import org.bukkit.inventory.EntityEquipment import org.bukkit.inventory.ItemStack import org.jetbrains.annotations.ApiStatus +import java.io.File @NmsUseWithCaution @ApiStatus.NonExtendable @@ -76,6 +77,13 @@ interface SurfPaperNmsPlayerBridge { val equipment: EntityEquipment ) + /** + * Retrieves the directory where player data is stored. + * + * @return a [File] representing the directory used for storing player data + */ + fun getPlayerDataDir(): File + companion object : SurfPaperNmsPlayerBridge by playerBridge { val INSTANCE get() = playerBridge } From 309a471519f45c1775e32ac4ec41bd395084340a Mon Sep 17 00:00:00 2001 From: twisti <76837088+twisti-dev@users.noreply.github.com> Date: Mon, 25 May 2026 14:38:09 +0200 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=94=A7=20chore:=20update=20version=20?= =?UTF-8?q?to=203.14.0=20in=20gradle.properties?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index f96891f3..caa5b921 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled javaVersion=25 mcVersion=26.1.2 group=dev.slne.surf.api -version=3.13.0 +version=3.14.0 relocationPrefix=dev.slne.surf.api.libs snapshot=false From a61f70f4cbf571bd0828cd828b679a4b53c7d4fb Mon Sep 17 00:00:00 2001 From: twisti <76837088+twisti-dev@users.noreply.github.com> Date: Mon, 25 May 2026 14:38:29 +0200 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=94=A7=20chore(abi):=20update=20api?= =?UTF-8?q?=20dump?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- surf-api-paper/surf-api-paper/api/surf-api-paper.api | 2 ++ 1 file changed, 2 insertions(+) diff --git a/surf-api-paper/surf-api-paper/api/surf-api-paper.api b/surf-api-paper/surf-api-paper/api/surf-api-paper.api index 9486fac9..b0fce3a0 100644 --- a/surf-api-paper/surf-api-paper/api/surf-api-paper.api +++ b/surf-api-paper/surf-api-paper/api/surf-api-paper.api @@ -1715,6 +1715,7 @@ public abstract interface class dev/slne/surf/api/paper/nms/bridges/SurfPaperNms public static synthetic fun createPlayerChatMessageMirrorFromAdventure$default (Ldev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge;Lnet/kyori/adventure/chat/SignedMessage;Lnet/kyori/adventure/text/Component;ILjava/lang/Object;)Ldev/slne/surf/api/paper/nms/bridges/data/chat/PlayerChatMessageMirror; public abstract fun editOfflineInventory (Lcom/destroystokyo/paper/profile/PlayerProfile;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public abstract fun getPaperRawChatType ()Lnet/kyori/adventure/chat/ChatType; + public abstract fun getPlayerDataDir ()Ljava/io/File; public abstract fun getRemoteChatSessionData (Lorg/bukkit/entity/Player;)Ldev/slne/surf/api/paper/nms/bridges/data/chat/RemoteChatSessionData; public abstract fun increaseNextChatIndex (Lorg/bukkit/entity/Player;)Ljava/lang/Integer; public abstract fun runOnChatMessageChain (Lorg/bukkit/entity/Player;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function1;)V @@ -1728,6 +1729,7 @@ public final class dev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge$ public fun editOfflineInventory (Lcom/destroystokyo/paper/profile/PlayerProfile;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun getINSTANCE ()Ldev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge; public fun getPaperRawChatType ()Lnet/kyori/adventure/chat/ChatType; + public fun getPlayerDataDir ()Ljava/io/File; public fun getRemoteChatSessionData (Lorg/bukkit/entity/Player;)Ldev/slne/surf/api/paper/nms/bridges/data/chat/RemoteChatSessionData; public fun increaseNextChatIndex (Lorg/bukkit/entity/Player;)Ljava/lang/Integer; public fun runOnChatMessageChain (Lorg/bukkit/entity/Player;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function1;)V