package net.minecraft.server;
import java.io.IOException;
import javax.annotation.Nullable;
public class PacketPlayInUseEntity implements Packet<PacketListenerPlayIn> {
private int a; public int getEntityId() { return this.a; } // Paper - add accessor
private PacketPlayInUseEntity.EnumEntityUseAction action;
private Vec3D c;
private EnumHand d;
public PacketPlayInUseEntity() {}
public PacketPlayInUseEntity(Entity entity) {
this.a = entity.getId();
this.action = PacketPlayInUseEntity.EnumEntityUseAction.ATTACK;
}
@Override
public void a(PacketDataSerializer packetdataserializer) throws IOException {
this.a = packetdataserializer.g();
this.action = packetdataserializer.a(PacketPlayInUseEntity.EnumEntityUseAction.class);
if (this.action == PacketPlayInUseEntity.EnumEntityUseAction.INTERACT_AT) {
this.c = new Vec3D(packetdataserializer.readFloat(), packetdataserializer.readFloat(), packetdataserializer.readFloat());
}
if (this.action == PacketPlayInUseEntity.EnumEntityUseAction.INTERACT || this.action == PacketPlayInUseEntity.EnumEntityUseAction.INTERACT_AT) {
this.d = packetdataserializer.a(EnumHand.class);
}
}
@Override
public void b(PacketDataSerializer packetdataserializer) throws IOException {
packetdataserializer.d(this.a);
packetdataserializer.a(this.action);
if (this.action == PacketPlayInUseEntity.EnumEntityUseAction.INTERACT_AT) {
packetdataserializer.writeFloat((float) this.c.x);
packetdataserializer.writeFloat((float) this.c.y);
packetdataserializer.writeFloat((float) this.c.z);
}
if (this.action == PacketPlayInUseEntity.EnumEntityUseAction.INTERACT || this.action == PacketPlayInUseEntity.EnumEntityUseAction.INTERACT_AT) {
packetdataserializer.a(this.d);
}
}
@Override
public void a(PacketListenerPlayIn packetlistenerplayin) {
packetlistenerplayin.a(this);
}
@Nullable
public Entity a(World world) {
return world.getEntity(this.a);
}
public PacketPlayInUseEntity.EnumEntityUseAction a() {
return this.action;
}
public EnumHand b() {
return this.d;
}
public Vec3D c() {
return this.c;
}
public static enum EnumEntityUseAction {
INTERACT, ATTACK, INTERACT_AT;
private EnumEntityUseAction() {}
}
}