use crate::Point;
use yog_core::EntityInfo;
use yog_ids as ids;
actions! {
Teleport { uuid: String, pos: Point } -> bool = ids::service_entity::TELEPORT, "YogEntityActions.entityTeleport";
TeleportToDim { uuid: String, dim: String, pos: Point } -> bool = ids::service_entity::TELEPORT_TO_DIM, "YogEntityActions.entityTeleportToDim";
Position { uuid: String } -> Option<Point> = ids::service_entity::POSITION, "YogQueries.entityPosition";
Rotation { uuid: String } -> Option<yog_core::Rotation> = ids::service_entity::ROTATION, "YogQueries.entityRotation";
Velocity { uuid: String } -> Option<Point> = ids::service_entity::VELOCITY, "YogQueries.entityVelocity";
SetVelocity { uuid: String, velocity: Point } -> bool = ids::service_entity::SET_VELOCITY, "YogEntityActions.entitySetVelocity";
AddVelocity { uuid: String, velocity: Point } -> bool = ids::service_entity::ADD_VELOCITY, "YogEntityActions.entityAddVelocity";
Health { uuid: String } -> Option<f64> = ids::service_entity::HEALTH, "YogEntityActions.entityHealth";
SetHealth { uuid: String, health: f64 } -> bool = ids::service_entity::SET_HEALTH, "YogEntityActions.entitySetHealth";
Kill { uuid: String } -> bool = ids::service_entity::KILL, "YogEntityActions.entityKill";
Spawn { entity_type: String, dim: String, pos: Point } -> Option<String> = ids::service_entity::SPAWN, "YogEntityActions.spawnEntity";
AddEffect { uuid: String, effect: String, duration: i32, amplifier: u8, particles: bool } -> bool = ids::service_entity::ADD_EFFECT, "YogEntityActions.entityAddEffect";
RemoveEffect { uuid: String, effect: String } -> bool = ids::service_entity::REMOVE_EFFECT, "YogEntityActions.entityRemoveEffect";
ClearEffects { uuid: String } -> bool = ids::service_entity::CLEAR_EFFECTS, "YogEntityActions.entityClearEffects";
Nbt { uuid: String } -> Option<String> = ids::service_entity::NBT, "YogEntityActions.entityGetNbt";
SetNbt { uuid: String, snbt: String } -> bool = ids::service_entity::SET_NBT, "YogEntityActions.entitySetNbt";
AttributeBase { uuid: String, attribute: String } -> Option<f64> = ids::service_entity::ATTRIBUTE_BASE, "YogEntityActions.entityAttributeGet";
SetAttributeBase { uuid: String, attribute: String, value: f64 } -> bool = ids::service_entity::SET_ATTRIBUTE_BASE, "YogEntityActions.entityAttributeSet";
AttributeValue { uuid: String, attribute: String } -> Option<f64> = ids::service_entity::ATTRIBUTE_VALUE, "YogEntityActions.entityAttributeValue";
Info { uuid: String } -> Option<EntityInfo> = ids::service_entity::INFO, "YogQueries.entityInfo";
Damage { uuid: String, amount: f32, damage_type: String, attacker: String } -> bool = ids::service_entity::DAMAGE, "YogEntityActions.entityDamage";
SetFireTicks { uuid: String, ticks: i32 } -> bool = ids::service_entity::SET_FIRE_TICKS, "YogEntityActions.entitySetFireTicks";
Vehicle { uuid: String } -> Option<String> = ids::service_entity::VEHICLE, "YogEntityActions.entityVehicle";
Passengers { uuid: String } -> Vec<String> = ids::service_entity::PASSENGERS, "YogQueries.entityPassengers";
Mount { rider: String, vehicle: String, force: bool } -> bool = ids::service_entity::MOUNT, "YogEntityActions.entityMount";
Dismount { uuid: String } -> bool = ids::service_entity::DISMOUNT, "YogEntityActions.entityDismount";
SetFallDistance { uuid: String, distance: f32 } -> bool = ids::service_entity::SET_FALL_DISTANCE, "YogEntityActions.entitySetFallDistance";
}