Skip to content

Commit a409aa6

Browse files
committed
25w31a
1 parent 75fd21a commit a409aa6

File tree

14 files changed

+145
-15
lines changed

14 files changed

+145
-15
lines changed

protocol/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
jacoco
66
}
77

8-
version = "1.21.7-SNAPSHOT"
8+
version = "1.21.9-SNAPSHOT"
99
description = "MCProtocolLib is a simple library for communicating with Minecraft clients and servers."
1010

1111
dependencies {

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftCodec.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,8 @@
224224

225225
public class MinecraftCodec {
226226
public static final PacketCodec CODEC = PacketCodec.builder()
227-
.protocolVersion(772)
228-
.minecraftVersion("1.21.7")
227+
.protocolVersion((1 << 30) | 259)
228+
.minecraftVersion("25w31a")
229229
.state(ProtocolState.HANDSHAKE, MinecraftPacketRegistry.builder()
230230
.registerServerboundPacket(ClientIntentionPacket.class, ClientIntentionPacket::new)
231231
)

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/codec/MinecraftTypes.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.geysermc.mcprotocollib.protocol.data.game.entity.EntityEvent;
4242
import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.ModifierOperation;
4343
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.ArmadilloState;
44+
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.CopperGolemState;
4445
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
4546
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.GlobalPos;
4647
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
@@ -49,6 +50,7 @@
4950
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.Pose;
5051
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.SnifferState;
5152
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.VillagerData;
53+
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.WeatheringCopperState;
5254
import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
5355
import org.geysermc.mcprotocollib.protocol.data.game.entity.player.BlockBreakStage;
5456
import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
@@ -782,6 +784,22 @@ public static void writeArmadilloState(ByteBuf buf, ArmadilloState state) {
782784
MinecraftTypes.writeEnum(buf, state);
783785
}
784786

787+
public static CopperGolemState readCopperGolemState(ByteBuf buf) {
788+
return CopperGolemState.from(MinecraftTypes.readVarInt(buf));
789+
}
790+
791+
public static void writeCopperGolemState(ByteBuf buf, CopperGolemState state) {
792+
MinecraftTypes.writeEnum(buf, state);
793+
}
794+
795+
public static WeatheringCopperState readWeatheringCopperState(ByteBuf buf) {
796+
return WeatheringCopperState.from(MinecraftTypes.readVarInt(buf));
797+
}
798+
799+
public static void writeWeatheringCopperState(ByteBuf buf, WeatheringCopperState state) {
800+
MinecraftTypes.writeEnum(buf, state);
801+
}
802+
785803
private static void writeEnum(ByteBuf buf, Enum<?> e) {
786804
MinecraftTypes.writeVarInt(buf, e.ordinal());
787805
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata;
2+
3+
public enum CopperGolemState {
4+
IDLE,
5+
GETTING_ITEM,
6+
GETTING_NO_ITEM,
7+
DROPPING_ITEM,
8+
DROPPING_NO_ITEM;
9+
10+
private static final CopperGolemState[] VALUES = values();
11+
12+
public static CopperGolemState from(int id) {
13+
return VALUES[id];
14+
}
15+
}

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/metadata/MetadataTypes.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ public class MetadataTypes {
6262
public static final MetadataType<Holder<PaintingVariant>> PAINTING_VARIANT = register(id -> new MetadataType<>(id, MinecraftTypes::readPaintingVariant, MinecraftTypes::writePaintingVariant, ObjectEntityMetadata::new));
6363
public static final MetadataType<SnifferState> SNIFFER_STATE = register(id -> new MetadataType<>(id, MinecraftTypes::readSnifferState, MinecraftTypes::writeSnifferState, ObjectEntityMetadata::new));
6464
public static final MetadataType<ArmadilloState> ARMADILLO_STATE = register(id -> new MetadataType<>(id, MinecraftTypes::readArmadilloState, MinecraftTypes::writeArmadilloState, ObjectEntityMetadata::new));
65+
public static final MetadataType<CopperGolemState> COPPER_GOLEM_STATE = register(id -> new MetadataType<>(id, MinecraftTypes::readCopperGolemState, MinecraftTypes::writeCopperGolemState, ObjectEntityMetadata::new));
66+
public static final MetadataType<WeatheringCopperState> WEATHERING_COPPER_STATE = register(id -> new MetadataType<>(id, MinecraftTypes::readWeatheringCopperState, MinecraftTypes::writeWeatheringCopperState, ObjectEntityMetadata::new));
6567
public static final MetadataType<Vector3f> VECTOR3 = register(id -> new MetadataType<>(id, MinecraftTypes::readRotation, MinecraftTypes::writeRotation, ObjectEntityMetadata::new));
6668
public static final MetadataType<Quaternionf> QUATERNION = register(id -> new MetadataType<>(id, MinecraftTypes::readQuaternion, MinecraftTypes::writeQuaternion, ObjectEntityMetadata::new));
6769

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.geysermc.mcprotocollib.protocol.data.game.entity.metadata;
2+
3+
public enum WeatheringCopperState {
4+
UNAFFECTED,
5+
EXPOSED,
6+
WEATHERED,
7+
OXIDIZED;
8+
9+
private static final WeatheringCopperState[] VALUES = values();
10+
11+
public static WeatheringCopperState from(int id) {
12+
return VALUES[id];
13+
}
14+
}

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/entity/type/EntityType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public enum EntityType {
3030
CHEST_MINECART,
3131
CHICKEN,
3232
COD,
33+
COPPER_GOLEM,
3334
COMMAND_BLOCK_MINECART,
3435
COW,
3536
CREAKING,

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/DataComponentTypes.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes;
1212
import org.geysermc.mcprotocollib.protocol.data.game.Holder;
1313
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.PaintingVariant;
14+
import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
1415
import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
1516
import org.geysermc.mcprotocollib.protocol.data.game.item.component.type.BooleanDataComponent;
1617
import org.geysermc.mcprotocollib.protocol.data.game.item.component.type.IntDataComponent;
1718
import org.geysermc.mcprotocollib.protocol.data.game.item.component.type.ObjectDataComponent;
19+
import org.geysermc.mcprotocollib.protocol.data.game.level.block.BlockEntityType;
1820
import org.geysermc.mcprotocollib.protocol.data.game.level.sound.Sound;
1921

2022
import java.util.ArrayList;
@@ -73,9 +75,9 @@ public class DataComponentTypes {
7375
public static final DataComponentType<WrittenBookContent> WRITTEN_BOOK_CONTENT = register(id -> new DataComponentType<>(id, "written_book_content", ItemTypes::readWrittenBookContent, ItemTypes::writeWrittenBookContent, ObjectDataComponent::new));
7476
public static final DataComponentType<ArmorTrim> TRIM = register(id -> new DataComponentType<>(id, "trim", ItemTypes::readArmorTrim, ItemTypes::writeArmorTrim, ObjectDataComponent::new));
7577
public static final DataComponentType<NbtMap> DEBUG_STICK_STATE = register(id -> new DataComponentType<>(id, "debug_stick_state", MinecraftTypes::readCompoundTag, MinecraftTypes::writeAnyTag, ObjectDataComponent::new));
76-
public static final DataComponentType<NbtMap> ENTITY_DATA = register(id -> new DataComponentType<>(id, "entity_data", MinecraftTypes::readCompoundTag, MinecraftTypes::writeAnyTag, ObjectDataComponent::new));
78+
public static final DataComponentType<TypedEntityData<EntityType>> ENTITY_DATA = register(id -> new DataComponentType<>(id, "entity_data", buf -> ItemTypes.readTypedEntityData(buf, ItemTypes::readEntityType), (buf, data) -> ItemTypes.writeTypedEntityData(buf, data, ItemTypes::writeEntityType), ObjectDataComponent::new));
7779
public static final DataComponentType<NbtMap> BUCKET_ENTITY_DATA = register(id -> new DataComponentType<>(id, "bucket_entity_data", MinecraftTypes::readCompoundTag, MinecraftTypes::writeAnyTag, ObjectDataComponent::new));
78-
public static final DataComponentType<NbtMap> BLOCK_ENTITY_DATA = register(id -> new DataComponentType<>(id, "block_entity_data", MinecraftTypes::readCompoundTag, MinecraftTypes::writeAnyTag, ObjectDataComponent::new));
80+
public static final DataComponentType<TypedEntityData<BlockEntityType>> BLOCK_ENTITY_DATA = register(id -> new DataComponentType<>(id, "block_entity_data", buf -> ItemTypes.readTypedEntityData(buf, ItemTypes::readBlockEntityType), (buf, data) -> ItemTypes.writeTypedEntityData(buf, data, ItemTypes::writeBlockEntityType), ObjectDataComponent::new));
7981
public static final DataComponentType<InstrumentComponent> INSTRUMENT = register(id -> new DataComponentType<>(id, "instrument", ItemTypes::readInstrumentComponent, ItemTypes::writeInstrumentComponent, ObjectDataComponent::new));
8082
public static final DataComponentType<ProvidesTrimMaterial> PROVIDES_TRIM_MATERIAL = register(id -> new DataComponentType<>(id, "provides_trim_material", ItemTypes::readProvidesTrimMaterial, ItemTypes::writeProvidesTrimMaterial, ObjectDataComponent::new));
8183
public static final IntComponentType OMINOUS_BOTTLE_AMPLIFIER = register(id -> new IntComponentType(id, "ominous_bottle_amplifier", MinecraftTypes::readVarInt, MinecraftTypes::writeVarInt, IntDataComponent::new));

protocol/src/main/java/org/geysermc/mcprotocollib/protocol/data/game/item/component/ItemTypes.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import org.geysermc.mcprotocollib.protocol.data.game.entity.Effect;
1414
import org.geysermc.mcprotocollib.protocol.data.game.entity.EquipmentSlot;
1515
import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.ModifierOperation;
16+
import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
17+
import org.geysermc.mcprotocollib.protocol.data.game.level.block.BlockEntityType;
1618
import org.geysermc.mcprotocollib.protocol.data.game.level.sound.Sound;
1719

1820
import java.util.ArrayList;
@@ -507,6 +509,31 @@ public static void writeTrimPattern(ByteBuf buf, ArmorTrim.TrimPattern pattern)
507509
buf.writeBoolean(pattern.decal());
508510
}
509511

512+
public static <T extends Enum<?>> TypedEntityData<T> readTypedEntityData(ByteBuf buf, Function<ByteBuf, T> reader) {
513+
return new TypedEntityData<>(reader.apply(buf), MinecraftTypes.readCompoundTag(buf));
514+
}
515+
516+
public static <T> void writeTypedEntityData(ByteBuf buf, TypedEntityData<T> typedEntityData, BiConsumer<ByteBuf, T> writer) {
517+
writer.accept(buf, typedEntityData.type());
518+
MinecraftTypes.writeAnyTag(buf, typedEntityData.tag());
519+
}
520+
521+
public static EntityType readEntityType(ByteBuf buf) {
522+
return EntityType.from(MinecraftTypes.readVarInt(buf));
523+
}
524+
525+
public static void writeEntityType(ByteBuf buf, EntityType state) {
526+
MinecraftTypes.writeVarInt(buf, state.ordinal());
527+
}
528+
529+
public static BlockEntityType readBlockEntityType(ByteBuf buf) {
530+
return BlockEntityType.from(MinecraftTypes.readVarInt(buf));
531+
}
532+
533+
public static void writeBlockEntityType(ByteBuf buf, BlockEntityType state) {
534+
MinecraftTypes.writeVarInt(buf, state.ordinal());
535+
}
536+
510537
public static InstrumentComponent readInstrumentComponent(ByteBuf buf) {
511538
Holder<InstrumentComponent.Instrument> instrumentHolder = null;
512539
Key instrumentLocation = null;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.geysermc.mcprotocollib.protocol.data.game.item.component;
2+
3+
import lombok.Builder;
4+
import org.cloudburstmc.nbt.NbtMap;
5+
6+
@Builder(toBuilder = true)
7+
public record TypedEntityData<T>(T type, NbtMap tag) {
8+
// TODO: Improve this implementation, too bulky in DataComponentTypes
9+
}

0 commit comments

Comments
 (0)