diff --git a/docs/guides/subscription-automation-guide.md b/docs/guides/subscription-automation-guide.md index 83a79e7..06c3b10 100644 --- a/docs/guides/subscription-automation-guide.md +++ b/docs/guides/subscription-automation-guide.md @@ -828,18 +828,432 @@ journalctl -u firefrost-discord-bot -f ## ⚙️ PART 3: LUCKPERMS GROUPS & PERMISSIONS -**This is the longest section - you'll configure 11 groups across 13 servers.** +**This is the most important section - you'll configure 13 groups (11 subscriber tiers + 2 staff ranks) that control all in-game permissions.** -### Step 1: Create LuckPerms Groups +**⚠️ IMPORTANT:** Because all 13 servers connect to the SAME MySQL database, you only need to do this ONCE. Changes sync automatically to all servers. -**Access ONE game server's console first (we'll sync to others after):** +--- -1. Go to https://panel.firefrostgaming.com -2. Click on any server (doesn't matter which - they all share the MySQL database) +## 🎯 CHOOSE YOUR METHOD + +You have **two ways** to create LuckPerms groups: + +### Method A: Web Editor (RECOMMENDED - Fast & Visual) +- ✅ **Time:** 30-45 minutes +- ✅ **Difficulty:** Easy (point and click) +- ✅ **Visual interface** - see group hierarchy, drag-and-drop permissions +- ✅ **Color picker** for chat prefixes +- ✅ **Built-in validation** - prevents mistakes +- ✅ **Better for learning** - understand the structure visually +- ⚠️ **Requires:** Server running, able to join in-game + +**Best for:** Holly (Lead Builder) who might need to adjust permissions later + +### Method B: Console Commands (Alternative - Exact & Reproducible) +- ⏱️ **Time:** 2-3 hours +- 📝 **Difficulty:** Moderate (lots of copy/paste) +- ✅ **Exact commands** - reproducible script +- ✅ **No internet upload** - stays on your servers +- ✅ **Good documentation** - can see exactly what was configured +- ⚠️ **Tedious:** ~150+ commands to paste one by one + +**Best for:** Documentation purposes, automated deployment, or if you prefer terminal + +--- + +**Choose one method below and follow those instructions:** + +--- + +## 🌐 METHOD A: WEB EDITOR (RECOMMENDED) + +### Step 1: Access the Web Editor + +1. **Join any Minecraft server** (doesn't matter which - they all share the database) +2. **Run this command in-game:** + ``` + /lp editor + ``` +3. **Click the link** that appears in chat (looks like `https://luckperms.net/editor/xxxxxxxx`) +4. **Web editor opens** in your browser + +**What you'll see:** +- Left sidebar: List of groups +- Main panel: Selected group's permissions and settings +- Top toolbar: Save, create group, import/export + +--- + +### Step 2: Create Subscriber Groups + +**Create these groups in order. For each group:** +1. Click **"Create Group"** button (top left) +2. Fill in the settings as shown below +3. Move to next group + +--- + +#### Group 1: Wanderer (Free) + +**Basic Settings:** +- **Name:** `wanderer` +- **Weight:** `10` +- **Display Name:** Wanderer +- **Parents:** None + +**Prefix:** +- Click **"Add Prefix"** +- **Priority:** 100 +- **Prefix:** `&7[Wanderer] ` (gray color) + - Use color picker or type `&7` for gray + +**Permissions:** None needed + +**Notes:** Default group for non-subscribers. No server access. + +--- + +#### Group 2: The Awakened ($1 one-time) + +**Basic Settings:** +- **Name:** `awakened` +- **Weight:** `20` +- **Parents:** Click "Add Parent" → Select `wanderer` + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&f[The Awakened] ` (`&f` = white) + +**Permissions:** +- Click **"Add Permission"** +- Add: `ftbessentials.home.set` → Set to `true` +- Add: `ftbessentials.home.teleport` → Set to `true` + +**Meta (Data):** +- Click **"Add Meta"** +- **Key:** `max-homes` | **Value:** `1` + +**Notes:** Entry tier. Gets server whitelist access and 1 home only. + +--- + +#### Group 3: Fire Elemental ($5/month) + +**Basic Settings:** +- **Name:** `fire_elemental` +- **Weight:** `30` +- **Parents:** `awakened` + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&c[🔥 Fire Elemental] ` (`&c` = red/fire orange) +- You can paste the 🔥 emoji directly + +**Permissions:** +- `ftbchunks.claim` → `true` +- `ftbessentials.rtp` → `true` + +**Meta:** +- `max-homes` → `5` +- `max-claimed-chunks` → `25` +- `rtp-cooldown` → `3600` (60 minutes in seconds) + +--- + +#### Group 4: Frost Elemental ($5/month) + +**Basic Settings:** +- **Name:** `frost_elemental` +- **Weight:** `30` +- **Parents:** `awakened` + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&b[❄️ Frost Elemental] ` (`&b` = cyan/frost blue) + +**Permissions:** +- `ftbchunks.claim` → `true` +- `ftbessentials.rtp` → `true` + +**Meta:** +- `max-homes` → `5` +- `max-claimed-chunks` → `25` +- `rtp-cooldown` → `3600` + +**Notes:** Same perks as Fire Elemental, different path/color. + +--- + +#### Group 5: Fire Knight ($10/month) + +**Basic Settings:** +- **Name:** `fire_knight` +- **Weight:** `40` +- **Parents:** `fire_elemental` + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&c[🔥 Fire Knight] ` + +**Meta:** +- `max-homes` → `10` +- `max-claimed-chunks` → `49` +- `max-force-loaded-chunks` → `4` +- `rtp-cooldown` → `1800` (30 minutes) + +**Permissions:** Inherits from Fire Elemental (no new permissions needed) + +--- + +#### Group 6: Frost Knight ($10/month) + +**Basic Settings:** +- **Name:** `frost_knight` +- **Weight:** `40` +- **Parents:** `frost_elemental` + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&b[❄️ Frost Knight] ` + +**Meta:** +- `max-homes` → `10` +- `max-claimed-chunks` → `49` +- `max-force-loaded-chunks` → `4` +- `rtp-cooldown` → `1800` + +--- + +#### Group 7: Fire Master ($15/month) + +**Basic Settings:** +- **Name:** `fire_master` +- **Weight:** `50` +- **Parents:** `fire_knight` + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&c[🔥 Fire Master] ` + +**Meta:** +- `max-homes` → `20` +- `max-claimed-chunks` → `100` +- `max-force-loaded-chunks` → `9` +- `rtp-cooldown` → `900` (15 minutes) + +--- + +#### Group 8: Frost Master ($15/month) + +**Basic Settings:** +- **Name:** `frost_master` +- **Weight:** `50` +- **Parents:** `frost_knight` + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&b[❄️ Frost Master] ` + +**Meta:** +- `max-homes` → `20` +- `max-claimed-chunks` → `100` +- `max-force-loaded-chunks` → `9` +- `rtp-cooldown` → `900` + +--- + +#### Group 9: Fire Legend ($20/month) + +**Basic Settings:** +- **Name:** `fire_legend` +- **Weight:** `60` +- **Parents:** `fire_master` + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&c[🔥 Fire Legend] ` + +**Meta:** +- `max-homes` → `35` +- `max-claimed-chunks` → `121` +- `max-force-loaded-chunks` → `16` +- `rtp-cooldown` → `600` (10 minutes) + +--- + +#### Group 10: Frost Legend ($20/month) + +**Basic Settings:** +- **Name:** `frost_legend` +- **Weight:** `60` +- **Parents:** `frost_master` + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&b[❄️ Frost Legend] ` + +**Meta:** +- `max-homes` → `35` +- `max-claimed-chunks` → `121` +- `max-force-loaded-chunks` → `16` +- `rtp-cooldown` → `600` + +--- + +#### Group 11: Sovereign ($499 lifetime) + +**Basic Settings:** +- **Name:** `sovereign` +- **Weight:** `100` +- **Parents:** `awakened` (not Legend - Sovereign is separate from paths) + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&6[⚡ Founder] ` (`&6` = gold/amber) + +**Permissions:** +- `ftbessentials.rtp` → `true` +- `ftbchunks.claim` → `true` + +**Meta:** +- `max-homes` → `50` +- `max-claimed-chunks` → `225` +- `max-force-loaded-chunks` → `81` +- **No rtp-cooldown meta** (unlimited /rtp for Sovereign) + +**Notes:** Sovereign gets BOTH Fire + Frost path access (configured in Discord, not LuckPerms). + +--- + +### Step 3: Create Staff Groups + +**CRITICAL: WorldEdit is powerful. Only staff should have access.** + +#### Group 12: Builder (Holly - Lead Builder) + +**Basic Settings:** +- **Name:** `builder` +- **Weight:** `1000` +- **Parents:** `default` (or none) + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&6[🔨 Builder] ` + +**Permissions:** +- `worldedit.*` → `true` (gives ALL WorldEdit permissions) +- `minecraft.command.gamemode` → `true` +- `ftbchunks.*` → `true` + +**Meta:** +- `max-homes` → `100` +- `max-claimed-chunks` → `1000` +- `max-force-loaded-chunks` → `100` + +--- + +#### Group 13: Owner (Michael/Frostystyle) + +**Basic Settings:** +- **Name:** `owner` +- **Weight:** `10000` +- **Parents:** `builder` + +**Prefix:** +- **Priority:** 100 +- **Prefix:** `&c[👑 Owner] ` (`&c` = red) + +**Permissions:** +- `*` → `true` (ALL permissions - full admin) + +**Notes:** Owner inherits Builder's WorldEdit access plus everything else. + +--- + +### Step 4: Deny WorldEdit to ALL Subscribers + +**CRITICAL SECURITY STEP:** + +For **each subscriber group** (wanderer through sovereign), add this permission: +- **Permission:** `worldedit.*` +- **Value:** `false` (red X) + +**Groups to set this on:** +- wanderer +- awakened +- fire_elemental +- frost_elemental +- fire_knight +- frost_knight +- fire_master +- frost_master +- fire_legend +- frost_legend +- sovereign + +**Why:** Prevents subscribers (even $499 Sovereign) from using WorldEdit to duplicate items, grief, or bypass protections. + +--- + +### Step 5: Save and Apply + +1. **Click "Save" button** (top right) +2. **Web editor generates a command** that starts with `/lp applyedits` +3. **Copy the entire command** +4. **Go back to Minecraft** +5. **Paste the command in console** (or in-game chat if you have permission) +6. **Press Enter** + +**You'll see:** +``` +[LuckPerms] Applied changes from editor session. +``` + +**Done! All 13 groups are now created and synced across all servers.** + +--- + +### Step 6: Assign Users to Groups + +**Still in Minecraft console, assign Holly and yourself:** + +``` +/lp user unicorn20089 parent set builder +/lp user Frostystyle parent set owner +``` + +**Replace `Frostystyle` with your actual Minecraft username.** + +--- + +### Step 7: Verify Groups Exist + +``` +/lp listgroups +``` + +**You should see all 13 groups listed with their weights.** + +--- + +## 📝 METHOD B: CONSOLE COMMANDS (ALTERNATIVE) + +**If you prefer console commands over the web editor, use these commands instead.** + +### Step 1: Access Server Console + +1. Go to Pterodactyl Panel: https://panel.firefrostgaming.com +2. Click on any server (doesn't matter which) 3. Click **Console** tab -4. Make sure server is **running** (start it if stopped) +4. Make sure server is **running** -**Then run these commands in the console:** +--- + +### Step 2: Run These Commands (Copy/Paste Each One) + +**All commands must be run in the server console. They will sync to all 13 servers automatically via MySQL.** + +--- #### Create Wanderer Group (Free Tier) @@ -847,9 +1261,10 @@ journalctl -u firefrost-discord-bot -f /lp creategroup wanderer /lp group wanderer setweight 10 /lp group wanderer meta setprefix "&7[Wanderer] " -/lp group wanderer meta setsuffix "" ``` +--- + #### Create Awakened Group ($1 Tier) ``` @@ -857,13 +1272,13 @@ journalctl -u firefrost-discord-bot -f /lp group awakened parent add wanderer /lp group awakened setweight 20 /lp group awakened meta setprefix "&f[The Awakened] " - -# Permissions /lp group awakened permission set ftbessentials.home.set true /lp group awakened permission set ftbessentials.home.teleport true /lp group awakened meta setmeta max-homes 1 ``` +--- + #### Create Fire Elemental Group ($5/mo) ``` @@ -871,8 +1286,6 @@ journalctl -u firefrost-discord-bot -f /lp group fire_elemental parent add awakened /lp group fire_elemental setweight 30 /lp group fire_elemental meta setprefix "&c[🔥 Fire Elemental] " - -# Permissions /lp group fire_elemental meta setmeta max-homes 5 /lp group fire_elemental permission set ftbchunks.claim true /lp group fire_elemental meta setmeta max-claimed-chunks 25 @@ -880,6 +1293,8 @@ journalctl -u firefrost-discord-bot -f /lp group fire_elemental meta setmeta rtp-cooldown 3600 ``` +--- + #### Create Frost Elemental Group ($5/mo) ``` @@ -887,8 +1302,6 @@ journalctl -u firefrost-discord-bot -f /lp group frost_elemental parent add awakened /lp group frost_elemental setweight 30 /lp group frost_elemental meta setprefix "&b[❄️ Frost Elemental] " - -# Permissions (same as Fire Elemental) /lp group frost_elemental meta setmeta max-homes 5 /lp group frost_elemental permission set ftbchunks.claim true /lp group frost_elemental meta setmeta max-claimed-chunks 25 @@ -896,6 +1309,8 @@ journalctl -u firefrost-discord-bot -f /lp group frost_elemental meta setmeta rtp-cooldown 3600 ``` +--- + #### Create Fire Knight Group ($10/mo) ``` @@ -903,14 +1318,14 @@ journalctl -u firefrost-discord-bot -f /lp group fire_knight parent add fire_elemental /lp group fire_knight setweight 40 /lp group fire_knight meta setprefix "&c[🔥 Fire Knight] " - -# Permissions /lp group fire_knight meta setmeta max-homes 10 /lp group fire_knight meta setmeta max-claimed-chunks 49 /lp group fire_knight meta setmeta max-force-loaded-chunks 4 /lp group fire_knight meta setmeta rtp-cooldown 1800 ``` +--- + #### Create Frost Knight Group ($10/mo) ``` @@ -918,14 +1333,14 @@ journalctl -u firefrost-discord-bot -f /lp group frost_knight parent add frost_elemental /lp group frost_knight setweight 40 /lp group frost_knight meta setprefix "&b[❄️ Frost Knight] " - -# Permissions (same as Fire Knight) /lp group frost_knight meta setmeta max-homes 10 /lp group frost_knight meta setmeta max-claimed-chunks 49 /lp group frost_knight meta setmeta max-force-loaded-chunks 4 /lp group frost_knight meta setmeta rtp-cooldown 1800 ``` +--- + #### Create Fire Master Group ($15/mo) ``` @@ -933,14 +1348,14 @@ journalctl -u firefrost-discord-bot -f /lp group fire_master parent add fire_knight /lp group fire_master setweight 50 /lp group fire_master meta setprefix "&c[🔥 Fire Master] " - -# Permissions /lp group fire_master meta setmeta max-homes 20 /lp group fire_master meta setmeta max-claimed-chunks 100 /lp group fire_master meta setmeta max-force-loaded-chunks 9 /lp group fire_master meta setmeta rtp-cooldown 900 ``` +--- + #### Create Frost Master Group ($15/mo) ``` @@ -948,14 +1363,14 @@ journalctl -u firefrost-discord-bot -f /lp group frost_master parent add frost_knight /lp group frost_master setweight 50 /lp group frost_master meta setprefix "&b[❄️ Frost Master] " - -# Permissions /lp group frost_master meta setmeta max-homes 20 /lp group frost_master meta setmeta max-claimed-chunks 100 /lp group frost_master meta setmeta max-force-loaded-chunks 9 /lp group frost_master meta setmeta rtp-cooldown 900 ``` +--- + #### Create Fire Legend Group ($20/mo) ``` @@ -963,14 +1378,14 @@ journalctl -u firefrost-discord-bot -f /lp group fire_legend parent add fire_master /lp group fire_legend setweight 60 /lp group fire_legend meta setprefix "&c[🔥 Fire Legend] " - -# Permissions /lp group fire_legend meta setmeta max-homes 35 /lp group fire_legend meta setmeta max-claimed-chunks 121 /lp group fire_legend meta setmeta max-force-loaded-chunks 16 /lp group fire_legend meta setmeta rtp-cooldown 600 ``` +--- + #### Create Frost Legend Group ($20/mo) ``` @@ -978,14 +1393,14 @@ journalctl -u firefrost-discord-bot -f /lp group frost_legend parent add frost_master /lp group frost_legend setweight 60 /lp group frost_legend meta setprefix "&b[❄️ Frost Legend] " - -# Permissions /lp group frost_legend meta setmeta max-homes 35 /lp group frost_legend meta setmeta max-claimed-chunks 121 /lp group frost_legend meta setmeta max-force-loaded-chunks 16 /lp group frost_legend meta setmeta rtp-cooldown 600 ``` +--- + #### Create Sovereign (Founder) Group ($499 Lifetime) ``` @@ -993,30 +1408,20 @@ journalctl -u firefrost-discord-bot -f /lp group sovereign parent add awakened /lp group sovereign setweight 100 /lp group sovereign meta setprefix "&6[⚡ Founder] " - -# Permissions (maximum everything) /lp group sovereign meta setmeta max-homes 50 /lp group sovereign meta setmeta max-claimed-chunks 225 /lp group sovereign meta setmeta max-force-loaded-chunks 81 /lp group sovereign permission set ftbessentials.rtp true -# No rtp cooldown for Sovereign ``` --- -#### Create Staff Groups (Builder & Owner) - -**IMPORTANT: WorldEdit is a powerful tool. Only staff should have access.** - -**Create Builder Group (for Holly):** +#### Create Builder Staff Group (Holly) ``` /lp creategroup builder -/lp group builder parent add default /lp group builder setweight 1000 /lp group builder meta setprefix "&6[🔨 Builder] " - -# WorldEdit permissions /lp group builder permission set worldedit.* true /lp group builder permission set worldedit.navigation.* true /lp group builder permission set worldedit.selection.* true @@ -1027,8 +1432,6 @@ journalctl -u firefrost-discord-bot -f /lp group builder permission set worldedit.schematic.* true /lp group builder permission set worldedit.brush.* true /lp group builder permission set worldedit.tool.* true - -# Other staff permissions /lp group builder permission set minecraft.command.gamemode true /lp group builder permission set ftbchunks.* true /lp group builder meta setmeta max-homes 100 @@ -1036,32 +1439,23 @@ journalctl -u firefrost-discord-bot -f /lp group builder meta setmeta max-force-loaded-chunks 100 ``` -**Create Owner Group (for Michael/Frostystyle):** +--- + +#### Create Owner Group (Michael/Frostystyle) ``` /lp creategroup owner /lp group owner parent add builder /lp group owner setweight 10000 /lp group owner meta setprefix "&c[👑 Owner] " - -# Full permissions /lp group owner permission set * true ``` -**Assign Users to Staff Groups:** +--- + +#### Deny WorldEdit to ALL Subscriber Groups (CRITICAL) ``` -# Assign Holly to Builder -/lp user unicorn20089 parent set builder - -# Assign Michael to Owner (replace with your actual Minecraft username) -/lp user Frostystyle parent set owner -``` - -**CRITICAL: Deny WorldEdit to ALL Subscriber Groups:** - -``` -# Prevent subscribers from using WorldEdit (even Sovereign) /lp group wanderer permission set worldedit.* false /lp group awakened permission set worldedit.* false /lp group fire_elemental permission set worldedit.* false @@ -1075,34 +1469,32 @@ journalctl -u firefrost-discord-bot -f /lp group sovereign permission set worldedit.* false ``` -**This ensures:** -- ✅ Holly (Builder) has full WorldEdit access -- ✅ Michael (Owner) has all permissions -- ❌ NO subscribers (even $499 Sovereign) can use WorldEdit -- ❌ Prevents duplication exploits and griefing via WorldEdit +--- -### Step 2: Verify Groups Created +#### Assign Users to Groups + +``` +/lp user unicorn20089 parent set builder +/lp user Frostystyle parent set owner +``` + +**Replace `Frostystyle` with your actual Minecraft username.** + +--- + +### Step 3: Verify Groups Created ``` /lp listgroups ``` -**You should see all 11 groups listed.** +**You should see all 13 groups listed.** -### Step 3: Sync to All Other Servers +--- -**Because all servers connect to the SAME MySQL database, the groups are already synced!** +## ✅ NEXT STEP (AFTER EITHER METHOD) -**To verify on another server:** - -1. Go to Pterodactyl Panel -2. Open console for a different server -3. Run `/lp listgroups` -4. Should show the same 11 groups - -**If groups don't appear:** -- Check that server's LuckPerms config points to the MySQL database -- Restart the server +Once groups are created (via web editor OR console commands), proceed to **Part 4: LuckPerms Discord Integration** to connect Discord roles to in-game groups. ---