# Frequently Asked Questions
## General
### What Java version do I need?
- **Plugin builds**: Java 17 minimum, or the newer Java version required by your server. These jars do not run on Java 8.
- **Stable mods**: Java 17+ for Fabric 1.20.1 and Forge 1.20.4; Java 21+ for NeoForge 1.21.1.
- **26.1 / 26.2 / 26.3 mod ports**: Java 25 and the artifact matching your loader and exact Minecraft version.
- **Building from source**: the stable build uses Java 17 and 21 toolchains; the separate `modern/` build uses Java 25 and Gradle 9.7.1.
### Does RedstoneReboot support Folia?
Yes. The Bukkit build includes an automatic Folia scheduler bridge that detects Folia at runtime and switches to the region-threaded `GlobalRegionScheduler`. There is also a dedicated `RedstoneReboot-Folia` jar for explicit Folia deployments.
### Why does the startup log mention Halloween?
Version 1.6.4 adds a seasonal Easter egg that runs during October based on the server JVM's local calendar.
---
## Configuration
### My timezone isn't working
Use a valid Java `ZoneId` string such as `Europe/London`, `America/New_York`, or `UTC`. Short abbreviations like `IST` or `EST` are ambiguous and may not resolve correctly. Run `/reboot status` after startup to confirm the active timezone.
### Can I change the backend without restarting the server?
Yes. Edit `restart-backends.properties` and then run `/reboot reload`. The engine re-reads the backend configuration and re-initializes the active backend live.
### What does `metrics-enabled` do?
When set to `true` in `config.yml`, RedstoneReboot reports anonymous usage statistics to [bStats](https://bstats.org/plugin/bukkit/RedstoneReboot/30751). This helps the development team understand which platforms and features are most used. You can opt out by setting it to `false`.
---
## Commands
### Commands are not appearing
- **Plugin builds**: Check that the plugin loaded by running `/plugins`. Verify `plugin.yml` registered the `reboot` command.
- **Mod builds**: Confirm the dedicated server finished startup and the Brigadier command tree was registered. Check the server log for `RedstoneReboot command registered`.
### What does `/reboot doctor` do?
It runs a diagnostic that shows:
- The active restart backend and its verification state
- The detected server environment (Systemd, Docker, Pterodactyl, or generic)
- Any mismatches between your chosen backend and the detected environment
- Whether a lockout is currently active
---
## PlaceholderAPI
### My placeholders aren't working in MOTD
Make sure you are running RedstoneReboot **v1.3.3+**, which includes null-safety fixes for MOTD compatibility. Earlier versions could fail silently when MOTD plugins requested placeholders during server-list pings before the server fully started.
Also verify that `placeholders.enabled` is set to `true` in `config.yml` and that PlaceholderAPI is installed.
### What placeholders are available?
See the full list on the [Placeholders](Placeholders.md) wiki page.
---
## Backends
### `/reboot doctor` says "Potential Mismatch"
This means the backend you configured in `restart-backends.properties` does not match the environment RedstoneReboot detected. For example, selecting `SYSTEMD` while running inside a Docker container. Review the [Backend Guide](Backends.md) and adjust your `active-backend` value.
### `/reboot doctor` shows DEPEND_ON_HOST but restarts work fine
This is expected if your server is **managed by an external process supervisor** (systemd with `Restart=always`, Docker with `restart: always`, Pterodactyl panel, etc.).
Here is what happens:
1. `ShutdownOnlyBackend.execute()` returns `ACCEPTED` — the shutdown sequence runs normally
2. The server process stops gracefully
3. Your host environment detects the exit and starts a new process
The doctor output reports `DEPEND_ON_HOST` because RedstoneReboot hands off process ownership to the host environment after shutdown.
Check the **Detected Env** line in `/reboot doctor`. If it displays SYSTEMD, DOCKER, or PTERODACTYL alongside DEPEND_ON_HOST, your setup is healthy. You can configure the matching backend in `restart-backends.properties` if you prefer direct API control.
### Why does `/reboot doctor` show the ASSISTED state?
When an external supervisor backend (such as `LOCALSCRIPT`, `SYSTEMD`, or `DOCKER`) is configured, RedstoneReboot verifies whether an external watcher or restart loop is active (`-Dredstonereboot.active=true` or `REDSTONEREBOOT_ACTIVE=1`). Until that proof is present, it reports the **`ASSISTED`** state to prevent the server from shutting down and staying offline permanently.
If your hosting panel already restarts stopped servers automatically (like Pterodactyl, Bloom, or PebbleHost), you do not need external backends or startup flags! Simply keep `backends-enabled=false` or set `active-backend=DEPEND_ON_HOST`.
### What is the lockout?
When a backend returns an uncertain result (e.g., a Pterodactyl API timeout), RedstoneReboot enforces a temporary lockout period (`lockout-duration-seconds` in backend config) to prevent conflicting restart calls.
---
## bStats
### How do I opt out of bStats?
Set `metrics-enabled: false` under the `advanced:` section in `config.yml`. Alternatively, you can disable bStats globally through the bStats config file at `plugins/bStats/config.yml`.
---
**RedstoneReboot** · Multi-Platform Minecraft Server Restart Engine
*Maintained by [DemonZ Development](https://demonz.org)*