# Beacon Effects

You can add beacon effects inside `effects.yml`&#x20;

## Effect Config Structure

```yaml
Effects:
    <effect id>:
        Display Name: <effect display name>
        Item: <effect display item>
        Description: <effect description>
        Enabled: <true/false>
        Levels: <effect upgrades map list>
    ...
```

{% hint style="info" %}
For effect display item, please see

<https://www.spigotmc.org/wiki/itemstack-serialization/>
{% endhint %}

### Effect Upgrades Config Structure

```yaml
        Levels:
        - Cost:
                <economy name>: <price>
                ...
          Description: <upgrade description>
          Power Consumption: <upgrade's effect power consumption>
          Effects: <effects map list>
          Condition: <upgrade's effect condition>
        ...
        
```

#### Economy Types

* PlayerPoints
* Vault
* Level
* \<Item> (see config.yml)

## Available Effects

### Experience Boost

Multiply received experience

```yaml
          Effects:
          - Type: EXP_BOOST
            Multiplier: <experience boost multiplier>
            Condition: [effect condition, optional]
```

{% hint style="warning" %}
Keep the multiplier small (but not less than 1) to keep things balanced
{% endhint %}

### Temporary Fly

Gives temporary flight mode to the player, will be revoked if the player goes out of the beacon range.

```yaml
          Effects:
          - Type: FLY
            Height: <fly max height from beacon>
            Condition: [effect condition, optional]
```

### Furnace Boost

Speeds up cook time but might also consumes fuel faster

```yaml
          Effects:
          - Type: FURNACE_BOOST
            Speed Up Time: <speed up time percentage>
            Block Type Whitelist: [list of whitelisted blocks, optional]
            Condition: [effect condition, optional]
          - Type: FURNACE_BOOST
            Speed Up Time: <speed up time percentage>
            Block Type Whitelist:
            - FURNACE
            - SMOKER
```

{% hint style="info" %}
For list of blocks, please see

<https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html>
{% endhint %}

### Crops Boost

Once a crop (e.g. WHEAT, BEETROOTS, CARROTS, MELON\_STEM, etc) is placed, it will be skipped for certain stage when the location is inside the beacon range

```yaml
          Effects:
          - Type: CROPS_BOOST
            Speed Up Stage: <stage to skip when planted>
            Crops Blacklist: [list of blacklisted blocks, optional]
            Crops Whitelist: [list of whitelisted blocks, optional]
            Condition: [effect condition, optional]
```

{% hint style="info" %}
For list of blocks, please see

<https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html>
{% endhint %}

### Magnet

Pulls entities towards the beacon (positive magnitude) or against the beacon (negative magnitude)

```yaml
          Effects:
          - Type: MAGNET
            Magnitude: <the magnet strength>
            Condition: [effect condition, optional]
```

### Potion Effect

Gives potion effect to entities inside the beacon range

```yaml
          Effects:
          - Type: POTION_EFFECT
            Effect: <effect type>
            Duration: <effect duration>
            Amplifier: <effect amplifier, number starts from 0>
            Ambient: <true/false>
            Particles: <true/false>
            Icon: <true/false>
            Condition: [effect condition, optional]
```

{% hint style="info" %}
For list of potion effect types, please see

<https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/potion/PotionEffectType.html>
{% endhint %}

### Potion Duration Boost

Decrease the duration of specific active potion effect from entities inside beacon&#x20;

```yaml
          Effects:
          - Type: POTION_DURATION_BOOST
            Potion Effect Type: <effect type>
            Duration Boost Tick: <tick to decrease from effect every beacon tick>
            Condition: [effect condition, optional]
```

{% hint style="info" %}
For list of potion effect types, please see

<https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/potion/PotionEffectType.html>
{% endhint %}

### Stupid AI

Completely disables entity AI. When AI is disabled, entity will no longer target/attack anyone

```yaml
          Effects:
          - Type: STUPID_AI
            Condition: [effect condition, optional]
```

### Spawner Boost

Decrease the spawner spawn/trigger interval

```yaml
          Effects:
          - Type: SPAWNER_BOOST
            Speed Up Percentage: <spawner delay speed up percentage>
            Condition: [effect condition, optional]
```

### Fire Control

Sets entity on fire (positive fire tick) or extenguish it (negative fire tick)

```yaml
          Effects:
          - Type: FIRE_CONTROL
            Fire Tick: <fire tick to add every beacon tick>
            Condition: [effect condition, optional]
```

{% hint style="info" %}
If the fire tick is positive, the entity will be burned, otherwise, it will extinguish it
{% endhint %}

### Saturation

Gives saturation to the player

```yaml
          Effects:
          - Type: SATURATION
            Saturation: <saturation value, number>
            Condition: [effect condition, optional]
```

### Command Executor

Executes command as players or console

```yaml
        Effects:
        - Type: COMMAND_EXECUTOR
          Command: "say Hello everyone! My name is {player} and i live in {world}"
          Console: false
          Passive Command: "say This command is executed from console and will run even with no players around"
```

Placeholders:

1. `{player}` The entity name
2. `{uuid}` The entity UUID
3. `{world}` The entity world name
4. `{x}` The entity x coordinate
5. `{y}` The entity y coordinate
6. `{z}` The entity z coordinate
7. `{yaw}` The entity yaw
8. `{pitch}` The entity pitch
9. `{beacon_x}` The beacon x coordinate
10. `{beacon_y}` The beacon y coordinate
11. `{beacon_world}` The beacon world name
12. And [other placeholder](https://septogeddondev.gitbook.io/beaconplus/configuration/placeholders)

### Immortality Field

Has a chance of preventing entities inside beacon from death (same function as totem of undying)

```yaml
        Effects:
        - Type: IMMORTALITY_FIELD
          Min Health: [optional, default to 1]
          Survival Chance: [optional, default to 100.0]
```

### Experience Gain

Gives specific amount of experience to all players inside the beacon

```yaml
        Effects:
        - Type: EXP_GAIN
          Exp: [number, default to 0]
```

### Cooldown Reduction

Reduce player's cooldown

```yaml
        Effects:
        - Type: COOLDOWN_REDUCTION
          Cooldown Reduction Percentage: [number, default to 0]
```

### Temporary Permission

Gives or revokes permissions temporarily to all players inside the beacon range

```yaml
        Effects:
        - Type: PERMISSION
          Permissions:
          - "my.example.permission1": true # gives permission
          - "my.example.permission2": false # revokes permission
          # or you can do this
          Permissions:
          - "my.example.permission3" # this will set to true by default
```

### Prevent Mob Spawning

Prevents mob spawning in the beacon area

```yaml
        Effects:
        - Type: PREVENT_MOB_SPAWNING
```

### Keep Chunk Loaded

Keep chunk loaded as long as the beacon is active

```yaml
        Effects:
        - Type: KEEP_CHUNK_LOADED
          Single Chunk: [true/false, default to false]
          # if Single Chunk is true, then it will only keep the chunk the beacon is in
          # if Single Chunk is false, then it will keep all the chunk within beacon radius
          Load Chunk: [true/false, default to false]
          # if Load Chunk is true, then it will attempt to load the affected chunks (if not loaded yet)
          # however this does not make the chunk loaded at startup
```
