# Bouncy

```yaml
    Bouncy:
      Maximum_Bounce_Amount: <amount>
      Blocks:
        Allow_Any: <true/false>
        Default_Speed_Multiplier: <multiplier>
        Whitelist: <true/false>
        List:
          - <Material>
          - <Material> <speed multiplier>
          - <etc.>
      Entities:
        Allow_Any: <true/false>
        Default_Speed_Multiplier: <multiplier>
        Whitelist: <true/false>
        List:
          - <EntityType>
          - <EntityType> <speed multiplier>
          - <etc.>
      Rolling:
        Required_Motion_To_Start_Rolling: <speed>
        Blocks:
          Allow_Any: <true/false>
          Default_Speed_Multiplier: <multiplier>
          Whitelist: <true/false>
          List:
            - <Material>
            - <Material> <speed multiplier>
            - <etc.>
```

#### Maximum\_Bounce\_Amount

The maximum amount this projectile can bounce off from entities and blocks.\
Defaults to `1`. Setting value to `-1` means infinite.

**`Blocks`:**

* `Allow_Any`
  * If this is true then all blocks are valid.
  * This overrides `Whitelist` and `List`.
* `Default_Speed_Multiplier`
  * The number to multiply the projectile speed by.
  * This is the default speed multiplier, meaning that if the following list does not contain specific information for speed about the hit block, then it defaults to this value.
* `Whitelist`
  * Whether the use `List` as whitelist or blacklist.
  * `True` = only blocks listed in `List` can be bounced off.
* `List`
  * Material list of bounceable blocks depending on `Whitelist`.
  * Use the [References](https://cjcrafter.gitbook.io/core/references#material) list for your version.
  * The second argument is `speed multiplier` which multiplies the projectile's current speed with its value.

#### Entities

* `Allow_Any`
  * If this is true then all entities are valid.
  * This overrides `Whitelist` and `List`.
* `Default_Speed_Multiplier`
  * The number to multiply the projectile speed by.
  * This is the default speed multiplier, meaning that if the following list does not contain specific information for speed about the hit entity, then it defaults to this value.
* `Whitelist`
  * Whether the use `List` as whitelist or blacklist.
  * `True` = only entities listed in `List` can be bounced off.
* `List`
  * Entity list of bounceable entities depending on `Whitelist`.
  * Use the [References](https://cjcrafter.gitbook.io/core/references#entity) list for your version.
  * Second argument is `speed multiplier` which multiplies the projectile's current speed with its value.

#### Rolling

This is useful for grenades for example. First, you want them to bounce off walls and when the motion gets low enough they'll just start rolling on the ground. When the motion of the projectile decreases to near `0`, it is automatically stuck to the current block below.

* `Required_Motion_To_Start_Rolling`
  * Defines the required motion to start rolling.
  * When the speed of projectile goes below this value, it will start rolling instead of bouncing
* `Blocks`
  * Same as above `Blocks` configuration, but used with rolling and the speed multiplier is based on the block below the projectile.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cjcrafter.gitbook.io/weaponmechanics/weapon-modules/projectile/bouncy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
