11const crypto = require ( 'crypto' )
2+ const { computeChatChecksum } = require ( '../datatypes/checksums' )
23const concat = require ( '../transforms/binaryStream' ) . concat
34const { processNbtMessage } = require ( 'prismarine-chat' )
45const messageExpireTime = 420000 // 7 minutes (ms)
@@ -192,6 +193,7 @@ module.exports = function (client, options) {
192193 const verified = ! packet . unsignedChatContent && updateAndValidateSession ( packet . senderUuid , packet . plainMessage , packet . signature , packet . index , packet . previousMessages , packet . salt , packet . timestamp ) && ! expired
193194 if ( verified ) client . _signatureCache . push ( packet . signature )
194195 client . emit ( 'playerChat' , {
196+ globalIndex : packet . globalIndex ,
195197 plainMessage : packet . plainMessage ,
196198 unsignedContent : processMessage ( packet . unsignedChatContent ) ,
197199 type : packet . type ,
@@ -363,14 +365,16 @@ module.exports = function (client, options) {
363365 if ( mcData . supportFeature ( 'useChatSessions' ) ) { // 1.19.3+
364366 const { acknowledged, acknowledgements } = getAcknowledgements ( )
365367 const canSign = client . profileKeys && client . _session
366- client . write ( ( mcData . supportFeature ( 'seperateSignedChatCommandPacket' ) && canSign ) ? 'chat_command_signed' : 'chat_command' , {
368+ const chatPacket = {
367369 command,
368370 timestamp : options . timestamp ,
369371 salt : options . salt ,
370372 argumentSignatures : canSign ? signaturesForCommand ( command , options . timestamp , options . salt , options . preview , acknowledgements ) : [ ] ,
371373 messageCount : client . _lastSeenMessages . pending ,
374+ checksum : computeChatChecksum ( client . _lastSeenMessages ) , // 1.21.5+
372375 acknowledged
373- } )
376+ }
377+ client . write ( ( mcData . supportFeature ( 'seperateSignedChatCommandPacket' ) && canSign ) ? 'chat_command_signed' : 'chat_command' , chatPacket )
374378 client . _lastSeenMessages . pending = 0
375379 } else {
376380 client . write ( 'chat_command' , {
@@ -383,6 +387,7 @@ module.exports = function (client, options) {
383387 messageSender : e . sender ,
384388 messageSignature : e . signature
385389 } ) ) ,
390+ checksum : computeChatChecksum ( client . _lastSeenMessages ) ,
386391 lastRejectedMessage : client . _lastRejectedMessage
387392 } )
388393 }
@@ -398,6 +403,7 @@ module.exports = function (client, options) {
398403 salt : options . salt ,
399404 signature : ( client . profileKeys && client . _session ) ? client . signMessage ( message , options . timestamp , options . salt , undefined , acknowledgements ) : undefined ,
400405 offset : client . _lastSeenMessages . pending ,
406+ checksum : computeChatChecksum ( client . _lastSeenMessages ) , // 1.21.5+
401407 acknowledged
402408 } )
403409 client . _lastSeenMessages . pending = 0
@@ -416,7 +422,8 @@ module.exports = function (client, options) {
416422 messageSender : e . sender ,
417423 messageSignature : e . signature
418424 } ) ) ,
419- lastRejectedMessage : client . _lastRejectedMessage
425+ lastRejectedMessage : client . _lastRejectedMessage ,
426+ checksum : computeChatChecksum ( client . _lastSeenMessages ) // 1.21.5+
420427 } )
421428 client . _lastSeenMessages . pending = 0
422429 } else if ( client . serverFeatures . chatPreview ) {
0 commit comments