# Upcoming Features

## Functions

Used to modify outcome objects, such as BlockStates, Entities, ItemStacks, etc. This is intended mostly as an alternative to the component system for Entities & Blocks.

| Id                        | Default Target             | Parameters                         | Use Case                                                                               |
| ------------------------- | -------------------------- | ---------------------------------- | -------------------------------------------------------------------------------------- |
| set\_age                  | ageable entities           | age                                | set age of animal                                                                      |
| set\_count                | all                        | count                              | set count of anything                                                                  |
| distribute\_count         | all                        | functions, total\_count            | uses the count from all functions to determine a proportional amount to the total      |
| group                     | all                        | functions                          | run multiple functions once                                                            |
| loop                      | all                        | function                           | run the function over time at an interval; for example: once every 1s                  |
| random\_count             | all                        | function, count                    | run the function multiple times                                                        |
| random\_split             | all                        | valid\_function, invalid\_function | runs a function for all valid targets and a different function for all invalid targets |
| set\_pos                  | all                        | pos                                | set position of anything                                                               |
| set\_color                | colorables                 | color                              | dye sheep, shulkers, items, blocks, etc                                                |
| set\_charged              | creepers                   | charged                            | make creepers charged                                                                  |
| set\_direction            | directionals               | direction                          | set direction of blocks, entities, or structures                                       |
| set\_velocity             | entities, particles        | velocity                           | set velocity of entity                                                                 |
| add\_passenger            | entities                   | passenger                          | add a passenger to entity                                                              |
| set\_nbt                  | entities/block entities    | nbt                                | only because nbt still exists, please please remove it mojang                          |
| set\_goat\_horns          | goats                      | horns                              | set goat horns on goat                                                                 |
| set\_components           | items                      | components                         | item modifications                                                                     |
| set\_name                 | items/entities             | name                               | set name of item or entity                                                             |
| add\_enchantments         | items                      | enchantments                       | set enchantments of item                                                               |
| add\_status\_effects      | living entities            | status\_effects                    | add status effect to entity                                                            |
| set\_equipment            | living entities            | slot->item                         | set mob equipment                                                                      |
| set\_attribute\_modifiers | living entities/items      | attribute->value                   | set max health, armor, etc of the spawned mob or of the itemstack                      |
| set\_level                | enchantments               | level                              | set level of enchantment                                                               |
| set\_target               | mobs                       | target                             | angering & setting target of mobs                                                      |
| set\_owner                | pets                       | owner                              | taming pets, ender pearls                                                              |
| set\_sitting              | pets                       | sitting                            | make pets sit                                                                          |
| set\_rotation             | rotationals                | rotation                           | setting initial mob rotation                                                           |
| set\_sheared              | sheep                      | sheared                            | make sheep sheared                                                                     |
| set\_variant              | variant entities           | variant                            | frog variants, fox variants, tropical fish, axolotls, etc                              |
| set\_size                 | slimes, salmon, pufferfish | size                               | sets the size of the entity                                                            |
| set\_saddle               | rideables                  | saddle                             | adds a saddle to the entity so they can be ridden                                      |
| set\_villager\_data       | villagers                  | profession, rank, trades           | sets villager data                                                                     |
| set\_baby                 | animals                    | baby                               | makes the animal a baby                                                                |
| set\_item                 | item frames, foxes         | stack                              | sets the entity's single held item when not using equipment slots                      |
| initialize\_mobs          | mobs                       | data                               | default mob spawning mechanics: skeleton bows, horse stats, etc                        |

## Boolean Providers

Return a boolean value, usable in any codec-based object.

| Id     | Parameters | Description           |
| ------ | ---------- | --------------------- |
| simple | value      | returns a boolean     |
| random | N/A        | returns true or false |

## Color Providers

Return a color value, usable in any codec-based object.

| Id     | Parameters | Description            |
| ------ | ---------- | ---------------------- |
| simple | color      | returns a color        |
| random | colors     | returns a random color |

## Entity Providers

Return an Entity value, usable in any codec-based object.

| Id                | Parameters | Description                                         |
| ----------------- | ---------- | --------------------------------------------------- |
| random\_in\_shape | shape      | returns a random player in the shape                |
| target            | provider   | returns the current target entity of the provided   |
| attacker          | provider   | returns the current attacker entity of the provided |
| owner             | provider   | returns the owner entity of the provided            |
| random\_passenger | provider   | returns a random passenger entity of the provided   |

## Stack Providers

Return an ItemStack value, usable in any codec-based object.

| Id     | Parameters        | Description                                       |
| ------ | ----------------- | ------------------------------------------------- |
| simple | stack, components | returns an itemstack                              |
| random | stacks            | returns a random itemstack from the provided list |

## Text Providers

Return a text value, usable in any codec-based object.

| Id       | Parameters | Description                             |
| -------- | ---------- | --------------------------------------- |
| simple   | text       | returns a basic text                    |
| random   | texts      | returns a random text                   |
| compound | texts      | returns a combination of multiple texts |

## Vec Providers

Return a Vec3d value, usable in any codec-based object.

|                      |                | Description                                         |
| -------------------- | -------------- | --------------------------------------------------- |
| constant             | vec            | returns a vector                                    |
| random               | vecs           | returns a random vector                             |
| random\_in\_shape    | shape          | returns a random vector within the shape            |
| clamp\_to\_heightmap | vec, heightmap | clamps the vector to the heightmap                  |
| random\_velocity     | power, pitch   | returns a velocity vector, based on power and pitch |
