Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
javaVersion=25
mcVersion=26.1.1
group=dev.slne.surf.api
version=3.6.0
version=3.7.0
relocationPrefix=dev.slne.surf.api.libs
snapshot=false
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,14 @@ import dev.slne.surf.api.paper.nms.NmsUseWithCaution
import dev.slne.surf.api.paper.nms.bridges.SurfPaperNmsPlayerBridge
import dev.slne.surf.api.paper.nms.bridges.data.chat.RemoteChatSessionData
import dev.slne.surf.api.paper.server.nms.v1_21_11.extensions.toNms
import io.papermc.paper.adventure.PaperAdventure
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import net.kyori.adventure.chat.ChatType
import net.kyori.adventure.chat.SignedMessage
import net.kyori.adventure.text.Component
import net.minecraft.network.chat.OutgoingChatMessage
import net.minecraft.network.chat.PlayerChatMessage
import net.minecraft.server.network.ServerGamePacketListenerImpl
import net.minecraft.util.FutureChain
import org.bukkit.entity.Player
Expand Down Expand Up @@ -49,6 +55,30 @@ class V1_21_11SurfPaperNmsPlayerBridgeImpl : SurfPaperNmsPlayerBridge {
}
}

override fun sendSignedMessageWithChangedContent(
player: Player,
original: SignedMessage,
boundChatType: ChatType.Bound,
unsignedContent: Component
) {
if (original !is PlayerChatMessage.AdventureView) {
if (original.isSystem) {
player.sendMessage(unsignedContent, boundChatType)
} else {
player.sendMessage(unsignedContent, boundChatType)
}
Comment on lines +65 to +69
return
}
val nmsPlayer = player.toNms()

nmsPlayer.sendChatMessage(
OutgoingChatMessage.create(original.playerChatMessage()),
nmsPlayer.isTextFilteringEnabled,
boundChatType.toNms(nmsPlayer),
PaperAdventure.asVanilla(unsignedContent)
)
}

