use crate::Point;
use yog_core::{BlockPos, PlayerInfo, SlotStack, Stack};
use yog_ids as ids;
actions! {
GiveItem { player: String, item: String, count: u32 } -> bool = ids::service_player::GIVE_ITEM, "YogPlayerActions.giveItem";
Teleport { player: String, pos: Point } -> bool = ids::service_player::TELEPORT, "YogPlayerActions.teleport";
TeleportToDim { player: String, dim: String, pos: Point } -> bool = ids::service_player::TELEPORT_TO_DIM, "YogPlayerActions.teleportToDim";
Kick { player: String, reason: String } -> bool = ids::service_player::KICK, "YogPlayerActions.kickPlayer";
SetGamemode { player: String, mode: String } -> bool = ids::service_player::SET_GAMEMODE, "YogPlayerActions.setGamemode";
Inventory { player: String } -> Vec<SlotStack> = ids::service_player::INVENTORY, "YogQueries.playerInventory";
SetSlot { player: String, slot: u32, item: String, count: u32 } -> bool = ids::service_player::SET_SLOT, "YogPlayerActions.playerSetSlot";
HeldItemNbt { player: String } -> Option<String> = ids::service_player::HELD_ITEM_NBT, "YogPlayerActions.getHeldItemNbt";
SetHeldItemNbt { player: String, snbt: String } -> bool = ids::service_player::SET_HELD_ITEM_NBT, "YogPlayerActions.setHeldItemNbt";
OffhandItemNbt { player: String } -> Option<String> = ids::service_player::OFFHAND_ITEM_NBT, "YogPlayerActions.getOffhandItemNbt";
SetOffhandItemNbt { player: String, snbt: String } -> bool = ids::service_player::SET_OFFHAND_ITEM_NBT, "YogPlayerActions.setOffhandItemNbt";
SlotItem { player: String, slot: u32 } -> Option<Stack> = ids::service_player::SLOT_ITEM, "YogQueries.getSlotItem";
SetSlotItem { player: String, slot: u32, item: String, count: u32, snbt: String } -> bool = ids::service_player::SET_SLOT_ITEM, "YogPlayerActions.setSlotItem";
AddXp { player: String, amount: i32 } -> bool = ids::service_player::ADD_XP, "YogPlayerActions.playerAddXp";
SetMayFly { player: String, may_fly: bool } -> bool = ids::service_player::SET_MAY_FLY, "YogPlayerActions.playerSetMayFly";
Info { player: String } -> Option<PlayerInfo> = ids::service_player::INFO, "YogQueries.playerInfo";
SetItemCooldown { player: String, item: String, ticks: i32 } -> bool = ids::service_player::SET_ITEM_COOLDOWN, "YogPlayerActions.setItemCooldown";
PlaceBlockFromSlot { player: String, slot: u32, dim: String, pos: BlockPos } -> bool = ids::service_player::PLACE_BLOCK_FROM_SLOT, "YogPlayerActions.placeBlockFromSlot";
Online { } -> Vec<String> = ids::service_player::ONLINE, "YogQueries.onlinePlayers";
}