diff --git a/gradle.properties b/gradle.properties index 08640c63..60c89afa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled javaVersion=25 mcVersion=26.2 group=dev.slne.surf.api -version=3.33.1 +version=3.33.2 relocationPrefix=dev.slne.surf.api.libs snapshot=false 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 b03a5c9a..93bc588a 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 @@ -27,7 +27,9 @@ import net.minecraft.core.NonNullList import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.NbtIo import net.minecraft.network.chat.* +import net.minecraft.network.protocol.game.ClientboundGameEventPacket import net.minecraft.network.protocol.game.ClientboundPlayerChatPacket +import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket import net.minecraft.network.protocol.game.ClientboundSetPassengersPacket import net.minecraft.server.MinecraftServer import net.minecraft.server.players.NameAndId @@ -135,8 +137,25 @@ class V1_21_11SurfPaperNmsPlayerBridgeImpl : SurfPaperNmsPlayerBridge { @Suppress("USELESS_ELVIS") override fun resyncPlayerState(player: Player) { val nmsPlayer = player.toNms() - nmsPlayer.connection ?: return + val connection = nmsPlayer.connection ?: return + val gameMode = nmsPlayer.gameMode.gameModeForPlayer + + connection.send( + ClientboundPlayerInfoUpdatePacket( + ClientboundPlayerInfoUpdatePacket.Action.UPDATE_GAME_MODE, + nmsPlayer + ) + ) + + connection.send( + ClientboundGameEventPacket( + ClientboundGameEventPacket.CHANGE_GAME_MODE, + gameMode.id.toFloat() + ) + ) + nmsPlayer.onUpdateAbilities() + nmsPlayer.refreshEntityData(nmsPlayer) } override fun getRemoteChatSessionData(player: Player): RemoteChatSessionData? { 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 7cea44eb..156c5ccf 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 @@ -25,6 +25,7 @@ import net.minecraft.core.NonNullList import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.NbtIo import net.minecraft.network.chat.* +import net.minecraft.network.protocol.game.ClientboundGameEventPacket import net.minecraft.network.protocol.game.ClientboundPlayerChatPacket import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket import net.minecraft.network.protocol.game.ClientboundSetPassengersPacket @@ -135,8 +136,25 @@ class V26_1SurfPaperNmsPlayerBridgeImpl : SurfPaperNmsPlayerBridge { @Suppress("USELESS_ELVIS") override fun resyncPlayerState(player: Player) { val nmsPlayer = player.toNms() - nmsPlayer.connection ?: return + val connection = nmsPlayer.connection ?: return + val gameMode = nmsPlayer.gameMode.gameModeForPlayer + + connection.send( + ClientboundPlayerInfoUpdatePacket( + ClientboundPlayerInfoUpdatePacket.Action.UPDATE_GAME_MODE, + nmsPlayer + ) + ) + + connection.send( + ClientboundGameEventPacket( + ClientboundGameEventPacket.CHANGE_GAME_MODE, + gameMode.id.toFloat() + ) + ) + nmsPlayer.onUpdateAbilities() + nmsPlayer.refreshEntityData(nmsPlayer) } @Suppress("USELESS_ELVIS") diff --git a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-2/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_2/bridges/V26_2SurfPaperNmsPlayerBridgeImpl.kt b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-2/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_2/bridges/V26_2SurfPaperNmsPlayerBridgeImpl.kt index 80a3731d..3ded8cea 100644 --- a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-2/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_2/bridges/V26_2SurfPaperNmsPlayerBridgeImpl.kt +++ b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-2/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_2/bridges/V26_2SurfPaperNmsPlayerBridgeImpl.kt @@ -25,6 +25,7 @@ import net.minecraft.core.NonNullList import net.minecraft.nbt.CompoundTag import net.minecraft.nbt.NbtIo import net.minecraft.network.chat.* +import net.minecraft.network.protocol.game.ClientboundGameEventPacket import net.minecraft.network.protocol.game.ClientboundPlayerChatPacket import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket import net.minecraft.network.protocol.game.ClientboundSetPassengersPacket @@ -135,8 +136,25 @@ class V26_2SurfPaperNmsPlayerBridgeImpl : SurfPaperNmsPlayerBridge { @Suppress("USELESS_ELVIS") override fun resyncPlayerState(player: Player) { val nmsPlayer = player.toNms() - nmsPlayer.connection ?: return + val connection = nmsPlayer.connection ?: return + val gameMode = nmsPlayer.gameMode.gameModeForPlayer + + connection.send( + ClientboundPlayerInfoUpdatePacket( + ClientboundPlayerInfoUpdatePacket.Action.UPDATE_GAME_MODE, + nmsPlayer + ) + ) + + connection.send( + ClientboundGameEventPacket( + ClientboundGameEventPacket.CHANGE_GAME_MODE, + gameMode.id.toFloat() + ) + ) + nmsPlayer.onUpdateAbilities() + nmsPlayer.refreshEntityData(nmsPlayer) } @Suppress("USELESS_ELVIS")