diff --git a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java index 94903246b..0f61925b5 100644 --- a/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java +++ b/connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java @@ -85,11 +85,23 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve if (entity == null) return; - Vector3f vector = packet.getClickPosition(); - ClientPlayerInteractEntityPacket entityPacket = new ClientPlayerInteractEntityPacket((int) entity.getEntityId(), - InteractAction.values()[packet.getActionType()], vector.getX(), vector.getY(), vector.getZ(), Hand.MAIN_HAND); - - session.getDownstream().getSession().send(entityPacket); + //https://wiki.vg/Protocol#Interact_Entity + switch (packet.getActionType()) { + case 0: //Interact + Vector3f vector = packet.getClickPosition(); + ClientPlayerInteractEntityPacket interactPacket = new ClientPlayerInteractEntityPacket((int) entity.getEntityId(), + InteractAction.INTERACT, Hand.MAIN_HAND); + ClientPlayerInteractEntityPacket interactAtPacket = new ClientPlayerInteractEntityPacket((int) entity.getEntityId(), + InteractAction.INTERACT_AT, vector.getX(), vector.getY(), vector.getZ(), Hand.MAIN_HAND); + session.getDownstream().getSession().send(interactPacket); + session.getDownstream().getSession().send(interactAtPacket); + break; + case 1: //Attack + ClientPlayerInteractEntityPacket attackPacket = new ClientPlayerInteractEntityPacket((int) entity.getEntityId(), + InteractAction.ATTACK); + session.getDownstream().getSession().send(attackPacket); + break; + } break; } }