Skip to content

Commit

Permalink
Some fixes & improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
Alemiz112 committed Jul 26, 2024
1 parent c034319 commit 989deef
Show file tree
Hide file tree
Showing 12 changed files with 34 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ public class PlayerArmorDamageSerializer_v407 implements BedrockPacketSerializer
public void serialize(ByteBuf buffer, BedrockCodecHelper helper, PlayerArmorDamagePacket packet) {
int flags = 0;
for (PlayerArmorDamageFlag flag : packet.getFlags()) {
flags |= 1 << flag.ordinal();
int ordinal = flag.ordinal();
if (ordinal > this.getMaxFlagIndex()) {
continue;
}
flags |= 1 << ordinal;
}
buffer.writeByte(flags);

Expand All @@ -38,11 +42,15 @@ public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, PlayerArmorDa
int flagsVal = buffer.readUnsignedByte();
Set<PlayerArmorDamageFlag> flags = packet.getFlags();
int[] damage = packet.getDamage();
for (int i = 0; i < 4; i++) {
for (int i = 0; i <= this.getMaxFlagIndex(); i++) {
if ((flagsVal & (1 << i)) != 0) {
flags.add(FLAGS[i]);
damage[i] = VarInts.readInt(buffer);
}
}
}

protected int getMaxFlagIndex() {
return 3;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public void serialize(ByteBuf buffer, BedrockCodecHelper helper, CameraInstructi
super.serialize(buffer, helper, packet);
helper.writeOptionalNull(buffer, packet.getTargetInstruction(), (buf, targetInstruction) -> {
helper.writeOptionalNull(buf, targetInstruction.getTargetCenterOffset(), helper::writeVector3f);
VarInts.writeLong(buf, targetInstruction.getUniqueEntityId());
buf.writeLongLE(targetInstruction.getUniqueEntityId());
});
helper.writeOptional(buffer, OptionalBoolean::isPresent, packet.getRemoveTarget(),
(buf, removeTarget) -> buf.writeBoolean(removeTarget.getAsBoolean()));
Expand All @@ -28,7 +28,7 @@ public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, CameraInstruc
super.deserialize(buffer, helper, packet);
packet.setTargetInstruction(helper.readOptional(buffer, null, buf -> {
Vector3f targetCenterOffset = helper.readOptional(buffer, null, helper::readVector3f);
long uniqueEntityId = VarInts.readLong(buffer);
long uniqueEntityId = buf.readLongLE();
return new CameraTargetInstruction(targetCenterOffset, uniqueEntityId);
}));
packet.setRemoveTarget(helper.readOptional(buffer, OptionalBoolean.empty(), buf -> OptionalBoolean.of(buf.readBoolean())));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ public void serialize(ByteBuf buffer, BedrockCodecHelper helper, ChangeDimension
@Override
public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, ChangeDimensionPacket packet) {
super.deserialize(buffer, helper, packet);
packet.setLoadingScreenId(helper.readOptional(buffer, 0, ByteBuf::readIntLE));
packet.setLoadingScreenId(helper.readOptional(buffer, null, ByteBuf::readIntLE));
}
}
Original file line number Diff line number Diff line change
@@ -1,27 +1,12 @@
package org.cloudburstmc.protocol.bedrock.codec.v712.serializer;

import io.netty.buffer.ByteBuf;
import org.cloudburstmc.protocol.bedrock.codec.BedrockCodecHelper;
import org.cloudburstmc.protocol.bedrock.codec.v407.serializer.PlayerArmorDamageSerializer_v407;
import org.cloudburstmc.protocol.bedrock.data.PlayerArmorDamageFlag;
import org.cloudburstmc.protocol.bedrock.packet.PlayerArmorDamagePacket;
import org.cloudburstmc.protocol.common.util.VarInts;

import java.util.Set;

public class PlayerArmorDamageSerializer_v712 extends PlayerArmorDamageSerializer_v407 {
public static final PlayerArmorDamageSerializer_v712 INSTANCE = new PlayerArmorDamageSerializer_v712();

@Override
public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, PlayerArmorDamagePacket packet) {
int flagsVal = buffer.readUnsignedByte();
Set<PlayerArmorDamageFlag> flags = packet.getFlags();
int[] damage = packet.getDamage();
for (int i = 0; i < FLAGS.length; i++) {
if ((flagsVal & (1 << i)) != 0) {
flags.add(FLAGS[i]);
damage[i] = VarInts.readInt(buffer);
}
}
protected int getMaxFlagIndex() {
return 4;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ protected void writeItemUseTransaction(ByteBuf buffer, BedrockCodecHelper helper
helper.writeVector3f(buffer, transaction.getPlayerPosition());
helper.writeVector3f(buffer, transaction.getClickPosition());
VarInts.writeUnsignedInt(buffer, transaction.getBlockDefinition().getRuntimeId());
buffer.writeByte(transaction.getClientInteractPrediction().ordinal());
VarInts.writeUnsignedInt(buffer, transaction.getClientInteractPrediction().ordinal());
}

@Override
Expand Down Expand Up @@ -60,7 +60,7 @@ protected ItemUseTransaction readItemUseTransaction(ByteBuf buffer, BedrockCodec
itemTransaction.setPlayerPosition(helper.readVector3f(buffer));
itemTransaction.setClickPosition(helper.readVector3f(buffer));
itemTransaction.setBlockDefinition(helper.getBlockDefinitions().getDefinition(VarInts.readUnsignedInt(buffer)));
itemTransaction.setClientInteractPrediction(ItemUseTransaction.PredictedResult.values()[buffer.readByte()]);
itemTransaction.setClientInteractPrediction(ItemUseTransaction.PredictedResult.values()[VarInts.readUnsignedInt(buffer)]);
return itemTransaction;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ public ResourcePacksInfoPacket.Entry readEntry(ByteBuf buffer, BedrockCodecHelpe
String subPackName = helper.readString(buffer);
String contentId = helper.readString(buffer);
boolean isScripting = buffer.readBoolean();
boolean raytracingCapable = resource && buffer.readBoolean();
boolean isAddonPack = buffer.readBoolean();
boolean raytracingCapable = resource && buffer.readBoolean();
return new ResourcePacksInfoPacket.Entry(packId, packVersion, packSize, contentKey, subPackName, contentId,
isScripting, raytracingCapable, isAddonPack);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@ public void serialize(ByteBuf buffer, BedrockCodecHelper helper, ServerboundLoad
@Override
public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, ServerboundLoadingScreenPacket packet) {
packet.setType(ServerboundLoadingScreenPacketType.values()[VarInts.readInt(buffer)]);
packet.setLoadingScreenId(helper.readOptional(buffer, 0, ByteBuf::readIntLE));
packet.setLoadingScreenId(helper.readOptional(buffer, null, ByteBuf::readIntLE));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
@AllArgsConstructor
@NoArgsConstructor
public class CameraTargetInstruction {

private Vector3f targetCenterOffset;
private long uniqueEntityId;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ public class EntityLinkData {
private final Type type;
private final boolean immediate;
private final boolean riderInitiated;
/**
* @since v712
*/
private final float vehicleAngularVelocity;

@Deprecated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ public enum ItemStackRequestActionType {
CRAFT_LOOM,
CRAFT_NON_IMPLEMENTED_DEPRECATED,
CRAFT_RESULTS_DEPRECATED,
/**
* @deprecated since 712
*/
PLACE_IN_ITEM_CONTAINER,
/**
* @deprecated since 712
*/
TAKE_FROM_ITEM_CONTAINER
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ public class ChangeDimensionPacket implements BedrockPacket {
private Vector3f position;
private boolean respawn;
/**
* Will be serialized as optional not present if null
* @since v712
*/
private int loadingScreenId;
private Integer loadingScreenId;

@Override
public final PacketSignal handle(BedrockPacketHandler handler) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@
@ToString(doNotUseGetters = true)
public class ServerboundLoadingScreenPacket implements BedrockPacket {
private ServerboundLoadingScreenPacketType type;
private int loadingScreenId;
/**
* Optional int, not present if null
*/
private Integer loadingScreenId;

@Override
public PacketSignal handle(BedrockPacketHandler handler) {
Expand Down

0 comments on commit 989deef

Please sign in to comment.