Configuration Reference
Complete guide to configuring SSoggySouls to match your server’s needs.
Table of Contents
- Overview
- Server Role
- Security Settings
- Database Configuration
- Lives System
- Death Modes
- Limbo Settings
- HRM Features
- Extra Life Item
- Messages & Colors
- Advanced Options
Overview
SSoggySouls uses a config.yml file that is automatically generated when you first run the plugin. This file is highly customizable and includes detailed comments explaining each setting.
Location: plugins/SSoggySouls/config.yml on both servers
Important: After editing the config file, either:
Restart both servers, or
Run
/psadmin reloadto reload without restart (some changes may require restart)
Server Role
These settings identify what role each server plays in your network.
Main Server Configuration
# CRITICAL: Set this correctly!
is-limbo-server: false # This is the Main server (survival)
# Must match your Velocity/proxy configuration
main-server-name: "main" # Name of Main server in proxy config
limbo-server-name: "limbo" # Name of Limbo server in proxy config
Limbo Server Configuration
# CRITICAL: Set this correctly!
is-limbo-server: true # This is the Limbo server (purgatory)
# Must match your Velocity/proxy configuration
main-server-name: "main" # Name of Main server in proxy config
limbo-server-name: "limbo" # Name of Limbo server in proxy config
Tip: The server names must exactly match the server names in your
velocity.tomlfile.
Security Settings
Limbo OP Security Check
limbo-op-security-check: true # Prevent Limbo-only OPs from using admin commands
Important Security Feature: This setting prevents a critical security vulnerability where users with OP status only on the Limbo server could execute privileged commands like /revive and /psadmin.
Why This Matters
If you give someone OP on the Limbo server (for example, to manage the Limbo world), they could potentially:
-
Revive any dead player using
/revive <player> -
Modify player lives with
/psadmin lives -
Force-kill players with
/psadmin kill -
Grant grace periods with
/psadmin grace -
Reset player data with
/psadmin reset
How It Works
When enabled (recommended), this security check will:
-
Block all OP users on the Limbo server from executing admin/revive commands
-
Allow OP users with the bypass permission
ssoggysouls.bypass-limbo-op-security -
Allow non-OP users with explicit permission nodes
-
Allow commands on the Main server regardless of how permissions are granted
-
Allow console to always execute commands
Granting Proper Permissions
To allow a user to execute admin commands on the Limbo server, you have three options:
Option 1: Use the Whitelist (Easiest - No permissions plugin required)
# In config.yml
limbo-trusted-admins:
- "069a79f4-44e9-4726-a5be-fca90e38aaf5" # UUID format (recommended)
- "YourUsername" # Username format also works
-
UUIDs are recommended (won’t break if player changes name)
-
Usernames are easier to manage
-
No permissions plugin required
-
After editing config.yml, apply changes by running
/psadmin reloadfrom the server console or from an already bypassed/whitelisted account, or by restarting the server
Option 2: Grant bypass permission (requires LuckPerms or similar)
# Allows OP users to execute commands on Limbo server
/lp user <player> permission set ssoggysouls.bypass-limbo-op-security true
Option 3: Grant explicit permissions without OP
# Remove OP status first, then grant explicit permissions
/deop <player>
# For revival commands:
/lp user <player> permission set ssoggysouls.revive true
# For all admin commands:
/lp user <player> permission set ssoggysouls.admin true
Tip: Use Option 1 (whitelist) if you don’t have a permissions plugin installed. It’s the simplest and works out-of-the-box.
Disabling the Security Check
limbo-op-security-check: false # NOT RECOMMENDED
Set to false only if:
-
You trust all OPs on your Limbo server completely
-
You have other security measures in place
-
You’re testing the plugin in a development environment
Security Recommendation: Keep this enabled (
true) in production environments.
Database Configuration
This plugin supports two types of databases:
1. SQLite (Local - Single Server)
Ideal for standard, single-server setups. No extra setup required. Data is stored locally.
database:
type: "sqlite"
2. MySQL (Network - 2-Server Setup)
REQUIRED if you are using the true 2-server (Main + Limbo) functionality. Both servers must use identical database credentials or player records will be split!
database:
type: "mysql"
host: "localhost" # Database host
port: 3306 # Database port (default: 3306)
name: "ssoggysouls" # Database name
username: "root" # MySQL username
password: "changeme" # MySQL password - CHANGE THIS!
pool-size: 5 # Connection pool size
table-name: "hardcore_players" # Table name (default is fine)
Pool Size Recommendations
-
Small servers (1-20 players): 5
-
Medium servers (20-50 players): 10
-
Large servers (50+ players): 15-20
For Pterodactyl Hosting
Use the database host provided by your hosting panel, not “localhost”:
database:
host: "db-pterodactyl.c9akciq32cpl.us-east-1.rds.amazonaws.com"
port: 3306
name: "s123_ssoggysouls"
username: "u123_admin"
password: "your_secure_password"
Lives System
Configure how the lives mechanic works.
lives:
default: 2 # Starting lives for new players
max-lives: 5 # Maximum lives cap
on-revive: 1 # Lives restored when revived
grace-period: "24h" # New player protection period
revive-cooldown-seconds: 30 # Post-revival death protection
Default Lives
default: 2
Starting number of lives for newly joined players. Common values:
-
1- Hardcore (one life) -
2- Standard (two lives) -
3- Casual (three lives)
Maximum Lives
max-lives: 5
The highest number of lives a player can have. They cannot use extra life items or commands to exceed this cap.
Lives on Revival
on-revive: 1
How many lives a dead player gets back when revived. Options:
-
1- Revived players get 1 life (requires teamwork to get more) -
2- Revived players get 2 lives (more forgiving) -
Set to any value that makes sense for your server
Grace Period
grace-period: "24h"
New player protection that prevents losing lives during the grace period. The timer counts only when the player is online (pauses when offline).
Format Options:
-
"24h"= 24 hours -
"2h30m"= 2 hours 30 minutes -
"90m"= 90 minutes -
"0"= Disabled (no grace period)
Example: A new player with “24h” grace who plays 3 hours, logs off, then returns will have 21 hours remaining.
Revive Cooldown
revive-cooldown-seconds: 30
After being revived, a player is protected for this duration and cannot lose lives from deaths. Gives them time to get situated.
Death Modes
Choose how your server handles player death.
main:
death-mode: "hybrid" # hybrid | spectator | limbo
hybrid-timeout-seconds: 300 # Timeout for hybrid mode (5 min)
spectator-on-death: false # Put in spectator before Limbo
detect-hrm-revive: true # Auto-detect ritual structure revivals
send-to-limbo-delay-ticks: 20 # Delay before Limbo transfer (1 sec)
Hybrid Mode (Default - Recommended)
death-mode: "hybrid"
hybrid-timeout-seconds: 300
Behavior:
-
Player loses a life and enters spectator mode on Main
-
Team has 5 minutes (configurable) to revive them
-
If not revived within timeout, player transfers to Limbo
-
If player disconnects while dead, they skip spectator and go straight to Limbo
Best For: Servers wanting tension and urgency - gives teams a limited rescue window.
Timeout Options:
-
300= 5 minutes (default) -
180= 3 minutes (faster) -
600= 10 minutes (more generous)
Spectator Mode
death-mode: "spectator"
spectator-on-death: true
Behavior:
-
Player loses a life and enters spectator mode
-
Player stays on Main server indefinitely
-
Never auto-transfers to Limbo
-
Can only be sent to Limbo by dying without lives or admin command
Best For: Servers preferring dead players to spectate their team constantly without forced exile.
Limbo Mode (Strict)
death-mode: "limbo"
Behavior:
-
Player loses a life
-
Upon reaching 0 lives, player immediately transfers to Limbo
-
No spectator window
Best For: Hardcore servers enforcing strict separation between living and dead.
HRM Revival Detection
detect-hrm-revive: true
When enabled, the plugin automatically detects when a ritual structure is completed and performs the revival. Leave this enabled unless troubleshooting.
Limbo Transfer Delay
send-to-limbo-delay-ticks: 20
Delay in ticks before sending a player to Limbo (20 ticks = 1 second). Gives time for other events to process. Usually no need to change.
Limbo Settings
Configure the Limbo server (only applies on Limbo server).
limbo:
check-interval-seconds: 3 # How often to check for revivals
spawn:
world: "world"
x: 0.5
y: 65.0
z: 0.5
yaw: 0.0
pitch: 0.0
Check Interval
check-interval-seconds: 3
How frequently the Limbo server checks the database for revival requests. Lower = more responsive, higher = less database load.
-
1- Very responsive (high database load) -
3- Balanced (default, recommended) -
5- Less responsive (low database load)
Spawn Location
spawn:
world: "world" # World name
x: 0.5 # X coordinate
y: 65.0 # Y coordinate
z: 0.5 # Z coordinate
yaw: 0.0 # Horizontal rotation (0 = north)
pitch: 0.0 # Vertical rotation (0 = level, 90 = down)
Set the spawn location where dead players appear on Limbo. Use the /setlimbospawn command to set this automatically:
- Stand at desired spawn location on Limbo
- Run
/setlimbospawn - Coordinates are automatically saved
HRM Features
Configure the built-in Hardcore Revive Mode system.
hrm:
enabled: true # Master HRM toggle
drop-heads: true # Drop player heads on death
death-location-message: true # Send death coords to player
structure-revive: true # Enable 3x3x3 ritual structures
leave-structure-base: true # Don't destroy structure after revive
head-wearing-effects: true # Speed/night vision when wearing heads
revive-skull-recipe: true # Enable Revive Skull crafting
Enable/Disable HRM
enabled: true
Master toggle for all HRM features. Set to false to disable everything related to HRM.
Player Head Drops
drop-heads: true
When a player loses all lives, their head drops at the death location. These heads are used in ritual structures for revival.
Death Location Messages
death-location-message: true
When a player dies, send them a message with the death coordinates to help their teammates locate their dropped head.
Example Message:
Death coordinates: X: 1234 Y: 64 Z: -5678
Structure-Based Revival
structure-revive: true
Enable the 3x3x3 ritual structure revival system. When disabled, ritual structures won’t trigger revivals.
Leave Structure Base
leave-structure-base: true
If true, the base structure remains after revival (only the player head is removed).
If false, the entire structure is destroyed upon successful revival.
Head Wearing Effects
head-wearing-effects: true
When a player wears a dead player’s head, they receive:
-
Speed II effect
-
Night Vision effect
Tactical advantage while carrying heads to revival structures.
Revive Skull Recipe
revive-skull-recipe: true
Enable crafting of Revive Skull items. The recipe is:
| | | | | — | — | — |
| Obsidian | Ghast Tear | Obsidian |
| Totem of Undying | Any Skull/Head | Totem of Undying |
| Obsidian | Ghast Tear | Obsidian |
Extra Life Item
Configure the craftable item that grants additional lives.
extra-life:
enabled: true
item-material: "NETHER_STAR" # Icon displayed in menus
recipe:
row1: "DED" # Row 1: Diamond, Emerald, Diamond
row2: "INI" # Row 2: Netherite Ingot, Nether Star, Netherite Ingot
row3: "GEG" # Row 3: Gold Block, Emerald Block, Gold Block
ingredients:
G: "GOLD_BLOCK"
E: "EMERALD_BLOCK"
N: "NETHER_STAR"
D: "DIAMOND_BLOCK"
I: "NETHERITE_INGOT"
Enable/Disable
enabled: true
Set to false to disable extra life crafting entirely.
Item Icon
item-material: "NETHER_STAR"
The item used as the icon in menus and crafting results. Any valid Minecraft material works (common choices: NETHER_STAR, GOLDEN_APPLE, DIAMOND, EMERALD).
Custom Recipe
To create a custom recipe:
- Define the layout in
row1,row2,row3using letters - Map each letter to a material in
ingredients
Example: Simple Diamond Recipe
recipe:
row1: "DDD"
row2: "DED"
row3: "DDD"
ingredients:
D: "DIAMOND_BLOCK"
E: "EMERALD_BLOCK"
Result: 9 Diamond Blocks with 1 Emerald Block in the center.
Valid Material Names:
Any Minecraft material name in SCREAMING_SNAKE_CASE:
-
Blocks:
DIAMOND_BLOCK,GOLD_BLOCK,EMERALD_BLOCK,OBSIDIAN, etc. -
Items:
NETHER_STAR,GOLDEN_APPLE,DRAGON_EGG, etc.
Finding Material Names:
Check Minecraft Material Constants or look at org.bukkit.Material enum.
Messages & Colors
Customize all player-facing messages and notification colors.
messages:
prefix: "&8[&4☠&8] &r"
death-life-lost: "&cYou lost a life! &7Remaining: &e%lives%"
death-last-life: "&c&l⚠ FINAL WARNING! &cYou are on your last life. Be careful!"
revive-success: "&a&l✦ REVIVED! &aReturning to the world of the living..."
# ... many more messages
Color Codes
-
&0= Black -
&c= Red -
&a= Green -
&e= Yellow -
&9= Blue -
&d= Magenta -
&b= Cyan -
&f= White -
&7= Gray -
&8= Dark Gray
Formatting Codes
-
&l= Bold -
&m= Strikethrough -
&n= Underline -
&o= Italic -
&r= Reset
Available Variables
-
%lives%- Player’s current lives -
%player%- Player name -
%timeout%- Timeout duration (hybrid mode) -
%time_remaining%- Grace period remaining -
%max%- Maximum lives
Example: Custom Messages
messages:
prefix: "&8[&cDEATH&8] &r"
death-life-lost: "&cOh no! &7You lost a life. &eRemaining: %lives%/%max%"
death-last-life: "&c&l💀 CRITICAL! &cThis is your LAST life!"
revive-success: "&a&l✓ &aYou have been revived! Stay alive this time!"
grace-remaining: "&eYou are protected for &a%time_remaining%"
Advanced Options
check-for-updates: true # Check for new versions on Modrinth
hardcore-hearts: true # Display hardcore hearts cosmetically
debug: false # Enable debug logging (dev only)
Update Checking
check-for-updates: true
When enabled, the plugin checks Modrinth on startup for newer versions and displays update notices in console.
Hardcore Hearts
hardcore-hearts: true
Display Minecraft’s hardcore-style hearts (half-hearts instead of full hearts). This is cosmetic only and doesn’t affect gameplay.
Requires client mod support or resource pack to display properly
Debug Logging
debug: false
Enable detailed debug logging to console. Only useful for troubleshooting. Turn on if you’re having issues and need more information.
Configuration Examples
Hardcore Server (One Life)
lives:
default: 1
max-lives: 1
on-revive: 0 # No lives on revive (need to craft extra life)
main:
death-mode: "limbo" # Immediate exile
Casual Server (Three Lives)
lives:
default: 3
max-lives: 5
on-revive: 2
grace-period: "48h" # Extended grace for new players
main:
death-mode: "hybrid"
hybrid-timeout-seconds: 600 # 10 minute timeout
Competitive Server (Spectator Focus)
lives:
default: 2
max-lives: 3
grace-period: "0" # No grace period
main:
death-mode: "spectator" # Dead players watch forever
Reloading Configuration
To reload configuration without restarting:
/psadmin reload
Note: Some changes take effect immediately, others may require:
-
Player rejoin
-
Server restart
-
Plugin reload
Need Help?
| ← Commands Reference | Back to Home | Revival System → |