Skip to content

Commit 1f8d133

Browse files
committed
Fix painting entity data in 1.21->1.21.2
Fixes ViaVersion#4227
1 parent 5278f8b commit 1f8d133

File tree

4 files changed

+106
-5
lines changed

4 files changed

+106
-5
lines changed

api/src/main/java/com/viaversion/viaversion/api/minecraft/PaintingVariant.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,19 @@
2222
*/
2323
package com.viaversion.viaversion.api.minecraft;
2424

25+
import com.viaversion.nbt.tag.Tag;
2526
import com.viaversion.viaversion.api.type.Types;
2627
import com.viaversion.viaversion.api.type.types.misc.HolderType;
2728
import io.netty.buffer.ByteBuf;
29+
import org.checkerframework.checker.nullness.qual.Nullable;
2830

29-
public record PaintingVariant(int width, int height, String assetId) {
31+
public record PaintingVariant(int width, int height, String assetId, @Nullable Tag title, @Nullable Tag author) {
3032

31-
public static HolderType<PaintingVariant> TYPE = new HolderType<>() {
33+
public PaintingVariant(final int width, final int height, final String assetId) {
34+
this(width, height, assetId, null, null);
35+
}
36+
37+
public static HolderType<PaintingVariant> TYPE1_21 = new HolderType<>() {
3238
@Override
3339
public PaintingVariant readDirect(final ByteBuf buffer) {
3440
final int width = Types.VAR_INT.readPrimitive(buffer);
@@ -44,4 +50,24 @@ public void writeDirect(final ByteBuf buffer, final PaintingVariant variant) {
4450
Types.STRING.write(buffer, variant.assetId());
4551
}
4652
};
53+
public static HolderType<PaintingVariant> TYPE1_21_2 = new HolderType<>() {
54+
@Override
55+
public PaintingVariant readDirect(final ByteBuf buffer) {
56+
final int width = Types.VAR_INT.readPrimitive(buffer);
57+
final int height = Types.VAR_INT.readPrimitive(buffer);
58+
final String assetId = Types.STRING.read(buffer);
59+
final Tag title = Types.OPTIONAL_TAG.read(buffer);
60+
final Tag author = Types.OPTIONAL_TAG.read(buffer);
61+
return new PaintingVariant(width, height, assetId, title, author);
62+
}
63+
64+
@Override
65+
public void writeDirect(final ByteBuf buffer, final PaintingVariant variant) {
66+
Types.VAR_INT.writePrimitive(buffer, variant.width());
67+
Types.VAR_INT.writePrimitive(buffer, variant.height());
68+
Types.STRING.write(buffer, variant.assetId());
69+
Types.OPTIONAL_TAG.write(buffer, variant.title());
70+
Types.OPTIONAL_TAG.write(buffer, variant.author());
71+
}
72+
};
4773
}

api/src/main/java/com/viaversion/viaversion/api/minecraft/entitydata/types/EntityDataTypes1_21.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public final class EntityDataTypes1_21 extends AbstractEntityDataTypes {
6060
public final EntityDataType wolfVariantType = add(23, WolfVariant.TYPE);
6161
public final EntityDataType frogVariantType = add(24, Types.VAR_INT);
6262
public final EntityDataType optionalGlobalPosition = add(25, Types.OPTIONAL_GLOBAL_POSITION);
63-
public final EntityDataType paintingVariantType = add(26, PaintingVariant.TYPE);
63+
public final EntityDataType paintingVariantType = add(26, PaintingVariant.TYPE1_21);
6464
public final EntityDataType snifferState = add(27, Types.VAR_INT);
6565
public final EntityDataType armadilloState = add(28, Types.VAR_INT);
6666
public final EntityDataType vector3FType = add(29, Types.VECTOR3F);
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/*
2+
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
3+
* Copyright (C) 2016-2024 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.Particle;
27+
import com.viaversion.viaversion.api.minecraft.WolfVariant;
28+
import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType;
29+
import com.viaversion.viaversion.api.minecraft.item.Item;
30+
import com.viaversion.viaversion.api.type.Type;
31+
import com.viaversion.viaversion.api.type.Types;
32+
import com.viaversion.viaversion.api.type.types.ArrayType;
33+
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
34+
35+
public final class EntityDataTypes1_21_2 extends AbstractEntityDataTypes {
36+
37+
public final EntityDataType byteType = add(0, Types.BYTE);
38+
public final EntityDataType varIntType = add(1, Types.VAR_INT);
39+
public final EntityDataType longType = add(2, Types.VAR_LONG);
40+
public final EntityDataType floatType = add(3, Types.FLOAT);
41+
public final EntityDataType stringType = add(4, Types.STRING);
42+
public final EntityDataType componentType = add(5, Types.TAG);
43+
public final EntityDataType optionalComponentType = add(6, Types.OPTIONAL_TAG);
44+
public final EntityDataType itemType;
45+
public final EntityDataType booleanType = add(8, Types.BOOLEAN);
46+
public final EntityDataType rotationsType = add(9, Types.ROTATIONS);
47+
public final EntityDataType blockPositionType = add(10, Types.BLOCK_POSITION1_14);
48+
public final EntityDataType optionalBlockPositionType = add(11, Types.OPTIONAL_POSITION_1_14);
49+
public final EntityDataType directionType = add(12, Types.VAR_INT);
50+
public final EntityDataType optionalUUIDType = add(13, Types.OPTIONAL_UUID);
51+
public final EntityDataType blockStateType = add(14, Types.VAR_INT);
52+
public final EntityDataType optionalBlockStateType = add(15, Types.VAR_INT);
53+
public final EntityDataType compoundTagType = add(16, Types.COMPOUND_TAG);
54+
public final EntityDataType particleType;
55+
public final EntityDataType particlesType;
56+
public final EntityDataType villagerDatatType = add(19, Types.VILLAGER_DATA);
57+
public final EntityDataType optionalVarIntType = add(20, Types.OPTIONAL_VAR_INT);
58+
public final EntityDataType poseType = add(21, Types.VAR_INT);
59+
public final EntityDataType catVariantType = add(22, Types.VAR_INT);
60+
public final EntityDataType wolfVariantType = add(23, WolfVariant.TYPE);
61+
public final EntityDataType frogVariantType = add(24, Types.VAR_INT);
62+
public final EntityDataType optionalGlobalPosition = add(25, Types.OPTIONAL_GLOBAL_POSITION);
63+
public final EntityDataType paintingVariantType = add(26, PaintingVariant.TYPE1_21_2);
64+
public final EntityDataType snifferState = add(27, Types.VAR_INT);
65+
public final EntityDataType armadilloState = add(28, Types.VAR_INT);
66+
public final EntityDataType vector3FType = add(29, Types.VECTOR3F);
67+
public final EntityDataType quaternionType = add(30, Types.QUATERNION);
68+
69+
public EntityDataTypes1_21_2(final Type<Item> itemType, final ParticleType particleType, final ArrayType<Particle> particlesType) {
70+
super(31);
71+
this.itemType = add(7, itemType);
72+
this.particleType = add(17, particleType);
73+
this.particlesType = add(18, particlesType);
74+
}
75+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import com.viaversion.viaversion.api.minecraft.Particle;
2626
import com.viaversion.viaversion.api.minecraft.data.StructuredData;
2727
import com.viaversion.viaversion.api.minecraft.entitydata.EntityData;
28-
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21;
28+
import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_21_2;
2929
import com.viaversion.viaversion.api.minecraft.item.Item;
3030
import com.viaversion.viaversion.api.type.Type;
3131
import com.viaversion.viaversion.api.type.types.ArrayType;
@@ -50,7 +50,7 @@ public final class Types1_21_2 {
5050

5151
public static final ParticleType PARTICLE = new ParticleType();
5252
public static final ArrayType<Particle> PARTICLES = new ArrayType<>(PARTICLE);
53-
public static final EntityDataTypes1_21 ENTITY_DATA_TYPES = new EntityDataTypes1_21(ITEM, PARTICLE, PARTICLES);
53+
public static final EntityDataTypes1_21_2 ENTITY_DATA_TYPES = new EntityDataTypes1_21_2(ITEM, PARTICLE, PARTICLES);
5454
public static final Type<EntityData> ENTITY_DATA = new EntityDataType(ENTITY_DATA_TYPES);
5555
public static final Type<List<EntityData>> ENTITY_DATA_LIST = new EntityDataListType(ENTITY_DATA);
5656
}

0 commit comments

Comments
 (0)