Skip to content

Commit d372130

Browse files
Cleanup 1.20.2->1.20 item and recipe rewriter (#840)
1 parent 0ed3efc commit d372130

File tree

1 file changed

+12
-172
lines changed

1 file changed

+12
-172
lines changed

common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/rewriter/BlockItemPacketRewriter1_20_2.java

Lines changed: 12 additions & 172 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
public 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

Comments
 (0)