2727import com .viaversion .viaversion .libs .fastutil .ints .Int2ObjectOpenHashMap ;
2828import com .viaversion .viaversion .libs .fastutil .objects .Object2ObjectMap ;
2929import com .viaversion .viaversion .libs .fastutil .objects .Object2ObjectOpenHashMap ;
30- import com .viaversion .viaversion .libs .mcstructs .snbt .SNbtSerializer ;
31- import com .viaversion .viaversion .libs .mcstructs .text .ATextComponent ;
32- import com .viaversion .viaversion .libs .mcstructs .text .components .StringComponent ;
30+ import com .viaversion .viaversion .libs .mcstructs .snbt .SNbt ;
31+ import com .viaversion .viaversion .libs .mcstructs .text .TextComponent ;
3332import com .viaversion .viaversion .libs .mcstructs .text .components .TranslationComponent ;
34- import com .viaversion .viaversion .libs .mcstructs .text .events .hover .HoverEventAction ;
35- import com .viaversion .viaversion .libs .mcstructs .text .events .hover .impl .TextHoverEvent ;
33+ import com .viaversion .viaversion .libs .mcstructs .text .events .hover .impl .ItemHoverEvent ;
3634import com .viaversion .viaversion .libs .mcstructs .text .serializer .TextComponentSerializer ;
3735import com .viaversion .viaversion .libs .mcstructs .text .utils .TextUtils ;
3836import com .viaversion .viaversion .util .Key ;
@@ -430,7 +428,7 @@ public TextRewriter(final Protocol<?, ?, ?, ?> protocol) {
430428 }
431429
432430 public String toClient (final UserConnection user , final String text ) {
433- final ATextComponent component = TextComponentSerializer .V1_7 .deserialize (text );
431+ final TextComponent component = TextComponentSerializer .V1_7 .deserialize (text );
434432 // Replace translation keys with their actual translations
435433 TextUtils .iterateAll (component , c -> {
436434 if (c instanceof TranslationComponent translationComponent ) {
@@ -441,38 +439,36 @@ public String toClient(final UserConnection user, final String text) {
441439 });
442440 // Translate item hover events
443441 TextUtils .iterateAll (component , c -> {
444- if (c .getStyle ().getHoverEvent () instanceof TextHoverEvent textHoverEvent ) {
445- if (textHoverEvent .getAction ().equals (HoverEventAction .SHOW_ITEM )) {
446- try {
447- final CompoundTag tag = (CompoundTag ) SNbtSerializer .V1_7 .deserialize (textHoverEvent .getText ().asUnformattedString ());
448- final short id = tag .getShort ("id" );
449- final short damage = tag .getShort ("Damage" );
450- final CompoundTag itemTag = tag .getCompoundTag ("tag" );
442+ if (c .getStyle ().getHoverEvent () instanceof ItemHoverEvent itemHoverEvent && itemHoverEvent .getData () instanceof ItemHoverEvent .LegacyHolder legacyHolder ) {
443+ try {
444+ final CompoundTag tag = (CompoundTag ) SNbt .V1_7 .deserialize (legacyHolder .getData ());
445+ final short id = tag .getShort ("id" );
446+ final short damage = tag .getShort ("Damage" );
447+ final CompoundTag itemTag = tag .getCompoundTag ("tag" );
451448
452- Item item = new DataItem ();
453- item .setIdentifier (id );
454- item .setData (damage );
455- item .setTag (itemTag );
456- item = this .protocol .getItemRewriter ().handleItemToClient (user , item );
449+ Item item = new DataItem ();
450+ item .setIdentifier (id );
451+ item .setData (damage );
452+ item .setTag (itemTag );
453+ item = this .protocol .getItemRewriter ().handleItemToClient (user , item );
457454
458- if (!ID_TO_NAME .containsKey (item .identifier ())) {
459- throw new IllegalArgumentException ("Invalid item ID: " + item .identifier ());
460- }
461- tag .putString ("id" , Key .namespaced (ID_TO_NAME .get (item .identifier ())));
462- if (damage != item .data ()) {
463- tag .putShort ("Damage" , item .data ());
464- }
465- if (item .tag () != itemTag ) {
466- tag .put ("tag" , item .tag ());
467- }
455+ if (!ID_TO_NAME .containsKey (item .identifier ())) {
456+ throw new IllegalArgumentException ("Invalid item ID: " + item .identifier ());
457+ }
458+ tag .putString ("id" , Key .namespaced (ID_TO_NAME .get (item .identifier ())));
459+ if (damage != item .data ()) {
460+ tag .putShort ("Damage" , item .data ());
461+ }
462+ if (item .tag () != itemTag ) {
463+ tag .put ("tag" , item .tag ());
464+ }
468465
469- c .getStyle ().setHoverEvent (new TextHoverEvent (textHoverEvent .getAction (), new StringComponent (SNbtSerializer .V1_8 .serialize (tag ))));
470- } catch (Throwable e ) {
471- if (!Via .getConfig ().isSuppressConversionWarnings ()) {
472- ViaLegacy .getPlatform ().getLogger ().log (Level .WARNING , "Error remapping NBT in show_item:" + textHoverEvent .getText ().asUnformattedString (), e );
473- }
474- c .getStyle ().setHoverEvent (new TextHoverEvent (textHoverEvent .getAction (), new StringComponent ())); // Invalid item
466+ legacyHolder .setData (SNbt .V1_8 .serialize (tag ));
467+ } catch (Throwable e ) {
468+ if (!Via .getConfig ().isSuppressConversionWarnings ()) {
469+ ViaLegacy .getPlatform ().getLogger ().log (Level .WARNING , "Error remapping NBT in show_item:" + legacyHolder .getData (), e );
475470 }
471+ legacyHolder .setData ("" );
476472 }
477473 }
478474 });
0 commit comments