Skip to content

Commit

Permalink
Start working on 1.21.0 support (#226)
Browse files Browse the repository at this point in the history
  • Loading branch information
Alemiz112 committed May 20, 2024
2 parents aeeadd2 + 6dc8232 commit 7eb8049
Show file tree
Hide file tree
Showing 33 changed files with 730 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
package org.cloudburstmc.protocol.bedrock.codec.v662;

import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
import org.cloudburstmc.protocol.bedrock.codec.BedrockPacketDefinition;
import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.LevelEventSerializer_v291;
import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.LevelSoundEvent1Serializer_v291;
import org.cloudburstmc.protocol.bedrock.codec.v313.serializer.LevelSoundEvent2Serializer_v313;
import org.cloudburstmc.protocol.bedrock.codec.v332.serializer.LevelSoundEventSerializer_v332;
import org.cloudburstmc.protocol.bedrock.codec.v361.serializer.LevelEventGenericSerializer_v361;
import org.cloudburstmc.protocol.bedrock.codec.v575.BedrockCodecHelper_v575;
import org.cloudburstmc.protocol.bedrock.codec.v582.Bedrock_v582;
import org.cloudburstmc.protocol.bedrock.codec.v594.serializer.AvailableCommandsSerializer_v594;
import org.cloudburstmc.protocol.bedrock.codec.v649.Bedrock_v649;
import org.cloudburstmc.protocol.bedrock.codec.v662.serializer.*;
import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
import org.cloudburstmc.protocol.bedrock.data.LevelEventType;
import org.cloudburstmc.protocol.bedrock.data.PacketRecipient;
import org.cloudburstmc.protocol.bedrock.data.ParticleType;
import org.cloudburstmc.protocol.bedrock.data.SoundEvent;
import org.cloudburstmc.protocol.bedrock.data.command.CommandParam;
import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.TextProcessingEventOrigin;
import org.cloudburstmc.protocol.bedrock.packet.*;
Expand Down Expand Up @@ -59,13 +60,31 @@ public class Bedrock_v662 extends Bedrock_v649 {
.replace(14, TextProcessingEventOrigin.SERVER_FORM) // replaces PASS_THROUGH_WITHOUT_SIFT
.build();

protected static final TypeMap<SoundEvent> SOUND_EVENTS = Bedrock_v649.SOUND_EVENTS
.toBuilder()
.replace(500, SoundEvent.VAULT_OPEN_SHUTTER)
.insert(501, SoundEvent.VAULT_CLOSE_SHUTTER)
.insert(502, SoundEvent.VAULT_EJECT_ITEM)
.insert(503, SoundEvent.VAULT_INSERT_ITEM)
.insert(504, SoundEvent.VAULT_INSERT_ITEM_FAIL)
.insert(505, SoundEvent.VAULT_AMBIENT)
.insert(506, SoundEvent.VAULT_ACTIVATE)
.insert(507, SoundEvent.VAULT_DEACTIVATE)
.insert(508, SoundEvent.HURT_REDUCED)
.insert(509, SoundEvent.WIND_CHARGE_BURST)
.insert(511, SoundEvent.UNDEFINED)
.build();

public static final BedrockCodec CODEC = Bedrock_v649.CODEC.toBuilder()
.raknetProtocolVersion(11)
.protocolVersion(662)
.minecraftVersion("1.20.70")
.helper(() -> new BedrockCodecHelper_v575(ENTITY_DATA, GAME_RULE_TYPES, ITEM_STACK_REQUEST_TYPES, CONTAINER_SLOT_TYPES, PLAYER_ABILITIES, TEXT_PROCESSING_ORIGINS))
.updateSerializer(LevelEventPacket.class, new LevelEventSerializer_v291(LEVEL_EVENTS))
.updateSerializer(LevelEventGenericPacket.class, new LevelEventGenericSerializer_v361(LEVEL_EVENTS))
.updateSerializer(LevelSoundEvent1Packet.class, new LevelSoundEvent1Serializer_v291(SOUND_EVENTS))
.updateSerializer(LevelSoundEvent2Packet.class, new LevelSoundEvent2Serializer_v313(SOUND_EVENTS))
.updateSerializer(LevelSoundEventPacket.class, new LevelSoundEventSerializer_v332(SOUND_EVENTS))
.updateSerializer(AvailableCommandsPacket.class, new AvailableCommandsSerializer_v594(COMMAND_PARAMS))
.updateSerializer(LecternUpdatePacket.class, LecternUpdateSerializer_v662.INSTANCE)
.updateSerializer(MobEffectPacket.class, MobEffectSerializer_v662.INSTANCE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@
import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
import org.cloudburstmc.protocol.bedrock.codec.EntityDataTypeMap;
import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.LevelEventSerializer_v291;
import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.LevelSoundEvent1Serializer_v291;
import org.cloudburstmc.protocol.bedrock.codec.v313.serializer.LevelSoundEvent2Serializer_v313;
import org.cloudburstmc.protocol.bedrock.codec.v332.serializer.LevelSoundEventSerializer_v332;
import org.cloudburstmc.protocol.bedrock.codec.v361.serializer.LevelEventGenericSerializer_v361;
import org.cloudburstmc.protocol.bedrock.codec.v575.BedrockCodecHelper_v575;
import org.cloudburstmc.protocol.bedrock.codec.v662.Bedrock_v662;
import org.cloudburstmc.protocol.bedrock.codec.v671.serializer.*;
import org.cloudburstmc.protocol.bedrock.data.LevelEventType;
import org.cloudburstmc.protocol.bedrock.data.ParticleType;
import org.cloudburstmc.protocol.bedrock.data.command.CommandParam;
import org.cloudburstmc.protocol.bedrock.data.SoundEvent;
import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
import org.cloudburstmc.protocol.bedrock.packet.*;
Expand Down Expand Up @@ -37,13 +40,27 @@ public class Bedrock_v671 extends Bedrock_v662 {
.update(EntityDataTypes.FLAGS_2, new FlagTransformer(ENTITY_FLAGS, 1))
.build();

protected static final TypeMap<SoundEvent> SOUND_EVENTS = Bedrock_v662.SOUND_EVENTS
.toBuilder()
.replace(511, SoundEvent.ARMOR_CRACK_WOLF)
.insert(512, SoundEvent.ARMOR_BREAK_WOLF)
.insert(513, SoundEvent.ARMOR_REPAIR_WOLF)
.insert(514, SoundEvent.MACE_SMASH_AIR)
.insert(515, SoundEvent.MACE_SMASH_GROUND)
.insert(520, SoundEvent.MACE_SMASH_HEAVY_GROUND)
.insert(521, SoundEvent.UNDEFINED)
.build();

public static final BedrockCodec CODEC = Bedrock_v662.CODEC.toBuilder()
.raknetProtocolVersion(11)
.protocolVersion(671)
.minecraftVersion("1.20.80")
.helper(() -> new BedrockCodecHelper_v575(ENTITY_DATA, GAME_RULE_TYPES, ITEM_STACK_REQUEST_TYPES, CONTAINER_SLOT_TYPES, PLAYER_ABILITIES, TEXT_PROCESSING_ORIGINS))
.updateSerializer(LevelEventPacket.class, new LevelEventSerializer_v291(LEVEL_EVENTS))
.updateSerializer(LevelEventGenericPacket.class, new LevelEventGenericSerializer_v361(LEVEL_EVENTS))
.updateSerializer(LevelSoundEvent1Packet.class, new LevelSoundEvent1Serializer_v291(SOUND_EVENTS))
.updateSerializer(LevelSoundEvent2Packet.class, new LevelSoundEvent2Serializer_v313(SOUND_EVENTS))
.updateSerializer(LevelSoundEventPacket.class, new LevelSoundEventSerializer_v332(SOUND_EVENTS))
.updateSerializer(ClientboundDebugRendererPacket.class, ClientboundDebugRendererSerializer_v671.INSTANCE)
.updateSerializer(CorrectPlayerMovePredictionPacket.class, CorrectPlayerMovePredictionSerializer_v671.INSTANCE)
.updateSerializer(ResourcePackStackPacket.class, ResourcePackStackSerializer_v671.INSTANCE)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package org.cloudburstmc.protocol.bedrock.codec.v685;

import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
import org.cloudburstmc.protocol.bedrock.codec.EntityDataTypeMap;
import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.LevelEventSerializer_v291;
import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.LevelSoundEvent1Serializer_v291;
import org.cloudburstmc.protocol.bedrock.codec.v313.serializer.LevelSoundEvent2Serializer_v313;
import org.cloudburstmc.protocol.bedrock.codec.v332.serializer.LevelSoundEventSerializer_v332;
import org.cloudburstmc.protocol.bedrock.codec.v361.serializer.LevelEventGenericSerializer_v361;
import org.cloudburstmc.protocol.bedrock.codec.v575.BedrockCodecHelper_v575;
import org.cloudburstmc.protocol.bedrock.codec.v594.serializer.AvailableCommandsSerializer_v594;
import org.cloudburstmc.protocol.bedrock.codec.v671.Bedrock_v671;
import org.cloudburstmc.protocol.bedrock.codec.v685.serializer.*;
import org.cloudburstmc.protocol.bedrock.data.*;
import org.cloudburstmc.protocol.bedrock.data.command.CommandParam;
import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataFormat;
import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
import org.cloudburstmc.protocol.bedrock.packet.*;
import org.cloudburstmc.protocol.common.util.TypeMap;

public class Bedrock_v685 extends Bedrock_v671 {

protected static final TypeMap<ParticleType> PARTICLE_TYPES = Bedrock_v671.PARTICLE_TYPES.toBuilder()
.insert(93, ParticleType.OMINOUS_ITEM_SPAWNER)
.build();

protected static final TypeMap<SoundEvent> SOUND_EVENTS = Bedrock_v671.SOUND_EVENTS
.toBuilder()
.insert(516, SoundEvent.TRAIL_SPAWNER_CHARGE_ACTIVATE)
.insert(517, SoundEvent.TRAIL_SPAWNER_AMBIENT_OMINOUS)
.insert(518, SoundEvent.OMINOUS_ITEM_SPAWNER_SPAWN_ITEM)
.insert(519, SoundEvent.OMINOUS_BOTTLE_END_USE)
.replace(521, SoundEvent.OMINOUS_ITEM_SPAWNER_SPAWN_ITEM_BEGIN)
.insert(523, SoundEvent.APPLY_EFFECT_BAD_OMEN)
.insert(524, SoundEvent.APPLY_EFFECT_RAID_OMEN)
.insert(525, SoundEvent.APPLY_EFFECT_TRIAL_OMEN)
.insert(526, SoundEvent.OMINOUS_ITEM_SPAWNER_ABOUT_TO_SPAWN_ITEM)
.insert(527, SoundEvent.RECORD_CREATOR)
.insert(528, SoundEvent.RECORD_CREATOR_MUSIC_BOX)
.insert(529, SoundEvent.RECORD_PRECIPICE)
.insert(530, SoundEvent.UNDEFINED)
.build();

protected static final TypeMap<CommandParam> COMMAND_PARAMS = Bedrock_v671.COMMAND_PARAMS.toBuilder()
.shift(86, 4)
.insert(86, CommandParam.CODE_BUILDER_ARG)
.insert(87, CommandParam.CODE_BUILDER_ARGS)
.insert(88, CommandParam.CODE_BUILDER_SELECT_PARAM)
.insert(89, CommandParam.CODE_BUILDER_SELECTOR)
.build();

protected static final EntityDataTypeMap ENTITY_DATA = Bedrock_v671.ENTITY_DATA
.toBuilder()
.insert(EntityDataTypes.VISIBLE_MOB_EFFECTS, 131, EntityDataFormat.NBT) // TODO check data format
.build();

protected static final TypeMap<LevelEventType> LEVEL_EVENTS = Bedrock_v671.LEVEL_EVENTS.toBuilder()
.insert(LEVEL_EVENT_PARTICLE_TYPE, PARTICLE_TYPES)
.replace(LEVEL_EVENT_BLOCK + 115, LevelEvent.PARTICLE_TRIAL_SPAWNER_DETECTION_CHARGED)
.insert(LEVEL_EVENT_BLOCK + 116, LevelEvent.PARTICLE_TRIAL_SPAWNER_BECOME_CHARGED)
.insert(LEVEL_EVENT_BLOCK + 117, LevelEvent.ALL_PLAYERS_SLEEPING)
.insert(9814, LevelEvent.ANIMATION_SPAWN_COBWEB)
.insert(9815, LevelEvent.PARTICLE_SMASH_ATTACK_GROUND_DUST)
.build();

public static final BedrockCodec CODEC = Bedrock_v671.CODEC.toBuilder()
.raknetProtocolVersion(11)
.protocolVersion(685)
.minecraftVersion("1.21.0")
.helper(() -> new BedrockCodecHelper_v575(ENTITY_DATA, GAME_RULE_TYPES, ITEM_STACK_REQUEST_TYPES, CONTAINER_SLOT_TYPES, PLAYER_ABILITIES, TEXT_PROCESSING_ORIGINS))
.updateSerializer(LevelEventPacket.class, new LevelEventSerializer_v291(LEVEL_EVENTS))
.updateSerializer(LevelEventGenericPacket.class, new LevelEventGenericSerializer_v361(LEVEL_EVENTS))
.updateSerializer(AvailableCommandsPacket.class, new AvailableCommandsSerializer_v594(COMMAND_PARAMS))
.updateSerializer(LevelSoundEvent1Packet.class, new LevelSoundEvent1Serializer_v291(SOUND_EVENTS))
.updateSerializer(LevelSoundEvent2Packet.class, new LevelSoundEvent2Serializer_v313(SOUND_EVENTS))
.updateSerializer(LevelSoundEventPacket.class, new LevelSoundEventSerializer_v332(SOUND_EVENTS))
.updateSerializer(ContainerClosePacket.class, ContainerCloseSerializer_v685.INSTANCE)
.updateSerializer(CraftingDataPacket.class, CraftingDataSerializer_v685.INSTANCE)
.updateSerializer(CodeBuilderSourcePacket.class, CodeBuilderSourceSerializer_v685.INSTANCE)
.updateSerializer(EventPacket.class, EventSerializer_v685.INSTANCE)
.updateSerializer(StartGamePacket.class, StartGameSerializer_v685.INSTANCE)
.updateSerializer(TextPacket.class, TextSerializer_v685.INSTANCE)
.registerPacket(AwardAchievementPacket::new, AwardAchievementSerializer_v685.INSTANCE, 309, PacketRecipient.CLIENT)
.deregisterPacket(TickSyncPacket.class) // this packet is now deprecated
.build();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.cloudburstmc.protocol.bedrock.codec.v685.serializer;

import io.netty.buffer.ByteBuf;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.cloudburstmc.protocol.bedrock.codec.BedrockCodecHelper;
import org.cloudburstmc.protocol.bedrock.codec.BedrockPacketSerializer;
import org.cloudburstmc.protocol.bedrock.packet.AwardAchievementPacket;

@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class AwardAchievementSerializer_v685 implements BedrockPacketSerializer<AwardAchievementPacket> {
public static final AwardAchievementSerializer_v685 INSTANCE = new AwardAchievementSerializer_v685();

@Override
public void serialize(ByteBuf buffer, BedrockCodecHelper helper, AwardAchievementPacket packet) {
buffer.writeIntLE(packet.getAchievementId());
}

@Override
public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, AwardAchievementPacket packet) {
packet.setAchievementId(buffer.readIntLE());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package org.cloudburstmc.protocol.bedrock.codec.v685.serializer;

import io.netty.buffer.ByteBuf;
import org.cloudburstmc.protocol.bedrock.codec.BedrockCodecHelper;
import org.cloudburstmc.protocol.bedrock.codec.BedrockPacketSerializer;
import org.cloudburstmc.protocol.bedrock.data.CodeBuilderCategoryType;
import org.cloudburstmc.protocol.bedrock.data.CodeBuilderCodeStatus;
import org.cloudburstmc.protocol.bedrock.data.CodeBuilderOperationType;
import org.cloudburstmc.protocol.bedrock.packet.CodeBuilderSourcePacket;

public class CodeBuilderSourceSerializer_v685 implements BedrockPacketSerializer<CodeBuilderSourcePacket> {
public static final CodeBuilderSourceSerializer_v685 INSTANCE = new CodeBuilderSourceSerializer_v685();

@Override
public void serialize(ByteBuf buffer, BedrockCodecHelper helper, CodeBuilderSourcePacket packet) {
buffer.writeByte(packet.getOperation().ordinal());
buffer.writeByte(packet.getCategory().ordinal());
buffer.writeByte(packet.getCodeStatus().ordinal());
}

@Override
public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, CodeBuilderSourcePacket packet) {
packet.setOperation(CodeBuilderOperationType.values()[buffer.readByte()]);
packet.setCategory(CodeBuilderCategoryType.values()[buffer.readByte()]);
packet.setCodeStatus(CodeBuilderCodeStatus.values()[buffer.readByte()]);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.cloudburstmc.protocol.bedrock.codec.v685.serializer;

import io.netty.buffer.ByteBuf;
import org.cloudburstmc.protocol.bedrock.codec.BedrockCodecHelper;
import org.cloudburstmc.protocol.bedrock.codec.BedrockPacketSerializer;
import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
import org.cloudburstmc.protocol.bedrock.packet.ContainerClosePacket;

public class ContainerCloseSerializer_v685 implements BedrockPacketSerializer<ContainerClosePacket> {
public static final ContainerCloseSerializer_v685 INSTANCE = new ContainerCloseSerializer_v685();

@Override
public void serialize(ByteBuf buffer, BedrockCodecHelper helper, ContainerClosePacket packet) {
buffer.writeByte(packet.getId());
buffer.writeByte(packet.getType().ordinal());
buffer.writeBoolean(packet.isServerInitiated());
}

@Override
public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, ContainerClosePacket packet) {
packet.setId(buffer.readByte());
packet.setType(ContainerType.from(buffer.readByte()));
packet.setServerInitiated(buffer.readBoolean());
}
}
Loading

0 comments on commit 7eb8049

Please sign in to comment.