Troubleshooting Guide 🛠️
This guide provides steps to help you diagnose and resolve common issues with VelocityPteroPower (VPP).
1. Preliminary Checks ✅
- Latest VPP Version: Ensure you are running the latest stable release of VelocityPteroPower. Check the Modrinth Page or use the in-plugin update checker (if
checkUpdate: true
inconfig.yml
). - Velocity Version: Confirm your Velocity proxy version is compatible. VPP is generally built against recent Velocity API versions.
2. Enable Debug Logging 📝
This is the most crucial step for effective troubleshooting.
- Open
plugins/VelocityPteroPower/config.yml
. - Locate the
loggerLevel
setting. - Change its value to
10
:yamlloggerLevel: 10 # From 20 (Info) to 10 (Debug)
- Save the
config.yml
file. - Execute
/ptero reload
in the Velocity console or restart the Velocity proxy.
Now, reproduce the issue you are experiencing. Carefully examine the Velocity console logs for messages prefixed with [VPP]
or VelocityPteroPower
, as well as any related stack traces or error messages.
Remember to Revert!
Once troubleshooting is complete, remember to set loggerLevel
back to 20
(Info) for normal operation to prevent excessive console spam.
3. Common Issues & Solutions
A. Server Not Starting/Stopping as Expected
Symptoms & Checklist
Symptoms:
- Players attempt to connect to an offline server, but it doesn't start.
- An empty server remains online despite
timeout
settings. - Commands like
/ptero start
or/ptero stop
seem to have no effect.
Checklist:
- Configuration Accuracy (
config.yml
):servers.<serverName>
: Does the server name (e.g.,hub
) exactly match the name defined in yourvelocity.toml
? (This is case-sensitive).servers.<serverName>.id
: Is this the correct short alphanumeric ID from your panel for that specific server (e.g.,a1b2c3d4
from the panel URL), not a long Docker container ID or full UUID?pterodactyl.url
: Is this the full, correct base URL to your panel, includinghttp://
orhttps://
(e.g.,https://panel.example.com/
)?pterodactyl.apiKey
:- Is it a Client API Key (starts
ptlc_
for Pterodactyl orplcn_
for Pelican)? - Application API Keys (
ptla_
,peli_
) are NOT supported. - Does the key have the necessary permissions on the panel (e.g., control power signals, read server files if using the whitelist feature)?
- Is it a Client API Key (starts
- Panel API Connectivity:
- From the machine running your Velocity proxy, can you access the panel URL in a browser or via
curl
? - Check VPP's startup logs (with debug enabled) for messages like "Successfully connected to panel" or errors like "Invalid API Key," "Failed to initialize Panel API Client," or connection timeouts.
- From the machine running your Velocity proxy, can you access the panel URL in a browser or via
- API Rate Limits:
- Set
printRateLimit: true
inconfig.yml
. - Look for console messages from VPP indicating "Rate limit reached" or "API request blocked due to rate limiting." If you see these, your panel is temporarily throttling requests from VPP.
- Set
serverStatusCheckMethod
(config.yml
):- If
VELOCITY_PING
: Is the backend server's IP address and port correctly configured invelocity.toml
? Is the server network-reachable from the proxy machine? Is thepingTimeout
value inconfig.yml
sufficient? - If
PANEL_API
: This method relies entirely on the panel API being responsive and accurate.
- If
- Whitelist Feature (for server starting issues):
- If
whitelist: true
is set for the server inconfig.yml
:- Is the connecting player listed in that server's
whitelist.json
file on the panel? - If
whitelistAllowBypass: true
is also set, does the player have theptero.bypass
permission? - Remember: Whitelist fetching is not supported for MC Server Soft panels.
- Is the connecting player listed in that server's
- If
timeout
/idleStartShutdownTime
(for server stopping issues):- For per-server auto-shutdown: Is
timeout:
inservers.<serverName>:
set to a positive number (seconds)? A value of-1
disables it. - For servers started but never joined: Is
idleStartShutdownTime:
(global) set to a positive number?-1
disables it.
- For per-server auto-shutdown: Is
- Backend Server Logs (Panel Console):
- Always check the console output of the actual Minecraft server on the Pterodactyl/Pelican panel. Are there errors there preventing it from starting up correctly or shutting down cleanly? VPP can only send signals; it can't fix underlying issues with the Minecraft server itself.
B. Limbo Server Functionality Issues
Symptoms & Checklist
Symptoms:
- Players are disconnected instead of being sent to the limbo server.
- Players are sent to limbo but never transferred to the target server.
Checklist:
limboServer
Configuration (config.yml
):- Is the server name specified in
limboServer:
an exact match (case-sensitive) for a server defined in yourvelocity.toml
? - Is it still set to the default
"changeMe"
?
- Is the server name specified in
- Limbo Server Accessibility:
- Is the server designated as your limbo server actually online and joinable directly via Velocity (e.g., using
/server limboServerName
)? - If your limbo server is also managed by VPP, check its own configuration within the
servers:
section ofconfig.yml
. Ensure itstimeout
is set appropriately (e.g.,-1
to prevent it from auto-shutting down, or a very shorttimeout
if it's designed to be ephemeral but also quick to start via VPP).
- Is the server designated as your limbo server actually online and joinable directly via Velocity (e.g., using
- VPP Logs (Debug Enabled):
- Look for messages like "Redirecting player to limbo server..." or any errors related to finding, pinging, or connecting to the limbo server.
- Check for messages about the target server's startup progress when a player is in limbo.
C. Whitelist Feature Not Working Correctly
Symptoms & Checklist
Symptoms:
- Players who should be whitelisted are denied by VPP (or vice-versa).
- The
/ptero whitelistReload
command shows errors or doesn't seem to update.
Checklist:
whitelist: true
: Is this set for the specific server(s) in theservers:
section ofconfig.yml
?MC Server Soft Incompatibility
The panel API functionality required for VPP to fetch
whitelist.json
is not available on MC Server Soft panels. If VPP detects this panel type, the whitelist feature will be effectively disabled, and warnings may be logged.- Panel API Key Permissions: Your Client API Key (
ptlc_
orplcn_
) must have permissions on the panel to read server files (specifically, to accesswhitelist.json
for the relevant servers). - File Path & Name: VPP expects the whitelist file to be named exactly
whitelist.json
and located in the root directory of the Minecraft server's files on the panel. whitelist.json
Format: Is thewhitelist.json
file on the panel correctly formatted JSON? (e.g.,[{"uuid": "...", "name": "..."}, ...]
)- VPP Logs (Debug Enabled): Look for:
- "Fetching whitelist for server
serverName
..." - "Updated whitelist for server
serverName
:X
players" - Error messages like "Failed to fetch whitelist for server...", "Error parsing whitelist JSON...", or "Whitelist file not found for server...".
- "Fetching whitelist for server
whitelistCheckInterval
: If you expect periodic automatic updates, ensure this is set to a positive value (in minutes).
D. HTTP/2 "GOAWAY" Errors in Logs
Symptoms & Explanation
Symptoms:
- Debug logs show messages containing "GOAWAY" during API requests to the panel.
Explanation: This typically indicates a temporary issue with the HTTP/2 connection between your Velocity server and the panel. It can be caused by the panel itself, network intermediaries (like reverse proxies or Cloudflare), or transient network conditions. VPP includes some internal retry logic for these specific errors.
Solutions:
- Often, these are transient and may resolve themselves.
- If persistent:
- Check the health and logs of your Pterodactyl/Pelican panel.
- Investigate the network path between your Velocity server and the panel.
- If using Cloudflare or another reverse proxy in front of your panel, check its configuration and logs for any HTTP/2 related issues or connection resets.
E. Plugin Fails to Load or Throws Errors on Velocity Startup
Symptoms & Checklist
Symptoms:
- VelocityPteroPower does not appear in
/velocity plugins
. - Errors related to
de.tubyoub.velocitypteropower
appear in the console during Velocity's startup sequence.
Checklist:
- Java Version: VPP
0.9.4
(as per yourpom.xml
) requires Java 21 or higher. Ensure your Velocity proxy is running on a compatible Java version. Usejava -version
in your server's terminal. - Corrupted JAR File: The downloaded
VelocityPteroPower.jar
might be corrupted. Try re-downloading it from the official source (Modrinth/GitHub Releases). - Incomplete Upload: Ensure the JAR file was fully uploaded to your server's
plugins
directory. - File Permissions: Unlikely, but ensure the Velocity process has read access to the JAR file.
config.yml
Syntax Errors (Severe Cases): While VPP uses BoostedYAML which is robust, a severely malformedconfig.yml
(e.g., completely broken YAML syntax) could theoretically cause loading issues. If you suspect this, back up your currentconfig.yml
, delete it from theplugins/VelocityPteroPower/
folder, and let VPP regenerate a default one on the next startup. Then, carefully re-apply your settings.- Conflicting Plugins (Very Rare): In extremely rare cases, another Velocity plugin might cause a severe classpath conflict if it bundles incompatible versions of shared libraries that VPP also uses (though VPP shades its dependencies like BoostedYAML and Jackson to minimize this). If VPP only fails to load when certain other plugins are present, this might be a factor to investigate.
4. Providing Information for Support 🆘
If you've gone through these steps and are still stuck, please seek help! The best place is the Support Discord Server.
When asking for support, please provide as much of the following information as possible to help us diagnose the issue quickly and effectively:
- VelocityPteroPower Version: (e.g.,
0.9.4
) - Velocity Version: (e.g.,
3.3.0-SNAPSHOT (git-...)
- get from/velocity version
) - Panel Type & Version: (e.g., Pterodactyl 1.11.5, Pelican 0.8.2)
- Java Version:
- Your
config.yml
:Mask API Key!
Before sharing your
config.yml
, ALWAYS MASK YOURapiKey
like this:apiKey: "ptlc_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
- Preferred Sharing Method: Please upload your
config.yml
(with masked API key) to Pastebin and provide the link.
- Preferred Sharing Method: Please upload your
- Relevant
messages.yml
(if you've customized it and it relates to the issue). You can also use Pastebin for this. - Detailed Console Logs (with Debug Enabled):
- Ensure
loggerLevel: 10
is set in yourconfig.yml
. - Capture logs from the moment Velocity starts up through the point where the issue occurs.
- Preferred Sharing Method: Please upload your full console logs to mclo.gs and provide the link. This site is specifically designed for Minecraft logs and offers helpful analysis.
Do Not Paste Directly
Please do not paste long logs or configuration files directly into Discord channels. Use the recommended services above and share the links.
- Ensure
- A Clear Description of the Issue:
- What did you expect to happen?
- What actually happened?
- Were there any specific error messages shown to players or in the console that weren't in the full log?
- Steps to Reproduce the Issue: If you can reliably make the issue happen, list the exact steps.
The more detailed and accurately formatted information you provide using these services, the easier and faster it will be for the community or developers to assist you!