From 1f4ebc1788dd22a2779528e2adb91579fbac0083 Mon Sep 17 00:00:00 2001 From: PMK744 Date: Sun, 15 Sep 2024 18:18:51 -0500 Subject: [PATCH] feat(protocol): added ServerboundDiagnosticPacket --- packages/network/src/types/events.ts | 6 +++++- packages/protocol/src/enums/packet.ts | 3 ++- packages/protocol/src/proto/data/index.ts | 2 +- packages/protocol/src/proto/data/packets.ts | 4 +++- .../src/proto/data/serverbound-diagnostics.ts | 21 +++++++++++++++++++ 5 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 packages/protocol/src/proto/data/serverbound-diagnostics.ts diff --git a/packages/network/src/types/events.ts b/packages/network/src/types/events.ts index cbaba92c..ae392e9a 100644 --- a/packages/network/src/types/events.ts +++ b/packages/network/src/types/events.ts @@ -110,7 +110,8 @@ import type { HurtArmorPacket, ShowCreditsPacket, UpdateClientInputLocksPacket, - OnScreenTextureAnimationPacket + OnScreenTextureAnimationPacket, + ServerboundDiagnosticsPacket } from "@serenityjs/protocol"; import type { NetworkPacketEvent } from "./packet-event"; @@ -273,6 +274,9 @@ interface NetworkEvents { [Packet.UpdateClientInputLocks]: [ NetworkPacketEvent ]; + [Packet.ServerboundDiagnosticPacket]: [ + NetworkPacketEvent + ]; } export { NetworkEvents }; diff --git a/packages/protocol/src/enums/packet.ts b/packages/protocol/src/enums/packet.ts index d02de76d..5b2e999e 100644 --- a/packages/protocol/src/enums/packet.ts +++ b/packages/protocol/src/enums/packet.ts @@ -116,7 +116,8 @@ enum Packet { SetHud = 0x1_34, // 308 AwardAchievement = 0x1_35, // 309 ClientboundCloseForm = 0x1_36, // 310 - ServerboundLoadingScreenPacket = 0x1_38 // 312 + ServerboundLoadingScreenPacket = 0x1_38, // 312 + ServerboundDiagnosticPacket = 0x1_3b // 315 } export { Packet }; diff --git a/packages/protocol/src/proto/data/index.ts b/packages/protocol/src/proto/data/index.ts index 89faea4c..c1d821f6 100644 --- a/packages/protocol/src/proto/data/index.ts +++ b/packages/protocol/src/proto/data/index.ts @@ -114,5 +114,5 @@ export * from "./block-event"; export * from "./entity-pick-request"; export * from "./hurt-armor"; export * from "./show-credits"; - export * from "./update-client-input-locks"; +export * from "./serverbound-diagnostics"; diff --git a/packages/protocol/src/proto/data/packets.ts b/packages/protocol/src/proto/data/packets.ts index 2aa6f8f6..ce09e8b9 100644 --- a/packages/protocol/src/proto/data/packets.ts +++ b/packages/protocol/src/proto/data/packets.ts @@ -113,6 +113,7 @@ import { HurtArmorPacket } from "./hurt-armor"; import { ShowCreditsPacket } from "./show-credits"; import { UpdateClientInputLocksPacket } from "./update-client-input-locks"; import { OnScreenTextureAnimationPacket } from "./on-screen-texture-animation"; +import { ServerboundDiagnosticsPacket } from "./serverbound-diagnostics"; const Packets = { [Packet.Login]: LoginPacket, // 1 @@ -225,7 +226,8 @@ const Packets = { [Packet.SetHud]: SetHudPacket, // 308 [Packet.AwardAchievement]: AwardAchievementPacket, // 309 [Packet.ClientboundCloseForm]: ClientboundCloseFormPacket, // 310 - [Packet.ServerboundLoadingScreenPacket]: ServerboundLoadingScreenPacketPacket // 312 + [Packet.ServerboundLoadingScreenPacket]: ServerboundLoadingScreenPacketPacket, // 312 + [Packet.ServerboundDiagnosticPacket]: ServerboundDiagnosticsPacket // 315 }; export { Packets }; diff --git a/packages/protocol/src/proto/data/serverbound-diagnostics.ts b/packages/protocol/src/proto/data/serverbound-diagnostics.ts new file mode 100644 index 00000000..e906e3da --- /dev/null +++ b/packages/protocol/src/proto/data/serverbound-diagnostics.ts @@ -0,0 +1,21 @@ +import { Proto, Serialize } from "@serenityjs/raknet"; +import { Endianness, Float32 } from "@serenityjs/binarystream"; + +import { Packet } from "../../enums"; + +import { DataPacket } from "./data-packet"; + +@Proto(Packet.ServerboundDiagnosticPacket) +class ServerboundDiagnosticsPacket extends DataPacket { + @Serialize(Float32, Endianness.Little) public fps!: number; + @Serialize(Float32, Endianness.Little) public serverSimTickTime!: number; + @Serialize(Float32, Endianness.Little) public clientSimTickTime!: number; + @Serialize(Float32, Endianness.Little) public beginFrameTime!: number; + @Serialize(Float32, Endianness.Little) public inputTime!: number; + @Serialize(Float32, Endianness.Little) public renderTime!: number; + @Serialize(Float32, Endianness.Little) public endFrameTime!: number; + @Serialize(Float32, Endianness.Little) public remainderTimePercent!: number; + @Serialize(Float32, Endianness.Little) public unaccountedTimePercent!: number; +} + +export { ServerboundDiagnosticsPacket };