@@ -107,37 +107,62 @@ for (const supportedVersion of mc.supportedVersions) {
107
107
auth : 'offline'
108
108
} ) )
109
109
client . on ( 'error' , err => done ( err ) )
110
- const lineListener = function ( line ) {
111
- const match = line . match ( / \[ S e r v e r t h r e a d \/ I N F O \] : (?: \[ N o t S e c u r e \] ) ? < ( .+ ?) > ( .+ ) / )
112
- if ( ! match ) return
113
- assert . strictEqual ( match [ 1 ] , 'Player' )
114
- assert . strictEqual ( match [ 2 ] , 'hello everyone; I have logged in.' )
115
- wrap . writeServer ( 'say hello\n' )
116
- wrap . off ( 'line' , lineListener )
117
- }
118
- wrap . on ( 'line' , lineListener )
119
- let chatCount = 0
120
- client . on ( 'login' , function ( packet ) {
121
- assert . strictEqual ( packet . gameMode , 0 )
122
- client . chat ( 'hello everyone; I have logged in.' )
110
+
111
+ client . on ( 'state' , ( state ) => {
112
+ console . log ( 'Client now in state' , state )
123
113
} )
124
- // Dump some data for easier debugging
114
+
115
+ // ** Dump some server data **
116
+ fs . rmSync ( MC_SERVER_DIR + '_registry_data.json' , { force : true } )
125
117
client . on ( 'raw.registry_data' , ( buffer ) => {
126
118
fs . writeFileSync ( MC_SERVER_DIR + '_registry_data.bin' , buffer )
127
119
} )
128
120
client . on ( 'registry_data' , ( json ) => {
129
- fs . writeFileSync ( MC_SERVER_DIR + '_registry_data.json' , JSON . stringify ( json ) )
121
+ if ( json . codec ) { // Pre 1.20.5, codec is 1 json
122
+ fs . writeFileSync ( MC_SERVER_DIR + '_registry_data.json' , JSON . stringify ( json ) )
123
+ } else { // 1.20.5+, codec is many nbt's each with their own ids, merge them
124
+ let currentData = { }
125
+ if ( fs . existsSync ( MC_SERVER_DIR + '_registry_data.json' ) ) {
126
+ currentData = JSON . parse ( fs . readFileSync ( MC_SERVER_DIR + '_registry_data.json' , 'utf8' ) )
127
+ }
128
+ currentData [ json . id ] = json
129
+ fs . writeFileSync ( MC_SERVER_DIR + '_registry_data.json' , JSON . stringify ( currentData ) )
130
+ }
131
+ console . log ( 'Wrote registry data' )
130
132
} )
131
133
client . on ( 'login' , ( packet ) => {
132
134
fs . writeFileSync ( MC_SERVER_DIR + '_login.json' , JSON . stringify ( packet ) )
133
135
if ( fs . existsSync ( MC_SERVER_DIR + '_registry_data.json' ) ) {
134
136
// generate a loginPacket.json for minecraft-data
137
+ const codec = JSON . parse ( fs . readFileSync ( MC_SERVER_DIR + '_registry_data.json' ) )
135
138
fs . writeFileSync ( MC_SERVER_DIR + '_loginPacket.json' , JSON . stringify ( {
136
139
...packet ,
137
- dimensionCodec : JSON . parse ( fs . readFileSync ( MC_SERVER_DIR + '_registry_data.json' ) ) . codec
140
+ dimensionCodec : codec . codec || codec
138
141
} , null , 2 ) )
142
+ console . log ( 'Wrote loginPacket.json' )
139
143
}
140
144
} )
145
+ // ** End dumping code **
146
+
147
+ const lineListener = function ( line ) {
148
+ const match = line . match ( / \[ S e r v e r t h r e a d \/ I N F O \] : (?: \[ N o t S e c u r e \] ) ? < ( .+ ?) > ( .+ ) / )
149
+ if ( ! match ) return
150
+ assert . strictEqual ( match [ 1 ] , 'Player' )
151
+ assert . strictEqual ( match [ 2 ] , 'hello everyone; I have logged in.' )
152
+ wrap . writeServer ( 'say hello\n' )
153
+ wrap . off ( 'line' , lineListener )
154
+ }
155
+ wrap . on ( 'line' , lineListener )
156
+ let chatCount = 0
157
+
158
+ client . on ( 'login' , function ( packet ) {
159
+ if ( packet . worldState ) { // 1.20.5+
160
+ assert . strictEqual ( packet . worldState . gamemode , 'survival' )
161
+ } else {
162
+ assert . strictEqual ( packet . gameMode , 0 )
163
+ }
164
+ client . chat ( 'hello everyone; I have logged in.' )
165
+ } )
141
166
client . on ( 'playerChat' , function ( data ) {
142
167
chatCount += 1
143
168
assert . ok ( chatCount <= 2 )
0 commit comments