> 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/xtimerewards/features/admin-tools.md).

# Admin Tools

## Per-player management GUI

`/xtimerewards admin view <player>` opens a full management view of one player (online or offline), driven by `menus/admin-view.yml`:

* Shows every milestone for the target, **regardless of their permissions** (unlike the player-facing menu).
* **Left-click** a milestone: locks it — clears any existing claim and caps their playtime for that period just below the threshold, so it genuinely shows as locked/not-reached again.
* **Right-click**: unlocks it — clears any claim and bumps their playtime up to the threshold if needed, so it shows as reached/claimable **without** granting the reward. The player still has to claim it themselves.
* **Shift-click**: unlocks and immediately force-grants the reward, bypassing the reached-playtime check entirely.
* A "Reset All Playtime" button sets daily/weekly/monthly/yearly/total back to 0.
* A "Manage Streak" button opens the streak sub-menu (below).
* A "Reward History" button opens that player's [reward-history log](#reward-history-log).

### Streak sub-menu

Opened from the "Manage Streak" button (`menus/admin-view-streak.yml`): shows current/longest streak and banked freeze charges, with quick +1/+7/-1/-7 day buttons, +1/-1 freeze-charge buttons, and a reset button (click resets the current streak only; right-click also wipes the best-ever record). For an exact value instead of quick adjustments, use the equivalent [commands](/home/xtimerewards/reference/commands.md) (`/xtimerewards admin streak set/add/remove`, `.../freeze set/add/remove`).

## Reward history log

Every reward actually granted — milestone claims, streak tiers, streak-freeze item uses, leaderboard-reward payouts, and admin GUI/command actions — is appended to a chronological, per-player log, browsable (newest first) via the "Reward History" button or directly. Nothing here is guessable/predictable ahead of time; it's purely a record of what already happened, useful for support tickets ("did they actually get their reward?") and catching config mistakes.

Every admin action taken through the GUI or an admin command (locking/unlocking a milestone, adjusting a streak, resetting playtime...) is also logged here, tagged with which admin did it — so the history stays complete regardless of which path (menu or command) was used.

## Multi-account (shared-IP) detection

```yaml
alt-detection:
  enabled: true
```

Whenever a player joins from an IP address already associated with another known account, every online admin (`xtimerewards.admin`) is alerted in chat, and it's logged to the joining player's reward history. **Nothing is blocked automatically** — a shared IP is often entirely innocent (household, school, shared hosting NAT).

`/xtimerewards admin alts [page]` opens a browser of every detected group: a paginated list of shared IPs, click one to see the accounts behind it, click an account to jump straight into its [admin view](#per-player-management-gui).

{% hint style="warning" %}
Treat a shared-IP alert as a lead to investigate, not proof of rule-breaking. Combine it with other context (account creation dates, playtime patterns, whether the accounts ever play simultaneously) before taking any action.
{% endhint %}

## Data export

`/xtimerewards admin export [yaml|json|csv]` (defaults to `yaml`) dumps every known account's current counters — playtime (total + all four periods), streak (current/longest/freeze charges), lifetime AFK seconds, and AFK-mode seconds — to a timestamped file under `plugins/XTimeRewards/exports/`.

| Format | Notes                                                                                                                             |
| ------ | --------------------------------------------------------------------------------------------------------------------------------- |
| `yaml` | Nested structure, matches the plugin's own config style.                                                                          |
| `json` | Same nested structure, machine-readable.                                                                                          |
| `csv`  | One row per player; nested fields (playtime/streak) flattened into dotted column names (`playtime.total`, `streak.current`, ...). |

{% hint style="info" %}
This is a backup/reference snapshot, not a restore format — nothing reads an export file back in.
{% endhint %}

## Reload without restarting

`/xtimerewards admin reload` reloads config, language files, milestones, menus, and every reward file (streaks, leaderboard rewards, AFK-mode rewards, the streak-freeze craft recipe) — and re-checks for a plugin update. See [Commands](/home/xtimerewards/reference/commands.md) for the small set of settings that need a full restart instead (custom command aliases, storage backend changes).


---

# 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/xtimerewards/features/admin-tools.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.