@Suppress("ObjectPrivatePropertyName")
companion object {
@JvmStatic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ import io.papermc.paper.adventure.PaperAdventure
import io.papermc.paper.math.BlockPosition
import io.papermc.paper.math.FinePosition
import io.papermc.paper.math.Position
import net.kyori.adventure.chat.ChatType
import net.minecraft.advancements.AdvancementType
import net.minecraft.core.BlockPos
import net.minecraft.core.Holder
import net.minecraft.core.registries.Registries
import net.minecraft.network.chat.Component
import net.minecraft.resources.Identifier
import net.minecraft.resources.ResourceKey
import net.minecraft.server.level.ServerLevel
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.entity.Display
Expand Down Expand Up @@ -54,6 +57,7 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.ItemType
import org.spongepowered.math.imaginary.Quaternionf
import org.spongepowered.math.vector.Vector3f
import java.util.*
import net.kyori.adventure.text.Component as AdventureComponent
import net.minecraft.world.item.ItemStack as NmsItemStack
import net.minecraft.world.level.block.state.BlockState as NmsBlockState
Expand Down Expand Up @@ -151,4 +155,14 @@ fun AdvancementDisplay.Frame.toNms() = when (this) {
}

fun NamespacedKey.toIdentifier() = Identifier.fromNamespaceAndPath(namespace, key)
fun GameMode.toNms() = GameType.byId(this.value)
fun GameMode.toNms() = GameType.byId(this.value)

fun ChatType.Bound.toNms(sender: ServerPlayer): net.minecraft.network.chat.ChatType.Bound {
val chatTypeLookup = sender.level().registryAccess().lookupOrThrow(Registries.CHAT_TYPE)

return net.minecraft.network.chat.ChatType.Bound(
chatTypeLookup.getOrThrow(ResourceKey.create(Registries.CHAT_TYPE, PaperAdventure.asVanilla(type().key()))),
PaperAdventure.asVanilla(name()),
Optional.ofNullable(PaperAdventure.asVanilla(target()))
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,14 @@ import dev.slne.surf.api.paper.nms.NmsUseWithCaution
import dev.slne.surf.api.paper.nms.bridges.SurfPaperNmsPlayerBridge
import dev.slne.surf.api.paper.nms.bridges.data.chat.RemoteChatSessionData
import dev.slne.surf.api.paper.server.nms.v26_1.extensions.toNms
import io.papermc.paper.adventure.PaperAdventure
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import net.kyori.adventure.chat.ChatType
import net.kyori.adventure.chat.SignedMessage
import net.kyori.adventure.text.Component
import net.minecraft.network.chat.OutgoingChatMessage
import net.minecraft.network.chat.PlayerChatMessage
import net.minecraft.server.network.ServerGamePacketListenerImpl
import net.minecraft.util.FutureChain
import org.bukkit.entity.Player
Expand Down Expand Up @@ -49,6 +55,30 @@ class V26_1SurfPaperNmsPlayerBridgeImpl : SurfPaperNmsPlayerBridge {
}
}

override fun sendSignedMessageWithChangedContent(
player: Player,
original: SignedMessage,
boundChatType: ChatType.Bound,
unsignedContent: Component
) {
if (original !is PlayerChatMessage.AdventureView) {
if (original.isSystem) {
player.sendMessage(unsignedContent, boundChatType)
} else {
player.sendMessage(unsignedContent, boundChatType)
}
Comment on lines +65 to +69
return
}
val nmsPlayer = player.toNms()

nmsPlayer.sendChatMessage(
OutgoingChatMessage.create(original.playerChatMessage()),
nmsPlayer.isTextFilteringEnabled,
boundChatType.toNms(nmsPlayer),
PaperAdventure.asVanilla(unsignedContent)
)
}

@Suppress("ObjectPrivatePropertyName")
companion object {
@JvmStatic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ import io.papermc.paper.adventure.PaperAdventure
import io.papermc.paper.math.BlockPosition
import io.papermc.paper.math.FinePosition
import io.papermc.paper.math.Position
import net.kyori.adventure.chat.ChatType
import net.minecraft.advancements.AdvancementType
import net.minecraft.core.BlockPos
import net.minecraft.core.Holder
import net.minecraft.core.registries.Registries
import net.minecraft.network.chat.Component
import net.minecraft.resources.Identifier
import net.minecraft.resources.ResourceKey
import net.minecraft.server.level.ServerLevel
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.entity.Display
Expand Down Expand Up @@ -54,6 +57,7 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.ItemType
import org.spongepowered.math.imaginary.Quaternionf
import org.spongepowered.math.vector.Vector3f
import java.util.*
import net.kyori.adventure.text.Component as AdventureComponent
import net.minecraft.world.item.ItemStack as NmsItemStack
import net.minecraft.world.level.block.state.BlockState as NmsBlockState
Expand Down Expand Up @@ -151,4 +155,14 @@ fun AdvancementDisplay.Frame.toNms() = when (this) {
}

fun NamespacedKey.toIdentifier() = Identifier.fromNamespaceAndPath(namespace, key)
fun GameMode.toNms() = GameType.byId(this.value)
fun GameMode.toNms() = GameType.byId(this.value)

fun ChatType.Bound.toNms(sender: ServerPlayer): net.minecraft.network.chat.ChatType.Bound {
val chatTypeLookup = sender.level().registryAccess().lookupOrThrow(Registries.CHAT_TYPE)

return net.minecraft.network.chat.ChatType.Bound(
chatTypeLookup.getOrThrow(ResourceKey.create(Registries.CHAT_TYPE, PaperAdventure.asVanilla(type().key()))),
PaperAdventure.asVanilla(name()),
Optional.ofNullable(PaperAdventure.asVanilla(target()))
)
}
2 changes: 2 additions & 0 deletions surf-api-paper/surf-api-paper/api/surf-api-paper.api
Original file line number Diff line number Diff line change
Expand Up @@ -1714,12 +1714,14 @@ public abstract interface class dev/slne/surf/api/paper/nms/bridges/SurfPaperNms
public static final field Companion Ldev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge$Companion;
public abstract fun getRemoteChatSessionData (Lorg/bukkit/entity/Player;)Ldev/slne/surf/api/paper/nms/bridges/data/chat/RemoteChatSessionData;
public abstract fun runOnChatMessageChain (Lorg/bukkit/entity/Player;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function1;)V
public abstract fun sendSignedMessageWithChangedContent (Lorg/bukkit/entity/Player;Lnet/kyori/adventure/chat/SignedMessage;Lnet/kyori/adventure/chat/ChatType$Bound;Lnet/kyori/adventure/text/Component;)V
}

public final class dev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge$Companion : dev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge {
public final fun getINSTANCE ()Ldev/slne/surf/api/paper/nms/bridges/SurfPaperNmsPlayerBridge;
public fun getRemoteChatSessionData (Lorg/bukkit/entity/Player;)Ldev/slne/surf/api/paper/nms/bridges/data/chat/RemoteChatSessionData;
public fun runOnChatMessageChain (Lorg/bukkit/entity/Player;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function1;)V
public fun sendSignedMessageWithChangedContent (Lorg/bukkit/entity/Player;Lnet/kyori/adventure/chat/SignedMessage;Lnet/kyori/adventure/chat/ChatType$Bound;Lnet/kyori/adventure/text/Component;)V
}

public abstract interface class dev/slne/surf/api/paper/nms/bridges/SurfPaperNmsStatsBridge {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ import dev.slne.surf.api.core.util.requiredService
import dev.slne.surf.api.paper.nms.NmsUseWithCaution
import dev.slne.surf.api.paper.nms.bridges.data.chat.RemoteChatSessionData
import kotlinx.coroutines.CoroutineScope
import net.kyori.adventure.chat.ChatType
import net.kyori.adventure.chat.SignedMessage
import net.kyori.adventure.text.Component
import org.bukkit.entity.Player
import org.jetbrains.annotations.ApiStatus

Expand All @@ -15,6 +18,13 @@ interface SurfPaperNmsPlayerBridge {

fun runOnChatMessageChain(player: Player, scope: CoroutineScope, block: suspend () -> Unit)

fun sendSignedMessageWithChangedContent(
player: Player,
original: SignedMessage,
boundChatType: ChatType.Bound,
unsignedContent: Component
)

companion object : SurfPaperNmsPlayerBridge by playerBridge {
val INSTANCE get() = playerBridge
}
Expand Down
Loading