@@ -321,10 +321,11 @@ fn serde_serialize_field<S: serde::ser::SerializeStruct>(
321
321
name : & ' static str ,
322
322
value : & Option < impl serde:: Serialize > ,
323
323
default : & ( impl serde:: Serialize + ?Sized ) ,
324
+ reset : bool ,
324
325
) -> Result < ( ) , S :: Error > {
325
326
if let Some ( value) = value {
326
327
state. serialize_field ( name, value) ?;
327
- } else {
328
+ } else if reset {
328
329
state. serialize_field ( name, default) ?;
329
330
}
330
331
Ok ( ( ) )
@@ -336,10 +337,11 @@ fn simdnbt_serialize_field(
336
337
name : & ' static str ,
337
338
value : Option < impl simdnbt:: ToNbtTag > ,
338
339
default : impl simdnbt:: ToNbtTag ,
340
+ reset : bool ,
339
341
) {
340
342
if let Some ( value) = value {
341
343
compound. insert ( name, value) ;
342
- } else {
344
+ } else if reset {
343
345
compound. insert ( name, default) ;
344
346
}
345
347
}
@@ -361,12 +363,30 @@ impl Serialize for Style {
361
363
} ;
362
364
let mut state = serializer. serialize_struct ( "Style" , len) ?;
363
365
364
- serde_serialize_field ( & mut state, "color" , & self . color , "white" ) ?;
365
- serde_serialize_field ( & mut state, "bold" , & self . bold , & false ) ?;
366
- serde_serialize_field ( & mut state, "italic" , & self . italic , & false ) ?;
367
- serde_serialize_field ( & mut state, "underlined" , & self . underlined , & false ) ?;
368
- serde_serialize_field ( & mut state, "strikethrough" , & self . strikethrough , & false ) ?;
369
- serde_serialize_field ( & mut state, "obfuscated" , & self . obfuscated , & false ) ?;
366
+ serde_serialize_field ( & mut state, "color" , & self . color , "white" , self . reset ) ?;
367
+ serde_serialize_field ( & mut state, "bold" , & self . bold , & false , self . reset ) ?;
368
+ serde_serialize_field ( & mut state, "italic" , & self . italic , & false , self . reset ) ?;
369
+ serde_serialize_field (
370
+ & mut state,
371
+ "underlined" ,
372
+ & self . underlined ,
373
+ & false ,
374
+ self . reset ,
375
+ ) ?;
376
+ serde_serialize_field (
377
+ & mut state,
378
+ "strikethrough" ,
379
+ & self . strikethrough ,
380
+ & false ,
381
+ self . reset ,
382
+ ) ?;
383
+ serde_serialize_field (
384
+ & mut state,
385
+ "obfuscated" ,
386
+ & self . obfuscated ,
387
+ & false ,
388
+ self . reset ,
389
+ ) ?;
370
390
371
391
state. end ( )
372
392
}
@@ -377,12 +397,30 @@ impl simdnbt::Serialize for Style {
377
397
fn to_compound ( self ) -> NbtCompound {
378
398
let mut compound = NbtCompound :: new ( ) ;
379
399
380
- simdnbt_serialize_field ( & mut compound, "color" , self . color , "white" ) ;
381
- simdnbt_serialize_field ( & mut compound, "bold" , self . bold , false ) ;
382
- simdnbt_serialize_field ( & mut compound, "italic" , self . italic , false ) ;
383
- simdnbt_serialize_field ( & mut compound, "underlined" , self . underlined , false ) ;
384
- simdnbt_serialize_field ( & mut compound, "strikethrough" , self . strikethrough , false ) ;
385
- simdnbt_serialize_field ( & mut compound, "obfuscated" , self . obfuscated , false ) ;
400
+ simdnbt_serialize_field ( & mut compound, "color" , self . color , "white" , self . reset ) ;
401
+ simdnbt_serialize_field ( & mut compound, "bold" , self . bold , false , self . reset ) ;
402
+ simdnbt_serialize_field ( & mut compound, "italic" , self . italic , false , self . reset ) ;
403
+ simdnbt_serialize_field (
404
+ & mut compound,
405
+ "underlined" ,
406
+ self . underlined ,
407
+ false ,
408
+ self . reset ,
409
+ ) ;
410
+ simdnbt_serialize_field (
411
+ & mut compound,
412
+ "strikethrough" ,
413
+ self . strikethrough ,
414
+ false ,
415
+ self . reset ,
416
+ ) ;
417
+ simdnbt_serialize_field (
418
+ & mut compound,
419
+ "obfuscated" ,
420
+ self . obfuscated ,
421
+ false ,
422
+ self . reset ,
423
+ ) ;
386
424
387
425
compound
388
426
}
0 commit comments