Skip to content

Commit b9f1102

Browse files
committed
25w45a
1 parent 4fc70ad commit b9f1102

File tree

10 files changed

+114
-8
lines changed

10 files changed

+114
-8
lines changed

api/src/main/java/com/viaversion/viaversion/api/minecraft/data/StructuredDataKey.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
import com.viaversion.viaversion.api.type.Type;
8787
import com.viaversion.viaversion.api.type.Types;
8888
import com.viaversion.viaversion.api.type.types.ArrayType;
89+
import com.viaversion.viaversion.api.type.types.EitherType;
8990
import com.viaversion.viaversion.api.type.types.misc.SynchronizedRegistryEitherType;
9091
import com.viaversion.viaversion.api.type.types.misc.SynchronizedRegistryValueType;
9192
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
@@ -222,6 +223,7 @@ public record StructuredDataKey<T>(String identifier, Type<T> type) {
222223
public static final StructuredDataKey<Integer> PIG_VARIANT = new StructuredDataKey<>("pig/variant", new SynchronizedRegistryValueType(RegistryKey.of("pig_variant")));
223224
public static final StructuredDataKey<Integer> COW_VARIANT = new StructuredDataKey<>("cow/variant", new SynchronizedRegistryValueType(RegistryKey.of("cow_variant")));
224225
public static final StructuredDataKey<Either<Integer, String>> CHICKEN_VARIANT = new StructuredDataKey<>("chicken/variant", new SynchronizedRegistryEitherType(RegistryKey.of("chicken_variant")));
226+
public static final StructuredDataKey<Either<Integer, String>> ZOMBIE_NAUTILUS_VARIANT = new StructuredDataKey<>("zombie_nautilus/variant", new SynchronizedRegistryEitherType(RegistryKey.of("zombie_nautilus_variant"))); // ???
225227
public static final StructuredDataKey<Integer> FROG_VARIANT = new StructuredDataKey<>("frog/variant", new SynchronizedRegistryValueType(RegistryKey.of("frog_variant")));
226228
public static final StructuredDataKey<Integer> HORSE_VARIANT = new StructuredDataKey<>("horse/variant", EnumTypes.HORSE_VARIANT);
227229
public static final StructuredDataKey<Holder<PaintingVariant>> PAINTING_VARIANT = new StructuredDataKey<>("painting/variant", PaintingVariant.TYPE1_21_2);
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
3+
* Copyright (C) 2016-2025 ViaVersion and contributors
4+
*
5+
* Permission is hereby granted, free of charge, to any person obtaining a copy
6+
* of this software and associated documentation files (the "Software"), to deal
7+
* in the Software without restriction, including without limitation the rights
8+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
* copies of the Software, and to permit persons to whom the Software is
10+
* furnished to do so, subject to the following conditions:
11+
*
12+
* The above copyright notice and this permission notice shall be included in all
13+
* copies or substantial portions of the Software.
14+
*
15+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
* SOFTWARE.
22+
*/
23+
package com.viaversion.viaversion.api.minecraft.entitydata.types;
24+
25+
import com.viaversion.viaversion.api.minecraft.PaintingVariant;
26+
import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType;
27+
import com.viaversion.viaversion.api.type.Types;
28+
import com.viaversion.viaversion.api.type.types.version.VersionedTypesHolder;
29+
30+
public final class EntityDataTypes1_21_11 extends AbstractEntityDataTypes {
31+
32+
public final EntityDataType byteType = add(0, Types.BYTE);
33+
public final EntityDataType varIntType = add(1, Types.VAR_INT);
34+
public final EntityDataType longType = add(2, Types.VAR_LONG);
35+
public final EntityDataType floatType = add(3, Types.FLOAT);
36+
public final EntityDataType stringType = add(4, Types.STRING);
37+
public final EntityDataType componentType = add(5, Types.TAG);
38+
public final EntityDataType optionalComponentType = add(6, Types.OPTIONAL_TAG);
39+
public final EntityDataType itemType;
40+
public final EntityDataType booleanType = add(8, Types.BOOLEAN);
41+
public final EntityDataType rotationsType = add(9, Types.ROTATIONS);
42+
public final EntityDataType blockPositionType = add(10, Types.BLOCK_POSITION1_14);
43+
public final EntityDataType optionalBlockPositionType = add(11, Types.OPTIONAL_POSITION_1_14);
44+
public final EntityDataType directionType = add(12, Types.VAR_INT);
45+
public final EntityDataType optionalUUIDType = add(13, Types.OPTIONAL_UUID);
46+
public final EntityDataType blockStateType = add(14, Types.VAR_INT);
47+
public final EntityDataType optionalBlockStateType = add(15, Types.VAR_INT);
48+
public final EntityDataType particleType;
49+
public final EntityDataType particlesType;
50+
public final EntityDataType villagerDatatType = add(18, Types.VILLAGER_DATA);
51+
public final EntityDataType optionalVarIntType = add(19, Types.OPTIONAL_VAR_INT);
52+
public final EntityDataType poseType = add(20, Types.VAR_INT);
53+
public final EntityDataType catVariantType = add(21, Types.VAR_INT);
54+
public final EntityDataType cowVariantType = add(22, Types.VAR_INT);
55+
public final EntityDataType wolfVariantType = add(23, Types.VAR_INT);
56+
public final EntityDataType wolfSoundVariantType = add(24, Types.VAR_INT);
57+
public final EntityDataType frogVariantType = add(25, Types.VAR_INT);
58+
public final EntityDataType pigVariantType = add(26, Types.VAR_INT);
59+
public final EntityDataType chickenVariantType = add(27, Types.VAR_INT);
60+
public final EntityDataType zombieNautilusVariantType = add(28, Types.VAR_INT);
61+
public final EntityDataType optionalGlobalPosition = add(29, Types.OPTIONAL_GLOBAL_POSITION);
62+
public final EntityDataType paintingVariantType = add(30, PaintingVariant.TYPE1_21_2);
63+
public final EntityDataType snifferState = add(31, Types.VAR_INT);
64+
public final EntityDataType armadilloState = add(32, Types.VAR_INT);
65+
public final EntityDataType copperGolemState = add(33, Types.VAR_INT);
66+
public final EntityDataType weatheringCopperState = add(34, Types.VAR_INT);
67+
public final EntityDataType vector3FType = add(35, Types.VECTOR3F);
68+
public final EntityDataType quaternionType = add(36, Types.QUATERNION);
69+
public final EntityDataType mannequinProfileType = add(37, Types.RESOLVABLE_PROFILE);
70+
public final EntityDataType humanoidArmType = add(38, Types.VAR_INT);
71+
72+
public EntityDataTypes1_21_11(final VersionedTypesHolder types) {
73+
super(39);
74+
this.itemType = add(7, types.item());
75+
this.particleType = add(16, types.particle());
76+
this.particlesType = add(17, types.particles());
77+
}
78+
}

api/src/main/java/com/viaversion/viaversion/api/protocol/version/ProtocolVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public class ProtocolVersion implements Comparable<ProtocolVersion> {
9292
public static final ProtocolVersion v1_21_6 = register(771, "1.21.6");
9393
public static final ProtocolVersion v1_21_7 = register(772, "1.21.7-1.21.8", new SubVersionRange("1.21", 7, 8));
9494
public static final ProtocolVersion v1_21_9 = register(773, "1.21.9-1.21.10", new SubVersionRange("1.21", 9, 10));
95-
public static final ProtocolVersion v1_21_11 = register(774, 276, "1.21.11");
95+
public static final ProtocolVersion v1_21_11 = register(774, 277, "1.21.11");
9696
public static final ProtocolVersion unknown = new ProtocolVersion(VersionType.SPECIAL, -1, -1, "UNKNOWN", null);
9797

9898
static {

api/src/main/java/com/viaversion/viaversion/api/type/types/version/VersionedTypes.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.viaversion.viaversion.api.minecraft.data.version.StructuredDataKeys1_21_5;
2929
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_20_5;
3030
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21;
31+
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_11;
3132
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_2;
3233
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_5;
3334
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_9;
@@ -47,5 +48,5 @@ public final class VersionedTypes {
4748
public static final Types1_20_5<StructuredDataKeys1_21_5, EntityDataTypes1_21_5> V1_21_5 = new Types1_20_5<>(StructuredDataKeys1_21_5::new, EntityDataTypes1_21_5::new);
4849
public static final Types1_20_5<StructuredDataKeys1_21_5, EntityDataTypes1_21_5> V1_21_6 = new Types1_20_5<>(StructuredDataKeys1_21_5::new, EntityDataTypes1_21_5::new);
4950
public static final Types1_20_5<StructuredDataKeys1_21_5, EntityDataTypes1_21_9> V1_21_9 = new Types1_20_5<>(StructuredDataKeys1_21_5::new, EntityDataTypes1_21_9::new);
50-
public static final Types1_20_5<StructuredDataKeys1_21_11, EntityDataTypes1_21_9> V1_21_11 = new Types1_20_5<>(StructuredDataKeys1_21_11::new, EntityDataTypes1_21_9::new);
51+
public static final Types1_20_5<StructuredDataKeys1_21_11, EntityDataTypes1_21_11> V1_21_11 = new Types1_20_5<>(StructuredDataKeys1_21_11::new, EntityDataTypes1_21_11::new);
5152
}

common/src/main/java/com/viaversion/viaversion/protocols/v1_21_9to1_21_11/Protocol1_21_9To1_21_11.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,24 @@
2020
import com.viaversion.nbt.tag.ByteTag;
2121
import com.viaversion.nbt.tag.CompoundTag;
2222
import com.viaversion.nbt.tag.IntTag;
23+
import com.viaversion.nbt.tag.ListTag;
2324
import com.viaversion.nbt.tag.NumberTag;
2425
import com.viaversion.nbt.tag.Tag;
2526
import com.viaversion.viaversion.api.connection.UserConnection;
2627
import com.viaversion.viaversion.api.data.MappingData;
2728
import com.viaversion.viaversion.api.data.MappingDataBase;
29+
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
2830
import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
2931
import com.viaversion.viaversion.api.minecraft.data.version.StructuredDataKeys1_21_11;
3032
import com.viaversion.viaversion.api.minecraft.data.version.StructuredDataKeys1_21_5;
3133
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_11;
34+
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_11;
3235
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_9;
3336
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
37+
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
3438
import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider;
3539
import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider;
40+
import com.viaversion.viaversion.api.type.Types;
3641
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
3742
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
3843
import com.viaversion.viaversion.api.type.types.version.VersionedTypes;
@@ -78,6 +83,16 @@ public Protocol1_21_9To1_21_11() {
7883
protected void registerPackets() {
7984
super.registerPackets();
8085

86+
registerFinishConfiguration(ClientboundConfigurationPackets1_21_9.FINISH_CONFIGURATION, wrapper -> {
87+
final PacketWrapper zombieNautilusVariantsPacket = wrapper.create(ClientboundConfigurationPackets1_21_9.REGISTRY_DATA);
88+
zombieNautilusVariantsPacket.write(Types.STRING, "zombie_nautilus_variant");
89+
final CompoundTag temperateZombieNautilus = new CompoundTag();
90+
temperateZombieNautilus.putString("asset_id", "entity/zombie_nautilus/temperate");
91+
temperateZombieNautilus.put("spawn_conditions", new ListTag<>(CompoundTag.class));
92+
zombieNautilusVariantsPacket.write(Types.REGISTRY_ENTRY_ARRAY, new RegistryEntry[]{new RegistryEntry("minecraft:pale", temperateZombieNautilus)});
93+
zombieNautilusVariantsPacket.send(Protocol1_21_9To1_21_11.class);
94+
});
95+
8196
registryDataRewriter.addHandler("dimension_type", (key, tag) -> {
8297
final ByteTag trueTag = new ByteTag((byte) 1);
8398
final CompoundTag attributes = new CompoundTag();
@@ -171,7 +186,7 @@ protected void onMappingDataLoaded() {
171186
StructuredDataKey.CAT_COLLAR, StructuredDataKey.SHEEP_COLOR, StructuredDataKey.SHULKER_COLOR, StructuredDataKey.PROVIDES_TRIM_MATERIAL,
172187
StructuredDataKey.BREAK_SOUND, StructuredDataKey.COW_VARIANT, StructuredDataKey.CHICKEN_VARIANT, StructuredDataKey.WOLF_SOUND_VARIANT,
173188
StructuredDataKey.USE_EFFECTS, StructuredDataKey.MINIMUM_ATTACK_CHARGE, StructuredDataKey.DAMAGE_TYPE, StructuredDataKey.PIERCING_WEAPON,
174-
StructuredDataKey.KINETIC_WEAPON, StructuredDataKey.SWING_ANIMATION);
189+
StructuredDataKey.KINETIC_WEAPON, StructuredDataKey.SWING_ANIMATION, StructuredDataKey.ZOMBIE_NAUTILUS_VARIANT);
175190
super.onMappingDataLoaded();
176191
}
177192

@@ -236,7 +251,7 @@ public Types1_20_5<StructuredDataKeys1_21_5, EntityDataTypes1_21_9> types() {
236251
}
237252

238253
@Override
239-
public Types1_20_5<StructuredDataKeys1_21_11, EntityDataTypes1_21_9> mappedTypes() {
254+
public Types1_20_5<StructuredDataKeys1_21_11, EntityDataTypes1_21_11> mappedTypes() {
240255
return VersionedTypes.V1_21_11;
241256
}
242257

common/src/main/java/com/viaversion/viaversion/protocols/v1_21_9to1_21_11/rewriter/BlockItemPacketRewriter1_21_11.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,6 @@ public static void downgradeData(final Item item, final StructuredDataContainer
9797
container.remove(StructuredDataKey.DAMAGE_TYPE);
9898
container.remove(StructuredDataKey.MINIMUM_ATTACK_CHARGE);
9999
container.remove(StructuredDataKey.USE_EFFECTS);
100+
container.remove(StructuredDataKey.ZOMBIE_NAUTILUS_VARIANT);
100101
}
101102
}

common/src/main/java/com/viaversion/viaversion/protocols/v1_21_9to1_21_11/rewriter/EntityPacketRewriter1_21_11.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
2121
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_11;
2222
import com.viaversion.viaversion.api.minecraft.entitydata.EntityData;
23-
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_9;
23+
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_11;
2424
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundPacket1_21_9;
2525
import com.viaversion.viaversion.protocols.v1_21_7to1_21_9.packet.ClientboundPackets1_21_9;
2626
import com.viaversion.viaversion.protocols.v1_21_9to1_21_11.Protocol1_21_9To1_21_11;
@@ -47,8 +47,13 @@ public void registerPackets() {
4747

4848
@Override
4949
protected void registerRewrites() {
50-
final EntityDataTypes1_21_9 entityDataTypes = protocol.mappedTypes().entityDataTypes();
51-
filter().mapDataType(entityDataTypes::byId);
50+
final EntityDataTypes1_21_11 entityDataTypes = protocol.mappedTypes().entityDataTypes();
51+
filter().mapDataType(id -> {
52+
if (id >= entityDataTypes.zombieNautilusVariantType.typeId()) {
53+
id++;
54+
}
55+
return entityDataTypes.byId(id);
56+
});
5257
registerEntityDataTypeHandler(
5358
entityDataTypes.itemType,
5459
entityDataTypes.blockStateType,
@@ -59,8 +64,12 @@ protected void registerRewrites() {
5964
entityDataTypes.optionalComponentType
6065
);
6166

62-
filter().type(EntityTypes1_21_11.WOLF).index(20).handler(this::relativeToAbsoluteTicks);
67+
filter().type(EntityTypes1_21_11.WOLF).index(21).handler(this::relativeToAbsoluteTicks);
6368
filter().type(EntityTypes1_21_11.BEE).index(18).handler(this::relativeToAbsoluteTicks);
69+
filter().type(EntityTypes1_21_11.AVATAR).index(15).handler(((event, data) -> {
70+
final byte arm = data.value();
71+
data.setTypeAndValue(entityDataTypes.varIntType, (int) arm);
72+
}));
6473
}
6574

6675
@Override
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)