17
17
*/
18
18
package com .viaversion .viabackwards .protocol .v1_21to1_20_5 .rewriter ;
19
19
20
+ import com .viaversion .nbt .tag .ByteTag ;
20
21
import com .viaversion .nbt .tag .CompoundTag ;
21
22
import com .viaversion .nbt .tag .ListTag ;
22
23
import com .viaversion .nbt .tag .StringTag ;
23
24
import com .viaversion .nbt .tag .Tag ;
24
25
import com .viaversion .viabackwards .api .rewriters .BackwardsStructuredItemRewriter ;
25
- import com .viaversion .viabackwards .api .rewriters .EnchantmentRewriter ;
26
26
import com .viaversion .viabackwards .api .rewriters .StructuredEnchantmentRewriter ;
27
27
import com .viaversion .viabackwards .protocol .v1_21to1_20_5 .Protocol1_21To1_20_5 ;
28
28
import com .viaversion .viabackwards .protocol .v1_21to1_20_5 .storage .EnchantmentsPaintingsStorage ;
53
53
import static com .viaversion .viaversion .protocols .v1_20_5to1_21 .rewriter .BlockItemPacketRewriter1_21 .downgradeItemData ;
54
54
import static com .viaversion .viaversion .protocols .v1_20_5to1_21 .rewriter .BlockItemPacketRewriter1_21 .updateItemData ;
55
55
56
+ import static com .viaversion .viaversion .protocols .v1_20_5to1_21 .rewriter .BlockItemPacketRewriter1_21 .resetRarityValues ;
57
+
56
58
import static com .viaversion .viabackwards .api .rewriters .EnchantmentRewriter .ENCHANTMENT_LEVEL_TRANSLATION ;
57
59
58
60
public final class BlockItemPacketRewriter1_21 extends BackwardsStructuredItemRewriter <ClientboundPacket1_21 , ServerboundPacket1_20_5 , Protocol1_21To1_20_5 > {
@@ -153,9 +155,23 @@ public Item handleItemToClient(final UserConnection connection, final Item item)
153
155
enchantmentRewriter .rewriteEnchantmentsToClient (data , StructuredDataKey .ENCHANTMENTS , idRewriteFunction , descriptionSupplier , false );
154
156
enchantmentRewriter .rewriteEnchantmentsToClient (data , StructuredDataKey .STORED_ENCHANTMENTS , idRewriteFunction , descriptionSupplier , true );
155
157
158
+ final int identifier = item .identifier ();
159
+
156
160
// Order is important
157
161
super .handleItemToClient (connection , item );
158
162
downgradeItemData (item );
163
+
164
+ final StructuredDataContainer dataContainer = item .dataContainer ();
165
+ if (dataContainer .contains (StructuredDataKey .RARITY )) {
166
+ return item ;
167
+ }
168
+
169
+ // Change rarity of trident and piglin banner pattern
170
+ final boolean trident = identifier == 1188 ;
171
+ if (trident || identifier == 1200 ) {
172
+ dataContainer .set (StructuredDataKey .RARITY , trident ? 3 : 1 ); // Epic or Uncommon
173
+ saveTag (createCustomTag (item ), new ByteTag (true ), "rarity" );
174
+ }
159
175
return item ;
160
176
}
161
177
@@ -179,6 +195,7 @@ public Item handleItemToServer(final UserConnection connection, final Item item)
179
195
// Order is important
180
196
super .handleItemToServer (connection , item );
181
197
updateItemData (item );
198
+ resetRarityValues (item , nbtTagName ("rarity" ));
182
199
return item ;
183
200
}
184
201
0 commit comments