5454public final class BlockItemPacketRewriter1_20_2 extends BackwardsItemRewriter <ClientboundPackets1_20_2 , ServerboundPackets1_19_4 , Protocol1_20_2To1_20 > {
5555
5656 public BlockItemPacketRewriter1_20_2 (final Protocol1_20_2To1_20 protocol ) {
57- super (protocol , Types .ITEM1_20_2 , Types .ITEM1_20_2_ARRAY );
57+ super (protocol , Types .ITEM1_20_2 , Types .ITEM1_20_2_ARRAY , Types . ITEM1_13_2 , Types . ITEM1_13_2_ARRAY );
5858 }
5959
6060 @ Override
@@ -65,6 +65,13 @@ public void registerPackets() {
6565 blockRewriter .registerSectionBlocksUpdate1_20 (ClientboundPackets1_20_2 .SECTION_BLOCKS_UPDATE );
6666 blockRewriter .registerLevelEvent (ClientboundPackets1_20_2 .LEVEL_EVENT , 1010 , 2001 );
6767
68+ registerSetContent1_17_1 (ClientboundPackets1_20_2 .CONTAINER_SET_CONTENT );
69+ registerSetSlot1_17_1 (ClientboundPackets1_20_2 .CONTAINER_SET_SLOT );
70+ registerContainerClick1_17_1 (ServerboundPackets1_19_4 .CONTAINER_CLICK );
71+ registerMerchantOffers1_19 (ClientboundPackets1_20_2 .MERCHANT_OFFERS );
72+ registerSetCreativeModeSlot (ServerboundPackets1_19_4 .SET_CREATIVE_MODE_SLOT );
73+ registerLevelParticles1_19 (ClientboundPackets1_20_2 .LEVEL_PARTICLES );
74+
6875 protocol .cancelClientbound (ClientboundPackets1_20_2 .CHUNK_BATCH_START );
6976 protocol .registerClientbound (ClientboundPackets1_20_2 .CHUNK_BATCH_FINISHED , null , wrapper -> {
7077 wrapper .cancel ();
@@ -145,32 +152,6 @@ public void registerPackets() {
145152 }
146153 });
147154
148- // Replace the NBT type everywhere
149- protocol .registerClientbound (ClientboundPackets1_20_2 .CONTAINER_SET_CONTENT , new PacketHandlers () {
150- @ Override
151- public void register () {
152- map (Types .UNSIGNED_BYTE ); // Window id
153- map (Types .VAR_INT ); // State id
154- handler (wrapper -> {
155- final Item [] items = wrapper .read (Types .ITEM1_20_2_ARRAY );
156- for (final Item item : items ) {
157- handleItemToClient (wrapper .user (), item );
158- }
159-
160- wrapper .write (Types .ITEM1_13_2_ARRAY , items );
161- wrapper .write (Types .ITEM1_13_2 , handleItemToClient (wrapper .user (), wrapper .read (Types .ITEM1_20_2 ))); // Carried item
162- });
163- }
164- });
165- protocol .registerClientbound (ClientboundPackets1_20_2 .CONTAINER_SET_SLOT , new PacketHandlers () {
166- @ Override
167- public void register () {
168- map (Types .UNSIGNED_BYTE ); // Window id
169- map (Types .VAR_INT ); // State id
170- map (Types .SHORT ); // Slot id
171- handler (wrapper -> wrapper .write (Types .ITEM1_13_2 , handleItemToClient (wrapper .user (), wrapper .read (Types .ITEM1_20_2 ))));
172- }
173- });
174155 protocol .registerClientbound (ClientboundPackets1_20_2 .UPDATE_ADVANCEMENTS , wrapper -> {
175156 wrapper .passthrough (Types .BOOLEAN ); // Reset/clear
176157 final int size = wrapper .passthrough (Types .VAR_INT );
@@ -216,159 +197,18 @@ public void register() {
216197 });
217198 }
218199 });
219- protocol .registerServerbound (ServerboundPackets1_19_4 .CONTAINER_CLICK , new PacketHandlers () {
220- @ Override
221- public void register () {
222- map (Types .UNSIGNED_BYTE ); // Window Id
223- map (Types .VAR_INT ); // State id
224- map (Types .SHORT ); // Slot
225- map (Types .BYTE ); // Button
226- map (Types .VAR_INT ); // Mode
227-
228- handler (wrapper -> {
229- // Affected items
230- final int length = wrapper .passthrough (Types .VAR_INT );
231- for (int i = 0 ; i < length ; i ++) {
232- wrapper .passthrough (Types .SHORT ); // Slot
233- wrapper .write (Types .ITEM1_20_2 , handleItemToServer (wrapper .user (), wrapper .read (Types .ITEM1_13_2 )));
234- }
235-
236- // Carried item
237- wrapper .write (Types .ITEM1_20_2 , handleItemToServer (wrapper .user (), wrapper .read (Types .ITEM1_13_2 )));
238- });
239- }
240- });
241- protocol .registerClientbound (ClientboundPackets1_20_2 .MERCHANT_OFFERS , wrapper -> {
242- wrapper .passthrough (Types .VAR_INT ); // Container id
243- final int size = wrapper .passthrough (Types .VAR_INT );
244- for (int i = 0 ; i < size ; i ++) {
245- wrapper .write (Types .ITEM1_13_2 , handleItemToClient (wrapper .user (), wrapper .read (Types .ITEM1_20_2 ))); // Input
246- wrapper .write (Types .ITEM1_13_2 , handleItemToClient (wrapper .user (), wrapper .read (Types .ITEM1_20_2 ))); // Output
247- wrapper .write (Types .ITEM1_13_2 , handleItemToClient (wrapper .user (), wrapper .read (Types .ITEM1_20_2 ))); // Second Item
248-
249- wrapper .passthrough (Types .BOOLEAN ); // Trade disabled
250- wrapper .passthrough (Types .INT ); // Number of tools uses
251- wrapper .passthrough (Types .INT ); // Maximum number of trade uses
252- wrapper .passthrough (Types .INT ); // XP
253- wrapper .passthrough (Types .INT ); // Special price
254- wrapper .passthrough (Types .FLOAT ); // Price multiplier
255- wrapper .passthrough (Types .INT ); // Demand
256- }
257- });
258- protocol .registerServerbound (ServerboundPackets1_19_4 .SET_CREATIVE_MODE_SLOT , new PacketHandlers () {
259- @ Override
260- public void register () {
261- map (Types .SHORT ); // 0 - Slot
262- handler (wrapper -> wrapper .write (Types .ITEM1_20_2 , handleItemToServer (wrapper .user (), wrapper .read (Types .ITEM1_13_2 )))); // 1 - Clicked Item
263- }
264- });
265- protocol .registerClientbound (ClientboundPackets1_20_2 .LEVEL_PARTICLES , new PacketHandlers () {
266- @ Override
267- public void register () {
268- map (Types .VAR_INT ); // 0 - Particle ID
269- map (Types .BOOLEAN ); // 1 - Long Distance
270- map (Types .DOUBLE ); // 2 - X
271- map (Types .DOUBLE ); // 3 - Y
272- map (Types .DOUBLE ); // 4 - Z
273- map (Types .FLOAT ); // 5 - Offset X
274- map (Types .FLOAT ); // 6 - Offset Y
275- map (Types .FLOAT ); // 7 - Offset Z
276- map (Types .FLOAT ); // 8 - Particle Data
277- map (Types .INT ); // 9 - Particle Count
278- handler (wrapper -> {
279- final int id = wrapper .get (Types .VAR_INT , 0 );
280- final ParticleMappings mappings = Protocol1_20_2To1_20 .MAPPINGS .getParticleMappings ();
281- if (mappings .isBlockParticle (id )) {
282- final int data = wrapper .read (Types .VAR_INT );
283- wrapper .write (Types .VAR_INT , protocol .getMappingData ().getNewBlockStateId (data ));
284- } else if (mappings .isItemParticle (id )) {
285- wrapper .write (Types .ITEM1_13_2 , handleItemToClient (wrapper .user (), wrapper .read (Types .ITEM1_20_2 )));
286- }
287- });
288- }
289- });
290200
291201 new RecipeRewriter1_20_2 <>(protocol ) {
292202 @ Override
293- public void handleCraftingShapeless (final PacketWrapper wrapper ) {
294- wrapper .passthrough (Types .STRING ); // Group
295- wrapper .passthrough (Types .VAR_INT ); // Crafting book category
296- handleIngredients (wrapper );
297-
298- final Item result = wrapper .read (itemType ());
299- rewrite (wrapper .user (), result );
300- wrapper .write (Types .ITEM1_13_2 , result );
301- }
302-
303- @ Override
304- public void handleSmelting (final PacketWrapper wrapper ) {
305- wrapper .passthrough (Types .STRING ); // Group
306- wrapper .passthrough (Types .VAR_INT ); // Crafting book category
307- handleIngredient (wrapper );
308-
309- final Item result = wrapper .read (itemType ());
310- rewrite (wrapper .user (), result );
311- wrapper .write (Types .ITEM1_13_2 , result );
312-
313- wrapper .passthrough (Types .FLOAT ); // EXP
314- wrapper .passthrough (Types .VAR_INT ); // Cooking time
315- }
316-
317- @ Override
318- public void handleCraftingShaped (final PacketWrapper wrapper ) {
319- final int ingredients = wrapper .passthrough (Types .VAR_INT ) * wrapper .passthrough (Types .VAR_INT );
320- wrapper .passthrough (Types .STRING ); // Group
321- wrapper .passthrough (Types .VAR_INT ); // Crafting book category
322- for (int i = 0 ; i < ingredients ; i ++) {
323- handleIngredient (wrapper );
324- }
325-
326- final Item result = wrapper .read (itemType ());
327- rewrite (wrapper .user (), result );
328- wrapper .write (Types .ITEM1_13_2 , result );
329-
330- wrapper .passthrough (Types .BOOLEAN ); // Show notification
203+ protected Type <Item > mappedItemType () {
204+ return BlockItemPacketRewriter1_20_2 .this .mappedItemType ();
331205 }
332206
333207 @ Override
334- public void handleStonecutting (final PacketWrapper wrapper ) {
335- wrapper .passthrough (Types .STRING ); // Group
336- handleIngredient (wrapper );
337-
338- final Item result = wrapper .read (itemType ());
339- rewrite (wrapper .user (), result );
340- wrapper .write (Types .ITEM1_13_2 , result );
208+ protected Type <Item []> mappedItemArrayType () {
209+ return BlockItemPacketRewriter1_20_2 .this .mappedItemArrayType ();
341210 }
342211
343- @ Override
344- public void handleSmithing (final PacketWrapper wrapper ) {
345- handleIngredient (wrapper ); // Base
346- handleIngredient (wrapper ); // Addition
347-
348- final Item result = wrapper .read (itemType ());
349- rewrite (wrapper .user (), result );
350- wrapper .write (Types .ITEM1_13_2 , result );
351- }
352-
353- @ Override
354- public void handleSmithingTransform (final PacketWrapper wrapper ) {
355- handleIngredient (wrapper ); // Template
356- handleIngredient (wrapper ); // Base
357- handleIngredient (wrapper ); // Additions
358-
359- final Item result = wrapper .read (itemType ());
360- rewrite (wrapper .user (), result );
361- wrapper .write (Types .ITEM1_13_2 , result );
362- }
363-
364- @ Override
365- protected void handleIngredient (final PacketWrapper wrapper ) {
366- final Item [] items = wrapper .read (itemArrayType ());
367- wrapper .write (Types .ITEM1_13_2_ARRAY , items );
368- for (final Item item : items ) {
369- rewrite (wrapper .user (), item );
370- }
371- }
372212 }.register (ClientboundPackets1_20_2 .UPDATE_RECIPES );
373213 }
374214
0 commit comments