Skip to content

Commit a37605e

Browse files
committed
Update VV usage
1 parent 1d4e41f commit a37605e

File tree

17 files changed

+266
-170
lines changed

17 files changed

+266
-170
lines changed

common/src/main/java/com/viaversion/viabackwards/api/ViaBackwardsPlatform.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777

7878
public interface ViaBackwardsPlatform {
7979

80-
String MINIMUM_VV_VERSION = "5.5.1";
80+
String MINIMUM_VV_VERSION = "5.5.2";
8181

8282
/**
8383
* Initialize ViaBackwards.

common/src/main/java/com/viaversion/viabackwards/protocol/template/EntityPacketRewriter1_99.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,13 @@
1717
*/
1818
package com.viaversion.viabackwards.protocol.template;
1919

20-
import com.viaversion.viabackwards.api.rewriters.BackwardsRegistryRewriter;
2120
import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
2221
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
2322
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_4;
2423
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_2;
2524
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
26-
import com.viaversion.viaversion.protocols.v1_20_5to1_21.packet.ClientboundConfigurationPackets1_21;
2725
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPacket1_21_2;
2826
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPackets1_21_2;
29-
import com.viaversion.viaversion.rewriter.RegistryDataRewriter;
3027

3128
// Replace if needed
3229
// VersionedTypes
@@ -45,9 +42,6 @@ public void registerPackets() {
4542
registerGameEvent(ClientboundPackets1_21_2.GAME_EVENT);
4643
registerLogin1_20_5(ClientboundPackets1_21_2.LOGIN);
4744
registerRespawn1_20_5(ClientboundPackets1_21_2.RESPAWN);
48-
49-
final RegistryDataRewriter registryDataRewriter = new BackwardsRegistryRewriter(protocol);
50-
protocol.registerClientbound(ClientboundConfigurationPackets1_21.REGISTRY_DATA, registryDataRewriter::handle);
5145
}
5246

5347
@Override

common/src/main/java/com/viaversion/viabackwards/protocol/template/Protocol1_99To1_98.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import com.viaversion.viabackwards.api.BackwardsProtocol;
2121
import com.viaversion.viabackwards.api.data.BackwardsMappingData;
22+
import com.viaversion.viabackwards.api.rewriters.BackwardsRegistryRewriter;
2223
import com.viaversion.viabackwards.api.rewriters.SoundRewriter;
2324
import com.viaversion.viabackwards.api.rewriters.text.NBTComponentRewriter;
2425
import com.viaversion.viaversion.api.connection.UserConnection;
@@ -37,9 +38,9 @@
3738
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPacket1_21_2;
3839
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPackets1_21_2;
3940
import com.viaversion.viaversion.rewriter.ParticleRewriter;
41+
import com.viaversion.viaversion.rewriter.RegistryDataRewriter;
4042
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
4143
import com.viaversion.viaversion.rewriter.TagRewriter;
42-
import com.viaversion.viaversion.util.SerializerVersion;
4344

4445
import static com.viaversion.viaversion.util.ProtocolUtil.packetTypeMap;
4546

@@ -62,6 +63,7 @@ final class Protocol1_99To1_98 extends BackwardsProtocol<ClientboundPacket1_21_2
6263
private final ParticleRewriter<ClientboundPacket1_21_2> particleRewriter = new ParticleRewriter<>(this);
6364
private final NBTComponentRewriter<ClientboundPacket1_21_2> translatableRewriter = new ComponentRewriter1_99(this);
6465
private final TagRewriter<ClientboundPacket1_21_2> tagRewriter = new TagRewriter<>(this);
66+
private final RegistryDataRewriter registryDataRewriter = new BackwardsRegistryRewriter(this);
6567

6668
public Protocol1_99To1_98() {
6769
super(ClientboundPacket1_21_2.class, ClientboundPacket1_21_2.class, ServerboundPacket1_21_4.class, ServerboundPacket1_21_4.class);
@@ -71,6 +73,8 @@ public Protocol1_99To1_98() {
7173
protected void registerPackets() {
7274
super.registerPackets();
7375

76+
registerClientbound(ClientboundConfigurationPackets1_21.REGISTRY_DATA, registryDataRewriter::handle);
77+
7478
tagRewriter.registerGeneric(ClientboundPackets1_21_2.UPDATE_TAGS);
7579
tagRewriter.registerGeneric(ClientboundConfigurationPackets1_21.UPDATE_TAGS);
7680

@@ -123,6 +127,11 @@ public BlockItemPacketRewriter1_99 getItemRewriter() {
123127
return itemRewriter;
124128
}
125129

130+
@Override
131+
public RegistryDataRewriter getRegistryDataRewriter() {
132+
return registryDataRewriter;
133+
}
134+
126135
@Override
127136
public ParticleRewriter<ClientboundPacket1_21_2> getParticleRewriter() {
128137
return particleRewriter;

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_5to1_21_4/Protocol1_21_5To1_21_4.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,21 @@
1717
*/
1818
package com.viaversion.viabackwards.protocol.v1_21_5to1_21_4;
1919

20+
import com.viaversion.nbt.tag.CompoundTag;
21+
import com.viaversion.nbt.tag.ListTag;
22+
import com.viaversion.nbt.tag.StringTag;
2023
import com.viaversion.viabackwards.api.BackwardsProtocol;
2124
import com.viaversion.viabackwards.api.data.BackwardsMappingData;
25+
import com.viaversion.viabackwards.api.rewriters.BackwardsRegistryRewriter;
2226
import com.viaversion.viabackwards.api.rewriters.SoundRewriter;
2327
import com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.rewriter.BlockItemPacketRewriter1_21_5;
2428
import com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.rewriter.ComponentRewriter1_21_5;
2529
import com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.rewriter.EntityPacketRewriter1_21_5;
30+
import com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.rewriter.RegistryDataRewriter1_21_5;
2631
import com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.storage.HashedItemConverterStorage;
2732
import com.viaversion.viaversion.api.connection.UserConnection;
2833
import com.viaversion.viaversion.api.minecraft.Particle;
34+
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
2935
import com.viaversion.viaversion.api.minecraft.data.version.StructuredDataKeys1_21_2;
3036
import com.viaversion.viaversion.api.minecraft.data.version.StructuredDataKeys1_21_5;
3137
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_4;
@@ -52,10 +58,13 @@
5258
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPacket1_21_2;
5359
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPackets1_21_2;
5460
import com.viaversion.viaversion.rewriter.ParticleRewriter;
61+
import com.viaversion.viaversion.rewriter.RegistryDataRewriter;
5562
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
5663
import com.viaversion.viaversion.rewriter.TagRewriter;
5764
import com.viaversion.viaversion.util.Key;
5865
import com.viaversion.viaversion.util.Limit;
66+
import java.util.ArrayList;
67+
import java.util.List;
5968

6069
import static com.viaversion.viaversion.util.ProtocolUtil.packetTypeMap;
6170

@@ -75,6 +84,7 @@ public void rewriteParticle(final UserConnection connection, final Particle part
7584
};
7685
private final ComponentRewriter1_21_5 translatableRewriter = new ComponentRewriter1_21_5(this);
7786
private final TagRewriter<ClientboundPacket1_21_5> tagRewriter = new TagRewriter<>(this);
87+
private final RegistryDataRewriter registryDataRewriter = new RegistryDataRewriter1_21_5(this);
7888

7989
public Protocol1_21_5To1_21_4() {
8090
super(ClientboundPacket1_21_5.class, ClientboundPacket1_21_2.class, ServerboundPacket1_21_5.class, ServerboundPacket1_21_4.class);
@@ -204,6 +214,11 @@ public BlockItemPacketRewriter1_21_5 getItemRewriter() {
204214
return itemRewriter;
205215
}
206216

217+
@Override
218+
public RegistryDataRewriter getRegistryDataRewriter() {
219+
return registryDataRewriter;
220+
}
221+
207222
@Override
208223
public ParticleRewriter<ClientboundPacket1_21_5> getParticleRewriter() {
209224
return particleRewriter;

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_5to1_21_4/rewriter/EntityPacketRewriter1_21_5.java

Lines changed: 2 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,9 @@
1717
*/
1818
package com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.rewriter;
1919

20-
import com.viaversion.nbt.tag.CompoundTag;
21-
import com.viaversion.nbt.tag.ListTag;
22-
import com.viaversion.nbt.tag.StringTag;
23-
import com.viaversion.viabackwards.api.rewriters.BackwardsRegistryRewriter;
2420
import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
2521
import com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.Protocol1_21_5To1_21_4;
26-
import com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.storage.HashedItemConverterStorage;
2722
import com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.storage.HorseDataStorage;
28-
import com.viaversion.viaversion.api.connection.UserConnection;
2923
import com.viaversion.viaversion.api.data.entity.TrackedEntity;
3024
import com.viaversion.viaversion.api.minecraft.Holder;
3125
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
@@ -42,18 +36,11 @@
4236
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.packet.ClientboundPacket1_21_5;
4337
import com.viaversion.viaversion.protocols.v1_21_4to1_21_5.packet.ClientboundPackets1_21_5;
4438
import com.viaversion.viaversion.protocols.v1_21to1_21_2.packet.ClientboundPackets1_21_2;
45-
import com.viaversion.viaversion.rewriter.RegistryDataRewriter;
4639
import com.viaversion.viaversion.util.Key;
47-
import java.util.ArrayList;
48-
import java.util.List;
49-
import java.util.Set;
5040
import java.util.UUID;
5141

5242
public final class EntityPacketRewriter1_21_5 extends EntityRewriter<ClientboundPacket1_21_5, Protocol1_21_5To1_21_4> {
5343

54-
private static final Set<String> NEW_REGISTRIES = Set.of("pig_variant", "cow_variant", "frog_variant", "cat_variant",
55-
"chicken_variant", "test_environment", "test_instance", "wolf_sound_variant");
56-
5744
public EntityPacketRewriter1_21_5(final Protocol1_21_5To1_21_4 protocol) {
5845
super(protocol, protocol.mappedTypes().entityDataTypes().optionalComponentType, protocol.mappedTypes().entityDataTypes().booleanType);
5946
}
@@ -112,67 +99,15 @@ public void registerPackets() {
11299
}
113100
});
114101

115-
final RegistryDataRewriter registryDataRewriter = new BackwardsRegistryRewriter(protocol) {
116-
@Override
117-
public RegistryEntry[] handle(final UserConnection connection, final String key, final RegistryEntry[] entries) {
118-
final boolean trimPatternRegistry = key.equals("trim_pattern");
119-
if (trimPatternRegistry || key.equals("trim_material")) {
120-
updateTrim(entries, trimPatternRegistry ? "template_item" : "ingredient");
121-
return super.handle(connection, key, entries);
122-
}
123-
124-
if (key.equals("enchantment")) {
125-
updateEnchantment(entries);
126-
return super.handle(connection, key, entries);
127-
}
128-
129-
if (!key.equals("wolf_variant")) {
130-
return super.handle(connection, key, entries);
131-
}
132-
133-
for (final RegistryEntry entry : entries) {
134-
if (entry.tag() == null) {
135-
continue;
136-
}
137-
138-
final CompoundTag variant = (CompoundTag) entry.tag();
139-
final CompoundTag assets = (CompoundTag) variant.remove("assets");
140-
variant.put("wild_texture", assets.get("wild"));
141-
variant.put("tame_texture", assets.get("tame"));
142-
variant.put("angry_texture", assets.get("angry"));
143-
variant.put("biomes", new ListTag<>(StringTag.class));
144-
}
145-
return entries;
146-
}
147-
148-
private void updateTrim(final RegistryEntry[] entries, final String itemKey) {
149-
for (final RegistryEntry entry : entries) {
150-
if (entry.tag() == null) {
151-
continue;
152-
}
153-
154-
final CompoundTag tag = (CompoundTag) entry.tag();
155-
tag.putString(itemKey, "stone"); // dummy ingredient
156-
}
157-
}
158-
};
159102
protocol.registerClientbound(ClientboundConfigurationPackets1_21.REGISTRY_DATA, wrapper -> {
160103
final String registryKey = Key.stripMinecraftNamespace(wrapper.passthrough(Types.STRING));
161-
if (NEW_REGISTRIES.contains(registryKey)) {
104+
if (RegistryDataRewriter1_21_5.NEW_REGISTRIES.contains(registryKey)) {
162105
wrapper.cancel();
163106
return;
164107
}
165108

166109
final RegistryEntry[] entries = wrapper.read(Types.REGISTRY_ENTRY_ARRAY);
167-
if (registryKey.equals("enchantment")) {
168-
final List<String> identifiers = new ArrayList<>(entries.length);
169-
for (final RegistryEntry entry : entries) {
170-
identifiers.add(entry.key());
171-
}
172-
wrapper.user().get(HashedItemConverterStorage.class).setEnchantments(identifiers);
173-
}
174-
175-
wrapper.write(Types.REGISTRY_ENTRY_ARRAY, registryDataRewriter.handle(wrapper.user(), registryKey, entries));
110+
wrapper.write(Types.REGISTRY_ENTRY_ARRAY, protocol.getRegistryDataRewriter().handle(wrapper.user(), registryKey, entries));
176111
});
177112

178113
protocol.registerClientbound(ClientboundPackets1_21_5.LOGIN, wrapper -> {
@@ -216,20 +151,6 @@ private void updateTrim(final RegistryEntry[] entries, final String itemKey) {
216151
});
217152
}
218153

219-
private void updateEnchantment(final RegistryEntry[] entries) {
220-
for (final RegistryEntry entry : entries) {
221-
if (entry.tag() == null) {
222-
continue;
223-
}
224-
225-
final CompoundTag enchantment = (CompoundTag) entry.tag();
226-
final ListTag<StringTag> slots = enchantment.getListTag("slots", StringTag.class);
227-
if (slots != null) {
228-
slots.getValue().removeIf(tag -> tag.getValue().equals("saddle")); // Remove saddle slot
229-
}
230-
}
231-
}
232-
233154
private String visibility(final int id) {
234155
return switch (id) {
235156
case 0 -> "always";
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
/*
2+
* This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards
3+
* Copyright (C) 2016-2025 ViaVersion and contributors
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU General Public License
16+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17+
*/
18+
package com.viaversion.viabackwards.protocol.v1_21_5to1_21_4.rewriter;
19+
20+
import com.viaversion.nbt.tag.CompoundTag;
21+
import com.viaversion.nbt.tag.ListTag;
22+
import com.viaversion.nbt.tag.StringTag;
23+
import com.viaversion.viabackwards.api.BackwardsProtocol;
24+
import com.viaversion.viabackwards.api.rewriters.BackwardsRegistryRewriter;
25+
import com.viaversion.viaversion.api.connection.UserConnection;
26+
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
27+
import java.util.Set;
28+
29+
public final class RegistryDataRewriter1_21_5 extends BackwardsRegistryRewriter {
30+
31+
public static final Set<String> NEW_REGISTRIES = Set.of("pig_variant", "cow_variant", "frog_variant", "cat_variant",
32+
"chicken_variant", "test_environment", "test_instance", "wolf_sound_variant");
33+
34+
public RegistryDataRewriter1_21_5(final BackwardsProtocol<?, ?, ?, ?> protocol) {
35+
super(protocol);
36+
}
37+
38+
@Override
39+
public RegistryEntry[] handle(final UserConnection connection, final String key, final RegistryEntry[] entries) {
40+
final boolean trimPatternRegistry = key.equals("trim_pattern");
41+
if (trimPatternRegistry || key.equals("trim_material")) {
42+
updateTrim(entries, trimPatternRegistry ? "template_item" : "ingredient");
43+
return super.handle(connection, key, entries);
44+
}
45+
46+
if (key.equals("enchantment")) {
47+
updateEnchantment(entries);
48+
return super.handle(connection, key, entries);
49+
}
50+
51+
if (!key.equals("wolf_variant")) {
52+
return super.handle(connection, key, entries);
53+
}
54+
55+
for (final RegistryEntry entry : entries) {
56+
if (entry.tag() == null) {
57+
continue;
58+
}
59+
60+
final CompoundTag variant = (CompoundTag) entry.tag();
61+
final CompoundTag assets = (CompoundTag) variant.remove("assets");
62+
variant.put("wild_texture", assets.get("wild"));
63+
variant.put("tame_texture", assets.get("tame"));
64+
variant.put("angry_texture", assets.get("angry"));
65+
variant.put("biomes", new ListTag<>(StringTag.class));
66+
}
67+
return entries;
68+
}
69+
70+
private void updateTrim(final RegistryEntry[] entries, final String itemKey) {
71+
for (final RegistryEntry entry : entries) {
72+
if (entry.tag() == null) {
73+
continue;
74+
}
75+
76+
final CompoundTag tag = (CompoundTag) entry.tag();
77+
tag.putString(itemKey, "stone"); // dummy ingredient
78+
}
79+
}
80+
81+
private void updateEnchantment(final RegistryEntry[] entries) {
82+
for (final RegistryEntry entry : entries) {
83+
if (entry.tag() == null) {
84+
continue;
85+
}
86+
87+
final CompoundTag enchantment = (CompoundTag) entry.tag();
88+
final ListTag<StringTag> slots = enchantment.getListTag("slots", StringTag.class);
89+
if (slots != null) {
90+
slots.getValue().removeIf(tag -> tag.getValue().equals("saddle")); // Remove saddle slot
91+
}
92+
}
93+
}
94+
}

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_5to1_21_4/storage/HashedItemConverterStorage.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,17 @@
2525
import com.viaversion.viaversion.codec.CodecRegistryContext;
2626
import com.viaversion.viaversion.codec.hash.HashFunction;
2727
import com.viaversion.viaversion.codec.hash.HashOps;
28-
import java.util.ArrayList;
29-
import java.util.List;
3028

3129
public class HashedItemConverterStorage implements StorableObject {
3230

33-
private final List<String> enchantments = new ArrayList<>();
3431
private final Hasher hasher;
3532

3633
public HashedItemConverterStorage(final Protocol<?, ?, ?, ?> protocol) {
37-
final RegistryAccess registryAccess = RegistryAccess.of(this.enchantments, protocol.getMappingData());
34+
final RegistryAccess registryAccess = RegistryAccess.of(protocol);
3835
final CodecContext context = new CodecRegistryContext(protocol, registryAccess, false);
3936
this.hasher = new HashOps(context, HashFunction.CRC32C);
4037
}
4138

42-
public void setEnchantments(final List<String> enchantments) {
43-
this.enchantments.clear();
44-
this.enchantments.addAll(enchantments);
45-
}
46-
4739
public Hasher hasher() {
4840
return hasher; // reusable
4941
}

0 commit comments

Comments
 (0)