use yog_core::{BlockInfo, BlockPos, Stack};
use yog_ids as ids;
actions! {
Nbt { dim: String, pos: BlockPos } -> Option<String> = ids::service_block::NBT, "YogBlockActions.getBlockNbt";
SetNbt { dim: String, pos: BlockPos, snbt: String } -> bool = ids::service_block::SET_NBT, "YogBlockActions.setBlockNbt";
State { dim: String, pos: BlockPos } -> Option<String> = ids::service_block::STATE, "YogBlockActions.getBlockState";
SetState { dim: String, pos: BlockPos, state: String } -> bool = ids::service_block::SET_STATE, "YogBlockActions.setBlockState";
Info { dim: String, pos: BlockPos } -> Option<BlockInfo> = ids::service_block::INFO, "YogQueries.blockInfo";
Destroy { dim: String, pos: BlockPos, drop: bool, breaker: String } -> bool = ids::service_block::DESTROY, "YogBlockActions.breakBlock";
Bonemeal { dim: String, pos: BlockPos } -> bool = ids::service_block::BONEMEAL, "YogBlockActions.bonemeal";
UseItem { dim: String, pos: BlockPos, face: u8, item: String, player: String } -> bool = ids::service_block::USE_ITEM, "YogBlockActions.useItemOnBlock";
PourFluid { dim: String, pos: BlockPos, bucket: String } -> bool = ids::service_block::POUR_FLUID, "YogBlockActions.pourFluid";
RedstonePower { dim: String, pos: BlockPos } -> Option<u8> = ids::service_block::REDSTONE_POWER, "YogQueries.redstonePower";
RedstoneSignal { dim: String, pos: BlockPos } -> Option<u8> = ids::service_block::REDSTONE_SIGNAL, "YogQueries.redstoneSignal";
SetRedstoneOutput { dim: String, pos: BlockPos, level: i32 } -> bool = ids::service_block::SET_REDSTONE_OUTPUT, "YogBlockActions.setRedstoneOutput";
InventorySlot { dim: String, pos: BlockPos, slot: u32 } -> Option<Stack> = ids::service_block::INVENTORY_SLOT, "YogQueries.getInventorySlot";
SetInventorySlot { dim: String, pos: BlockPos, slot: u32, item: String, count: u32, snbt: String } -> bool = ids::service_block::SET_INVENTORY_SLOT, "YogBlockActions.setInventorySlot";
}