XP Crystals

# XP Crystals

Ever wished you could bank your hardearned **XP** without the risk of dying and losing it all? With **XP Crystals**, you can **store** and **retrieve** your experience safely, using items that are fully compatible with **survival** gameplay.

_Available as **mod** or **datapack**._

![Items](https://cdn.modrinth.com/data/7CQhAk4P/images/fce7fb3ec3ea37be1ef6caf6b83dc596d76b5ed4.png)
## Features
– Store XP in craftable crystals
– Crystals come in multiple tiers, each with a different capacity:
– Tier I: 3 levels
– Tier II: 10 levels
– Tier III: 30 levels
– Tier IV: 50 levels
– Tier V: Infinite XP storage
– Survival oriented, with balanced crafting recipes.
– Multiple Advancements
– Easy to use: right click to deposit or withdraw XP
– Settings menu for both admins and normal players
– Serverside (resource pack required for clients)

### Settings

admins may use /trigger xp_crystals.globalsettings

players may use /trigger xp_crystals.settings

Player Settings

Sound Effects [Turns on or off soundeffects per player]

Global Settings

– Strict Mode: Enables accurate XP point calculation instead of using XP levels only (Enabled by default)

– Toggle global sound effects on or off.

– Hardcore Mode: Automatically awards an achievement that can only be obtained by dying.

– Uninstall Function: Removes all data left over from the datapack/mod~~~~.

### installation
**Mod Version:**
– Singleplayer: Add the mod into the mods folder. Done
– Multiplayer: Server requires mod, Clients only need resource pack

**Datapack Version:**
– Singleplayer: add datapack into the worlds datapack folder, add the resource pack to your resource pack folder.
– Multiplayer: Server requires datapack, Clients only need resource pack

## Need Help? Want to offer feedback?
join the [Discord](https://discord.gg/PjaKmhWEFT)

Xp Bottler

### XP Bottler
Turn your hard-earned experience levels into storable and reusable XP bottles!

## Key Features
– 🎯 Level-to-Bottle Conversion

Use /trigger store_xp set to convert a specific number of levels into an XP bottle.

**Example:** /trigger store_xp set 10 creates a bottle containing exactly 10 levels.

– 💥 Convert All Your XP at Once

Use /trigger Store_All_LVL to instantly convert all your XP into a single, high-capacity bottle.

Perfect for quick storage before dangerous adventures!

## 🔄 XP Recovery System

Consuming a bottle instantly restores the exact levels it contains, making XP transfer simple and precise.

## 🌍 100% Vanilla & Multiplayer-Friendly

– Works in pure vanilla Minecraft, no mods required.
– Fully compatible with multiplayer servers.

## 💡 Use Cases

– Safely store XP before risky battles
– Transport experience between bases or dimensions
– Share XP easily with other players

XP-Book

# 📗 XP-Vault: The Professional XP Ledger
**XP-Vault** (v1.21.11) is a high-performance, survival-integrated utility designed to bridge the gap between risk and reward. By providing a balanced “Banking” system for your experience levels, it adds a layer of strategy to your survival world while protecting your time investment from accidental deaths.

## ✨ Primary Features
* 🔒 **Persistent Storage:** Stored levels are linked to the player via scoreboards, meaning they persist through death and even if the book is lost or destroyed.
* 📈 **Precision increments:** Full control with buttons for **1, 3, 10, or 30** levels.
* ⚡ **Bulk Operations:** Rapidly clear your XP bar or withdraw your entire bank with **[STORE ALL]** and **[TAKE ALL]** buttons.
* 🔊 **Dynamic Feedback:** Includes high-fidelity vanilla sound effects and color-coded chat messages to confirm every transaction.
* 🛠️ **Universal Access:** Designed with the `/trigger` system, allowing **Survival players without OP/Cheats** to use the interface seamlessly.

> ![Book UI of the Store / Take EXP](https://cdn.modrinth.com/data/cached_images/b014cb33c6df9d0d910baa43d40b3143c0c6db1f.jpeg)

## 🔨 Survival Crafting & Initialization
We believe in “Vanilla+” balance. The recipe is expensive enough to feel earned, requiring 8 Bottles o’ Enchanting.

**The Recipe Pattern:**
* **Outer Ring:** 8x Experience Bottles
* **Center:** 1x Regular Book
* **Output:** 1x Knowledge Book (Auto-converts to XP-Vault upon holding)

> ![8 EP Bottle + 1 Book = BOOK OF EXPERIENCE](https://cdn.modrinth.com/data/cached_images/16d382ea6b2ba87720dc7501cd7a36bbc9d4e167.jpeg)

## 💻 Technical Documentation (For Server Admins)
XP-Vault is built for stability and zero TPS impact. It avoids “Every-Tick” heavy NBT scanning, favoring a lightweight trigger-based architecture.

### 📊 Scoreboard Management
The pack uses the following internal objectives:
* `exp_stored`: The master objective. Stores the player’s banked level count.
* `exp_current`: A temporary calculation buffer for XP bar data.
* `exp_takeX` / `exp_storeX`: Individual trigger objectives.

### 🛠️ Admin Utility Commands
* **Check a Player’s Bank:** `/scoreboard players get exp_stored`
* **Manually Set a Balance:** `/scoreboard players set exp_stored 50`
* **Add/Reward Levels:** `/scoreboard players add exp_stored 10`
* **Spawn a Vault Book:** `/function exp_book:give_book`

### 🧪 Testing Procedures
To verify the pack is working correctly after installation:
1. Run `/reload` and look for the “[Book of Experience] Datapack loaded” message.
2. Grant yourself 30 levels: `/experience add @s 30 levels`.
3. Craft or give yourself the book and click **[STORE ALL]**.
4. Run `/scoreboard players get @s exp_stored`. If it returns **30**, the system is 100% operational.

## 📝 Changelog v1.0.0 (v1.21.11)
* **1.21.x Component Migration:** Fully updated to the new `written_book_content` and `item_component` syntax (1.20.5+).
* **Recursion Optimization:** Rewrote the `take_all_loop` to handle massive level counts (1000+) without causing server hanging.
* **Syntax Hardening:** Replaced deprecated `clickEvent` keys with modern `click_event` formatting for 1.21.11 compatibility.
* **Auto-Conversion:** Improved the knowledge book detection logic to be more responsive.

## ⚖️ License & Permissions
**License:** MIT License
* ✅ **You may:** Use this in modpacks, featured on servers, and modify the code for personal use.
* ❌ **You may not:** Re-upload this to other platforms (9Minecraft, etc.) or claim it as your own creation.
* 💎 **Credit:** Mentioning “Sentrax” or linking to this Modrinth page is appreciated but only required if you redistribute modified versions.

## 📥 How to Install
1. Download the `XP-Vault.zip`.
2. Open your Minecraft world folder -> `datapacks`.
3. Drop the `.zip` inside.
4. Join the world and type `/reload`.


**Author:** Sentrax
**Compatibility:** 1.20.5, 1.20.6, 1.21, 1.21.11

**Checkout my other datapacks from [OPSIBA007](https://modrinth.com/user/OPSIBA007)**

XMyIsland

# XMyIsland

A comprehensive island management plugin that brings robust protection, intuitive GUI management, and economy integration to your Minecraft server.

## 🌟 Key Features

### Island Management
– Create personal islands with customizable sizes
– Visual border particles for easy boundary identification
– Expandable islands with economy integration
– Intuitive GUI-based management system

### Advanced Protection Systems
– Complete grief prevention
– Protection against:
– Explosions
– Liquid flow
– Redstone manipulation
– Piston mechanics
– Tree growth exploitation
– Falling block abuse
– Wither damage

### Trust System
– Detailed permission management
– GUI-based trust controls
– Per-player permission settings
– Multiple permission types:
– Block breaking/placing
– Chest access
– PvP controls
– Entity interaction
– And more!

### Economy Integration
– Expansion costs
– Configurable pricing
– Refund system for island deletion
– Full Vault support

## 🔧 Technical Details

– **Version:** 1.17+
– **Dependencies:** Vault
– **Permissions:** Automatic handling
– **Configuration:** Fully configurable
– **Database:** YAML-based storage
– **Performance:** Optimized for minimal impact

## 💡 Perfect For

– Survival servers
– Economy-focused communities
– PvE servers
– Community-driven servers
– Skyblock-style gameplay

## 🤝 Support & Community

– Active issue tracking
– Regular updates
– Community-driven development
– Comprehensive documentation

Experience the next level of island management with XMyIsland!

xLogin

# 🛡️ xLogin – Simple, Lightweight & Powerful Authentication

![banner-es](https://cdn.modrinth.com/data/cached_images/694ac454be5c859a82ded0fb53c1839a6af34045_0.webp)

**xLogin** is an all-in-one authentication system designed for servers that want maximum security without the bloat. Forget about complex external database setups; xLogin is optimized to work locally, fast, and secure out of the box, whether you run a standalone server or a massive Proxy network.

> Note: /premium is only available for networks and proxies. Compatible with Bungeecord, Velocity, Waterfall, and others.
How do I activate proxy mode?
Go to config.yml and enable proxy mode, then download and install the add-on for your proxy, and you’re all set!

## 🚀 Key Features

* **🌐 Smart Network & Proxy Ready:** Fully compatible with **BungeeCord** and **Velocity**. Features auto-detection to enable secure UUID verification and includes an automatic Auth-Lobby redirect system to send players to a specific server upon successful login.
* **📦 Local-First Storage & Backups:** High-performance, thread-safe H2 database system (`data.mv.db`). No need for MySQL to get professional network-level performance. Easily create instant database backups via in-game commands!
* **💎 Smart Premium System:** Using an official Minecraft account? Players can use `/premium` to enable auto-login. The plugin uses real Mojang validation (via your Proxy) to ensure nobody can steal a premium identity.
* **🧠 Industrial-Grade Security:**
* **BCrypt Hashing:** Passwords are encrypted with the industry standard, making them virtually impossible to crack.
* **Premium Name Impersonation Protection:** Automatically kicks non-premium players trying to join with the username of an official purchased account.
* **Anti-Bot Captcha:** A visual verification system during registration to stop bot attacks in their tracks.
* **Total Protection:** Blindness, immobilization, and block/damage protection until the user is authenticated.
* **Asynchronous Logging:** Keeps a silent, detailed history of logins, registrations, and admin actions.
* **🖼️ Ultimate Admin Control:** Manage everything from the console or in-game. Features an intuitive visual GUI menu with player heads, plus a massive arsenal of commands to purge inactive users, force logins, change UUIDs, and more.
* **📱 Bedrock Support (Geyser):** Fully compatible with console and mobile players via Floodgate integration. Bedrock players authenticated via Xbox Live can automatically bypass the login screen (100% configurable).
* **⚡ Performance Optimized:** Fully asynchronous database operations ensure your TPS stays at 20.0, no matter how many players are joining.

## 🛠️ Commands & Permissions

### Player Commands
| Command | Description | Permission |
| :— | :— | :— |
| `/login ` | Log in to your account. | None |
| `/register ` | Create a new account with captcha. | None |
| `/premium [confirm]` | Toggle Auto-login (Premium Mode). | None |
| `/changepassword ` | Securely change your current password. | None |
| `/captcha ` | Solve the registration captcha. | None |

### Admin Commands (`xlogin.admin`)
| Command | Description |
| :--- | :--- |
| `/xlogin gui` | Open the visual administration menu. |
| `/xlogin backup` | Create an instant backup of the database. |
| `/xlogin purge ` | Delete all accounts inactive for ``. |
| `/xlogin verify ` | View a player's UUID, IP, Premium status, & last login. |
| `/xlogin forcelogin ` | Forcefully log a player into the server. |
| `/xlogin setspawn` / `spawn` | Set or teleport to the login spawn location. |
| `/xlogin changepass ` | Forcefully change a player's password. |
| `/xlogin changeuuid ` | Manually update a player's registered UUID. |
| `/xlogin unpremium ` | Remove the premium auto-login status from an account. |
| `/xlogin unban ` | Remove an IP from the registration blacklist. |
| `/xlogin unregister ` | Completely delete a player's account. |
| `/xlogin reload` | Reload the plugin configuration and messages. |

---

## ⚙️ Simplified Configuration

We've stripped the config down to the essentials so you don't waste time, while giving you absolute control over your network.

### `config.yml`

```yaml
# -------------------------------------------------------
# __ _
# __ __ / / ___ __ _(_)_ __
# / // / / _ / _` | | '_ Made by xPlugins
# > '
before-register:
title: '&#FAD7A0Register!'
subtitle: '&fUse /register '
after-login:
title: '&#A9DFBFSuccess!'
subtitle: '&fEnjoy your stay'
incorrect-password:
title: '&#F1948AIncorrect Password!'
subtitle: '&7Please try again'

logging:
enabled: true
log-successful-logins: true
log-registrations: true
log-failed-attempts: true
log-admin-actions: true

XLeaderBoard

🌍 English Description
⚡ **X-LeaderBoard**
Ultimate dynamic leaderboards for Minecraft!

X-LeaderBoard is a next-generation ranking system that brings real-time competition to your server using modern Text Display technology. No more bulky armor stands—just clean, lag-free holographic rankings!

🚀** Key Features**
Performance First: Built with Text Display entities to ensure zero lag on your server.

Full PAPI Support: Rank anything! Money, Kills, Level, Votes, and more via PlaceholderAPI.

Fully Customizable: Change titles, colors, and update intervals in the config.

Database Options: Support for both SQLite and MySQL.

🛠️ **Commands**
/xlb create – Create a new leaderboard.

/xlb delete – Remove a leaderboard.

/xlb reload – Reload the configuration.

📦 **Quick Start**
Place the plugin in your plugins folder.

Install PlaceholderAPI (Required).

Restart your server.

Configure your categories in config.yml and use /xlb create!

———————————————————————————————-

🇹🇷 **Türkçe Açıklama**
⚡ X-LeaderBoard
Minecraft için yeni nesil dinamik sıralama tabloları!

X-LeaderBoard, sunucunuza modern Text Display teknolojisini kullanarak anlık rekabet getiren bir sıralama sistemidir. Hantal zırh askıları (armor stand) yerine, sunucunuzu yormayan tertemiz holografik tablolar kullanın!

🚀 **Öne Çıkan Özellikler**
Önce Performans: Sunucuda gecikme yapmayan Text Display varlıkları ile kodlanmıştır.

Tam PAPI Desteği: PlaceholderAPI sayesinde Para, Öldürme, Seviye, Oy ve her şeyi sıralayın!

Tamamen Özelleştirilebilir: Başlıkları, renkleri ve güncelleme sürelerini config’den ayarlayın.

Veritabanı Seçenekleri: Hem SQLite hem de MySQL desteği mevcuttur.

🛠️ **Komutlar**
/xlb create – Yeni bir sıralama tablosu oluşturur.

/xlb delete – Mevcut bir tabloyu siler.

/xlb reload – Ayarları yeniler.

📦 **Hızlı Kurulum**
Eklentiyi plugins klasörüne atın.

PlaceholderAPI eklentisini yükleyin (Gereklidir).

Sunucuyu yeniden başlatın.

config.yml dosyasından kategorileri ayarlayıp /xlb create ile tabloları dikin!

Xiaoklunar Shulker

# XiaoklunarShulker

Two quality-of-life features for shulkers: **open them directly from your inventory** and optionally **vacuum overflow pickups into shulkers you’re carrying**.

## 1) Open Shulkers Directly From Inventory

Right-click a **shulker box item** inside your inventory to open it.

**Highlights**
– Opens from inventory (no placement required)
– Prevents **shulker-in-shulker** nesting exploits
– Plays open/close sounds
– You can switch to another shulker while one is open
*(auto-closes the current one, then opens the clicked one)*

**Permission**
– `xiaoklunarshulker.open`

## 2) Shulker Vacuum (Overflow Pickup Helper)

When enabled: if an item pickup would **overflow** your inventory, the plugin tries to store the overflow into **shulkers in your inventory**.

**Safety**
– Automatically disabled while a shulker GUI session is open

**Commands**
– `/shulkervacuumstart` Enable vacuum overflow storing
– `/shulkervacuumstop` Disable vacuum overflow storing
– `/shulkervacuumstatus` Show current vacuum status

**Permission**
– `xiaoklunarshulker.vacuum.toggle`

## Permissions

| Permission | Description |
|—|—|
| `xiaoklunarshulker.open` | Allows opening shulkers directly from inventory |
| `xiaoklunarshulker.vacuum.toggle` | Allows toggling the shulker vacuum feature |

Xhomes

### Xhomes – Your Personal Home Management Plugin for Minecraft

**Xhomes** is an essential plugin designed to enhance your Minecraft experience by allowing players to seamlessly set, manage, and teleport to personal homes. With its user-friendly GUI and intuitive functionality, Xhomes simplifies home management and provides an engaging way to navigate the game world.

## Key Features:

– **Set Home**: Easily set your home location using the command `/sethome [homename]`, enabling quick travel back to your favorite spots.

– **Home GUI**: Access a visually appealing GUI to view and select homes, featuring slots filled with blue beds for a straightforward teleportation interface.

– **Teleportation Countdown**: Enjoy a 5-second countdown before teleportation, accompanied by the message: “Teleporting in 5 seconds, don’t move!” to build anticipation.

– **Movement Cancellation**: Teleportation is canceled if the player moves during the countdown, ensuring safe and accurate arrival at the desired location.

– **Delete Home**: Remove homes easily with the command `/delhome [homename]`.

– **Configurable Limits and Tiers**: Server owners can configure the maximum number of homes players can set based on their permission tier:
– **Tier 1 (xhomes.hometier1)**: 2 homes
– **Tier 2 (xhomes.hometier2)**: 4 homes
– **Tier 3 (xhomes.hometier3)**: 6 homes
– **Tier 4 (xhomes.hometier4)**: 8 homes

These limits are fully configurable in the `config.yml` file.

– **Admin-Friendly Management**: Xhomes provides robust tools for server owners to oversee home settings and permissions, offering fine-grained controls for authorized players.

### LuckPerms Permissions:

– `/sethome`: `xhomes.sethome`
– `/delhome`: `xhomes.delhome`
– `/home`: `xhomes.home`
– Tier 1: `xhomes.hometier1` (2 homes)
– Tier 2: `xhomes.hometier2` (4 homes)
– Tier 3: `xhomes.hometier3` (6 homes)
– Tier 4: `xhomes.hometier4` (8 homes)

Elevate your Minecraft gameplay with **Xhomes**—your all-in-one home management solution!

### Source Code
Check out the source code on GitHub: [Xhomes Repository](https://github.com/Akar1881/Xhomes)

XGamemode

![XGamemode Logo](https://cdn.modrinth.com/data/cached_images/1dcaf5510526bbd1af3e3b907fea79d40735b3eb.png)
### “*You’re not switching modes, you’re switching dimensions.*”

~~*2000 Downloads?! Thanks!*~~

# 1 Feature

## 1.1 Offline Player

You can change the gamemode of a player, **even he (or she) was offline**.

## 1.2 Permissions

Allow permission group plugins (_like Luckperms_) to manage **which gamemodes can be switched to** and **which gamemodes cannot be switched to**.

_e.g. Allow to switch to survival mode but not to any other mode._

## 1.3 Alias

**/gamemode** is simplified to **/gm** and **/g**.

_(of course you can still use /gamemode)_

## 1.4 Cross-Server Storage

Support **MySQL** and **SQLite** storage backends. Player gamemodes are saved and synchronized across multiple servers in a network.

## 1.5 Folia Support

**Fully compatible with Folia servers** — using region-based scheduling for optimal performance.

## 1.6 Lightweight

The Plugin size is only **~25 KB** and has **almost no impact** on server performance!

# 2 Caution

## 2.1 Shortcut Keys

If you need to use shortcut keys such as **F3+F4**, please install another plugin **F3NPerm**.

## 2.2 Versions

**1.8.X +**

**All Bukkit based server** (Paper, Spigot, Purpur, Folia, etc.)

# 3 Commands

“`markdown
– /xgamemode
– /xgamemode reload
– /gm
– /gm – /gm -all
– /gm -online
– /gm -offline

/g = /gm = /gamemode
/xg = /xgm = /xgamemode
“`

# 4 Permission Node

“`markdown
– xgamemode.survival
– xgamemode.creative
– xgamemode.adventure
– xgamemode.spectator
– xgamemode.others.survival
– xgamemode.others.creative
– xgamemode.others.adventure
– xgamemode.others.spectator
– xgamemode.reload
– xgamemode.admin
“`

# 5 Custom Config

## 5.1 Basic Settings

“`yaml
lang: en-US
“`

**Language** setting

“`yaml
default_gamemode: survival
“`

If a **new player joined your server**, **which gamemode should he (she) be**?

**survival**, **creative**, **adventure**, **spectator**

“`yaml
show_logo: true
“`

Show logo or not when plugin enabled.

**true**, **false**

“`yaml
debug: false
“`

Enable debug logging for troubleshooting.

**true**, **false**

## 5.2 Storage Configuration

“`yaml
storage:
type: yaml
“`

**Storage backend type**: **yaml**, **sqlite**, **mysql**

### SQLite Example

“`yaml
storage:
type: sqlite
# No additional config needed — data.db will be created automatically
“`

### MySQL Example

“`yaml
storage:
type: mysql
mysql:
host: localhost
port: 3306
database: minecraft
username: root
password: your_password
“`

## 5.3 Custom Messages

“`yaml
messages:
en-US: # Original en-US Language by Wind_Blood
reloaded: “&aXGamemode Reloaded!”
# ……
custom_lang: # Add Your Custom Language!
reloaded: “Thank you for using XGamemode!”
# ……
“`

**Customizable Messages**. You can add **your own new language** here!

## 5.4 An Example config.yml

“`yaml
lang: msgForMyServer
default_gamemode: survival
show_logo: false
debug: false
storage:
type: yaml
messages:
msgForMyServer:
reloaded: “很明显作者是中国人 会说中文很正常 然后我也不知道为什么我要在一堆英文里写一段中文 挺好笑的 哈哈哈 对了 看到我就是缘分 XGamemode 官方 QQ 反馈交流群:点击链接加入群聊【XGamemode 反馈群】:https://qm.qq.com/q/rpTk5LK7w4 欢迎加”
usage: “&cUsage: /gm [player/-all/-online/-offline]”
console_usage: “&cUsage: /gm
invalid_gamemode: “&cInvalid Gamemode!”
invalid_player: “&cInvalid Player!”
gamemode_self: “&aYour Gamemode Changed to {mode}!”
gamemode_all: “&aChanged All Player’s Gamemode to {mode}!”
gamemode_online: “&aAll Online Player’s Gamemode Changed to {mode}!”
gamemode_offline: “&aAll Offline Player’s Gamemode Changed to {mode}!”
no_permission: “&cYOU ARE NOT ALLOWED TO DO THAT!”
gamemode_other: “&a{player}’s Gamemode Changed to {mode}!”
gamemode_other_offline: “&a{player} (Offline)’s Gamemode Changed to {mode}!”
“`

# 6 Developer API (Async)

## Get Instance

“`java
Main plugin = Main.getInstance();
“`

## Get Player Gamemode

“`java
plugin.getPlayerMode(playerUUID).thenAccept(mode -> {
if (mode != null) {
// mode is GameMode.SURVIVAL, CREATIVE, ADVENTURE, or SPECTATOR
// Player is online or has saved data
} else {
// Player not found or no saved gamemode yet
}
});
“`

## Set Player Gamemode

“`java
plugin.setPlayerMode(playerUUID, GameMode.SURVIVAL).thenAccept(success -> {
if (success) {
// Gamemode changed and saved successfully
// Works for both online and offline players
} else {
// Failed to save (database error, etc.)
}
});
“`

## Listen to Gamemode Changes

“`java
@EventHandler
public void onGamemodeChange(GamemodeChangeEvent event) {
Player player = event.getPlayer(); // Online player only
GameMode oldMode = event.getOldMode();
GameMode newMode = event.getNewMode();
}
“`

> **Note:** All APIs are **fully async** and thread-safe. The `GamemodeChangeEvent` is only fired for **online players** when their mode is actually changed. The `getPlayerMode()` method returns `null` if the player has no saved gamemode data.

# 7 Reprint Post

www.minebbs.com/resources/xgamemode.11041

hangar.papermc.io/Wind_Blood/XGamemode

modrinth.com/plugin/xgamemode

# 8 Feedback

Just e-mail me with **[email protected]**. Thanks!

XFPoolManager

![xfinity Pool Manager Logo](https://cdn.modrinth.com/data/cached_images/7f882886876dfd0065683a28ce5db21a65a2bcfa.png)

# 🎣 XFPoolManager (XFPM)

**XFPoolManager** is a **custom loot pool manager**.
It is designed primarily for **CosmicSMP** and servers with **advanced fishing systems**, but it can also be used as a general-purpose loot pool manager.

## 💡 Soft Dependencies:
– **NBT API**
– **Vault**
– **PlaceholderAPI**
> These plugins are **optional**. XFPM will integrate with them if present, but will function normally without them.

## 📜 General Description

XFPM allows you to define **main pools**, with **mini pools** inside them, and finally **items** inside those mini pools.
It also introduces **custom fishing enchantments** (stored as lore on fishing rods, not real enchantments) that affect loot behavior when rolling with `/xfpm loot`.

✅ If no fishing rod with the required lore is present → normal loot rules apply.
✅ If a fishing rod contains specific enchantments in its lore → the plugin modifies loot generation accordingly.
✅ Enchantments marked with `[X]` in the list below are **ignored** by XFPM.

## ✨ Features
– 🎲 **Configurable loot pools** with:
– Main pools → mini pools → items.
– Item rarities: `common, uncommon, rare, epic, mythic, legendary` (and anything rarer).
– Drop chances per item.
– Fixed or ranged amounts with optional **weighted probability**.
– Full **NBT tag** support (complex JSON supported).
– Custom messages (`%nl%` = line break).
– Console commands executed per reward.

– 🪝 **Custom Fishing Enchantments (for CosmicSMP)**:
– Work only if the player holds a fishing rod with the correct lore.
– Levels are expressed in Roman numerals (`I–VI` or `MAX`).
– No need for additional enchantment plugins.
– Modify loot roll logic dynamically:
– Rarer fish.
– More treasure.
– Increased amounts of fish or trash.
– Bonus XP.

– 🔄 Reload config on the fly: `/xfpm reload`.
– 📦 Works out-of-the-box with **CosmicSMP setups** and similar systems.

## 🧩 Custom Enchantments

### 🎲 Chance Boosts
– **Rare Catch** → Boosts chance of catching rarer items.
– **Treasure Finder** → Unlocks or increases chance for rolls in the `treasure` mini pool.
– **Bountiful Haul** → Increases amount of fish (+20% per level). Not compatible with *Wasteful Haul*.
– **Wasteful Haul** → Increases amount of trash (+15% per level). Not compatible with *Bountiful Haul*.
– **Angler’s Fortune** → Grants extra XP per successful catch.

### ⚡ Utility & Other (ignored by XFPM)
– Gambler’s Worth [X]
– Swift Bite [X]
– Endless Line [X]

📌 If the enchantment is **not present in lore** → no effect.
📌 If it is **present but marked [X]** → ignored safely.

## ⚙️ Commands

| Command | Description |
|———|————-|
| `/xfpm loot ` | Rolls loot for a player, applying enchantment modifiers if their fishing rod lore qualifies. |
| `/xfpm reload` / `/xfpmreload` | Reloads the plugin configuration without restarting the server. |

## 🛠️ Example `config.yml`

“`yaml
pool_main:
fish:
salmon_common:
item: salmon
rarity: common
nbt:
– ‘custom_name=[{“text”:”Common Salmon”,”italic”:false,”color”:”white”}]’
message: “You caught a common salmon!”
amount: “1-2”
amount_weighted: false
chance: 0.5
commands:
– “say %player% caught a salmon!”

treasure:
golden_pearl:
item: ender_pearl
rarity: legendary
nbt:
– ‘custom_name=[{“text”:”Golden Pearl”,”italic”:false,”color”:”gold”}]’
message: “§6You fished up a Golden Pearl!%nl%§7Unbelievable luck!”
amount: “1”
amount_weighted: false
chance: 0.05
commands:
– “give %player% diamond 1”