2424 */
2525package org .spongepowered .common .item ;
2626
27- import com .mojang .serialization .Dynamic ;
28- import net .minecraft .SharedConstants ;
29- import net .minecraft .nbt .CompoundTag ;
30- import net .minecraft .nbt .NbtOps ;
31- import net .minecraft .util .datafix .DataFixers ;
32- import net .minecraft .util .datafix .fixes .References ;
3327import org .spongepowered .api .data .persistence .DataContainer ;
3428import org .spongepowered .api .data .persistence .DataContentUpdater ;
3529import org .spongepowered .api .data .persistence .DataView ;
3630import org .spongepowered .api .data .persistence .Queries ;
3731import org .spongepowered .api .item .ItemTypes ;
3832import org .spongepowered .api .registry .RegistryTypes ;
39- import org .spongepowered .common .data .persistence .NBTTranslator ;
4033import org .spongepowered .common .util .Constants ;
4134
4235public final class ItemStackDataVersionUpdater implements DataContentUpdater {
@@ -55,29 +48,25 @@ public int outputVersion() {
5548
5649 @ Override
5750 public DataView update (final DataView content ) {
58- final boolean isAir = content .getRegistryValue (Constants .ItemStack .TYPE , RegistryTypes .ITEM_TYPE )
51+ final boolean isAir = content .getRegistryValue (Constants .ItemStack .V3 . TYPE , RegistryTypes .ITEM_TYPE )
5952 .map (i -> i == ItemTypes .AIR .get ())
6053 .orElse (false );
6154
6255 final DataContainer updated = DataContainer .createNew ();
6356 updated .set (Queries .CONTENT_VERSION , this .outputVersion ());
64- updated .set (Constants .ItemStack .DATA_VERSION , SharedConstants . getCurrentVersion (). getDataVersion (). getVersion ());
57+ updated .set (Constants .ItemStack .V4 . DATA_VERSION , 3833 ); // The version from the previous ItemStackDataComponentsUpdater.
6558
6659 if (isAir ) {
67- return updated .set (Constants .ItemStack .DATA , DataContainer .createNew ());
60+ return updated .set (Constants .ItemStack .V4 . DATA , DataContainer .createNew ());
6861 }
6962
70- final CompoundTag itemStackTag = new CompoundTag ();
71- itemStackTag . putString ( "id" , content .getString (Constants .ItemStack .TYPE ).get ());
72- itemStackTag . putInt ( "count" , content .getInt (Constants .ItemStack .COUNT ).get ());
63+ final DataContainer data = DataContainer . createNew ()
64+ . set ( Constants . ItemStack . V3 . TYPE , content .getString (Constants .ItemStack .V3 . TYPE ).get ())
65+ . set ( Constants . ItemStack . V3 . COUNT , content .getInt (Constants .ItemStack . V3 .COUNT ).get ());
7366
74- content .getView (Constants .ItemStack .COMPONENTS ). ifPresent ( components ->
75- itemStackTag . put ( " components" , NBTTranslator . INSTANCE . translate ( components ) ));
67+ content .getView (Constants .ItemStack .V3 . COMPONENTS )
68+ . ifPresent ( components -> data . set ( Constants . ItemStack . V3 . COMPONENTS , components ));
7669
77- var dataFixed = DataFixers .getDataFixer ().update (References .ITEM_STACK , new Dynamic <>(NbtOps .INSTANCE , itemStackTag ), 3833 , SharedConstants .getCurrentVersion ().getDataVersion ().getVersion ());
78-
79- updated .set (Constants .ItemStack .DATA , NBTTranslator .INSTANCE .translate ((CompoundTag ) dataFixed .getValue ()));
80-
81- return updated ;
70+ return updated .set (Constants .ItemStack .V4 .DATA , data );
8271 }
8372}
0 commit comments