# Advent Calendar

## Module

If you are using this resource because of other features and Advent Calendar is not used, you can to disable this module and increase performance of the server.

```yaml
Options:
  AdventCalendar:
    Active: true #false, if module is not used
```

## Season duration

Range of days, while module is active.

```yaml
Options:
  AdventCalendar:
    Season:
      DateFormat: "dd.MM.yyyy HH:mm"
      StartDateTime: "01.12.2022 00:00" #The datetime when the season starts.
      EndDateTime: "24.12.2022 23:59" #The datetime when the season ends.
```

{% hint style="warning" %}
Before and after this season, players won't be able to open Advent Calendar.
{% endhint %}

### Window

Window at Calendar opens once a day at specified time.

```yaml
Options:
  AdventCalendar:
    Season:
      Window:
        OpeningTime: "00:00"
```

If player misses to open the window for specific day, he won't able to open in next day!

This **strict** behaviour can be changed to **benevolent** and player is able to open any previous windows.

```yaml
Options:
  AdventCalendar:
    Season:
      Window:
        OpeningType: "STRICT" #STRICT or BENEVOLENT
```

## Reward

By click to open window, you can choose one of the follwoing actions, what to do next.

#### List of actions

* `QUICK__BASE` - After click, the **first** reward from list selected for that day will be claimed.
* `QUICK__RANDOM` - After click, **random** reward from list selected for that day will be claimed.
* `QUICK__CHANCE` - After click, **random** reward in order to its probability will be claimed.
* `LUCKY_WHEEL` - After click, new GUI will be opened. There, **random** reward from list selected for that day will be claimed. It is the same option as `QUICK__RANDOM`, but here is an animation.
* `LUCKY_WHEEL__CHANCE` - After click, new GUI will be opened. There, **random** reward in order to its probability will be claimed. It is the same option as `QUICK__CHANCE`, but here is an animation.

For two options below. After click, new GUI will be opened. There, player can choose one of X rewards from list selected for that day.

* `SELECTOR__HIDDEN` - All rewards are hidden, so player does not know what reward he is claiming.
* `SELECTOR__VISIBLE` - All rewards are visible, represented by icon, so player knows what reward he is claiming.

Default choice type, if type is not assigned to specific day.

```yaml
Options:
  AdventCalendar:
    Reward:
      DefaultChoiceType: "QUICK__BASE"
```

### Benefit

By opening all windows in calendar, you can reward players with **extra** gift.

```yaml
Options:
  AdventCalendar:
    Reward:
      Benefit:
        Active: true
```

## Figure (Santa)

Via **Figure**, players are able to open Advent Calendar. Santa also displays current status of the season.

System offers pre-defined **Armor Stand**, with clothes and head. All values can be changed in the configuration file. System also supports **NPC**, you can aslo equip it with armor or items.

{% hint style="warning" %}
Warning at placing the Figure. Santa copies your locations and also facing direction!
{% endhint %}

{% hint style="info" %}
To place Santa type: `/AdventCalendar Figure Place`
{% endhint %}

If you have own Armor Stand, you can link it with Advent Figure. It only creates Holograms above the Armor Stand.

{% hint style="info" %}
To link Advent Calendar with the nearest Armor Stand in your range type: `/AdventCalendar Figure Link`
{% endhint %}

### Mode

List of modes mentioned above:

* NONE
* ARMOR\_STAND
* PLAYER
* HOLOGRAM

```yaml
Options:
  AdventCalendar:
    Figure:
      Mode: "ARMOR_STAND"
```

### Particle

At location where the Santa is placed, **particles** are spawned.

```yaml
Options:
  AdventCalendar:
    Figure:
      Particle:
        Active: true
```

## Calendar Interface (GUI)

Calendar interface is the main part of the whole module, that's the reason it must looks perfect. And you can configure it to your requirements.

### Slots

Specify slots, where the windows will be placed.

```yaml
Options:
  GUI:
    AdventCalendar:
      AdventCalendarGUI:
        Window:
          Slots: [ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 22, 26, 29, 31, 33, 36, 38, 40, 42, 44, 46, 48, 50, 52 ]ml
```

{% hint style="warning" %}
Count of slots must equal to duration of the season.
{% endhint %}

### Order

Specify the order of the day assigned to slot of the window.

* `RANDOM` - Days are assigned to window in random order. Shuffle order is created after loading of the plugin.
* `ASCENDING` - Days are assigned to window in ascending order. The first one is on the left top side, and the last one is on the right down side.
* `DESCENDING` - Days are assigned to window in descending order. The first one is on the right down side, and the last one is on the left top side.

```yaml
Options:
  GUI:
    AdventCalendar:
      AdventCalendarGUI:
        Window:
          Order: "RANDOM"
```

### Window's icon

Opened window has another visual icon as closed or missed window.

* `ICON` - Icon of reward is used as opened window.
* `DEFAULT` - Item from configuration is used as opened window.

```yaml
Options:
  GUI:
    AdventCalendar:
      AdventCalendarGUI:
        Window:
          ItemType: "ICON"
```
