> For the complete documentation index, see [llms.txt](https://docs.xandtech.fr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.xandtech.fr/home/xplayerexp/features/double-xp.md).

# Double XP Events

A timed, server-wide multiplier on every XP gain, with a live boss bar and its own permission-based bonus layer on top.

## Starting & ending an event

```
/bottlexp doublexp start <multiplier> [duration]
/bottlexp doublexp end
```

* `<multiplier>` must be greater than `1.0`.
* `[duration]` is in seconds, defaults to `3600` (1 hour) if omitted.
* Needs `doublexp.commands.start-permission` (`xplayerexp.doublexp.start` by default) to start, `end-permission` (`xplayerexp.doublexp.end`) to end — see [`doublexp.yml`](/home/xplayerexp/reference/configuration-files.md#doublexp-yml).

Starting an event while one is already running is rejected — end the current one first. Ending broadcasts a plain message to the server; starting broadcasts too, on top of the boss bar appearing for everyone online.

## The boss bar

```yaml
bossbar:
  enabled: true
  color: "BLUE"
  style: "SOLID"
  title: "&d&lEVENT &8» &fDouble XP &b%multiplier%x &7(%time% remaining)"
```

Shown to every online player for the event's duration, updating every second: the progress bar drains from full to empty as `duration` elapses, and `%multiplier%`/`%time%` in `title` update live. `color`/`style` accept any Bukkit `BarColor`/`BarStyle` name. Set `enabled: false` to run events without a boss bar at all.

## How the multiplier is applied

Every `PlayerExpChangeEvent` (vanilla or from any other plugin) has its amount multiplied by the **final multiplier**: the event's `<multiplier>` (or `1.0` if no event is running) **times** the player's own bonus multiplier from `bonus-permissions` below. The two stack multiplicatively, not additively.

```yaml
bonus-permissions:
  - "xplayerexp.bonus.1.5x": 1.5
  - "xplayerexp.bonus.2x": 2.0
  - "xplayerexp.bonus.3x": 3.0
```

Same tiered logic as the bottle limits: a player holding **none** of these gets `1.0` (no bonus), and one holding **several** gets the **highest** value among them — this applies whether or not an event is currently running, so a VIP's personal bonus works even outside events.

{% hint style="info" %}
An optional chat line (`double-xp.gain-bonus` in the [language file](/home/xplayerexp/getting-started/getting-started.md#language)) can announce each boosted gain to the player — leave it blank to disable, since it can get spammy on servers with frequent small XP gains.
{% endhint %}

## Messages & permissions (`doublexp.yml`)

```yaml
commands:
  start-permission: "xplayerexp.doublexp.start"
  end-permission: "xplayerexp.doublexp.end"
  start: "start"
  end: "end"

messages:
  started: "&aDouble XP event started! Multiplier: &e%x%&a for &e%duration%&a."
  ended: "&cDouble XP event ended."
  already-running: "&cA Double XP event is already running."
  not-running: "&cNo Double XP event is currently running."
  no-permission: "&cYou don't have permission to use this command."
```

`start`/`end` here are the literal words used as the second argument (`/bottlexp doublexp <start|end>`) — renameable independently from the `doublexp` subcommand keyword itself. See [Custom Commands](/home/xplayerexp/features/custom-commands.md).

## Placeholders

`%xplayerexp_event_active%`, `%xplayerexp_event_multiplier%`, `%xplayerexp_event_time_left%`, `%xplayerexp_multiplier%` (final, combined) and `%xplayerexp_base_multiplier%`/`%xplayerexp_permission_bonus%` (the two components separately) — full list in [PlaceholderAPI](/home/xplayerexp/reference/placeholderapi.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.xandtech.fr/home/xplayerexp/features/double-xp.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
