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