v4.7c-SNAPSHOT

OreoEssentials

The all-in-one essentials plugin for Paper & Folia 1.21+. Homes, warps, economy, chat, holograms, trade, auction house, moderation — and cross-server everything.

ServerPaper / Folia 1.21+ Java21+ Authorelias API1.21 FoliaSupported
Commands & Permissions All Documentation
What is OreoEssentials?

OreoEssentials is a custom, all-in-one server essentials plugin written in Java for Paper and Folia 1.21+. It replaces multiple standalone plugins (EssentialsX, economy plugins, hologram plugins, etc.) with a single, deeply integrated system built around a multi-server network architecture.

Every major feature — teleportation, homes, warps, economy, chat, holograms, inventory tools, moderation, and player syncing — is built in as a module. Features that need to work across multiple servers in a BungeeCord or Velocity network (teleports, messages, ender chests, trades, inventory sync) communicate via RabbitMQ and Redis automatically, with no extra configuration per feature.

Important: OreoEssentials targets Paper 1.21+ and is also compatible with Folia. It will not work on vanilla Bukkit/Spigot — Paper-specific APIs are used throughout.
Feature Highlights
🏠

Homes, Warps & Spawn

Per-player homes with configurable limits, server warps, player-owned public warps, admin warp GUIs, and cross-server teleportation to any of them.

💰

Economy

Vault-compatible economy with /pay, /balance, /baltop, paper cheques, and an admin money command. Supports multiple custom currencies alongside Vault.

🏪

Shop, Auction House & Market Orders

Full GUI shop with per-player price modifiers, a network-wide Auction House, and a Market Orders system for buy/sell order books. All cross-server.

💬

Chat System

MiniMessage-formatted channels (global, local, trade, help, staff), cross-server private messages, per-player ignore lists, Discord webhook integration, and a full Afelius chat format system.

🌐

Cross-Server Everything

Teleports, private messages, ender chests, inventory sync, trades, and more all work transparently across every server in your BungeeCord / Velocity network via RabbitMQ packets.

🔮

Holograms

Full hologram management using 1.21 Display entities. Text, item, and block holograms with MiniMessage + legacy colors, multi-line, FancyNPCs linking, and per-player visibility.

🎒

Inventory Tools

Virtual anvil, workbench, furnace, quick-cook, trash can, invsee/invlook, ecsee, tiered ender chests (3–6 rows), personal vaults, player inventory sync with per-category toggles.

🛡️

Moderation Suite

Temporary/permanent bans, kicks, mutes, warnings, punishment history, freeze, vanish, god mode, player jails with cell management, and silent moderation flags. Discord notifications included.

🤝

Trade System

Real-time player-to-player GUI trade with item and money exchange, cross-server support, leader election, and session management to prevent item duplication.

✨

Player QoL

AFK detection, boss bar toggling, /sit, /top, /bottom, /near, /ping, /skin changes, temporary flight with timers, random teleport with tier-based radius, and more.

⚙️

Admin Tools

In-game settings GUI, runtime alias editor (no YAML needed), command toggle system, maintenance mode, clearlag controls, killall-radius with logging, custom recipe designer, and shard world management.

🎁

Kits & Rewards

Kit system with cooldowns and a GUI, playtime milestone rewards, daily login rewards, and a website registration reward tied to the OreoStudios web panel.

🌍

World Management

Set time and weather per-world or globally, cuboid portals, jump pads, world teleportation, sharding for distributing worlds across servers, and Interactive Commands bound to blocks, entities, or signs.

🔗

Web Panel Integration

A companion Spring Boot web panel (oreoessentials-web) with JWT auth, per-server MongoDB, player data sync via REST API, and Discord OAuth linking.

Requirements & Dependencies
DependencyTypePurpose
Paper 1.21+ Required Server software. Must be Paper (not Spigot or vanilla). Folia is also supported for multi-threaded regional servers.
Java 21+ Required Minimum Java version. The plugin uses Java 21 language features including records, sealed classes, and pattern matching.
RabbitMQ Required (network) Message broker for all cross-server communication — teleports, chat, packets, inventory sync. Only needed if running multiple servers.
Redis Required (network) Fast key-value store used for player directory, online state, and shared caches across servers.
MongoDB Required (features) Primary document database for economy, homes, warps, player data, auction house, and market orders.
Vault Soft-depend Economy API bridge. Required if you want /pay, /balance, /baltop, and shop pricing to work with a standard economy.
PlaceholderAPI Soft-depend Adds %oreoessentials_*% placeholders for use in other plugins (scoreboards, chat formatters, etc.).
LuckPerms Recommended Not a declared dependency, but strongly recommended for managing the plugin's permission system across your network.
PacketEvents Soft-depend Used for some packet-level features. Optional — the plugin degrades gracefully without it.
ItemsAdder / Nexo Soft-depend Custom item integration. If present, OreoEssentials can reference custom items from these plugins in shop configs, kits, etc.
SmartInvs Soft-depend GUI library used for some interactive inventory menus. Load order is managed automatically.
BungeeCord / Velocity Network only Required if you want cross-server teleportation and server switching (/oeserver). Plugin messaging channel is used in addition to RabbitMQ.
PostgreSQL Web panel only Used by the companion oreoessentials-web Spring Boot application for its own data. Not required by the Bukkit plugin itself.
First-Time Setup
Tip: The plugin generates all config files on first run. Start the server once with OreoEssentials installed, let it boot, then stop it and edit the generated configs before starting again.
1

Install the Plugin JAR

Drop OreoEssentials-4.7c-SNAPSHOT.jar into your server's plugins/ folder. Make sure you are running Paper 1.21+ with Java 21+.

2

Install Soft-Dependencies (Optional)

If you want economy features, drop Vault (and a Vault economy provider like EssentialsX Economy or CMI) into plugins/. Add PlaceholderAPI for placeholder support.

3

Start the Server Once

Start your server. OreoEssentials will generate plugins/OreoEssentials/ with all default config files. Errors at this stage usually mean a missing Java version or incompatible server software.

4

Configure Storage Connections

Stop the server. Open plugins/OreoEssentials/config.yml and fill in your MongoDB URI, Redis host/port/password, and (if running a network) your RabbitMQ host/port/credentials. These are required for most features to work correctly.

5

Configure Module Settings

Browse the generated sub-folders in plugins/OreoEssentials/. Each module (homes, shop, chat, etc.) has its own config file. Edit the ones relevant to your server. The defaults are sane starting points.

6

Set Up Permissions

Use LuckPerms (recommended) to assign permission nodes to ranks. The oreo.* node grants all permissions and defaults to OP. See the Full Permissions Table for every individual node.

7

Set Spawn

Once in-game, go to your desired spawn location and run /setspawn. Players will be sent here when they use /spawn or join for the first time.

8

Reload or Restart

After changing any config, run /oereload in-game (or from console) to apply changes without a full restart. A full restart is recommended after changing storage connection settings.

Plugin Modules

OreoEssentials is built around independent modules. Each one can be configured or disabled separately.

Teleportation (spawn/back/tp)
Homes
Warps
Player Warps (pw)
Random Teleport (rtp)
Death Back
Economy (money/pay)
Shop (GUI)
Auction House
Market Orders
Currency System
Trade
Chat Channels
Private Messages (msg)
Ignore System
Discord Integration
Nick / Realname
MOTD & Rules
Mail
Moderation (ban/kick/mute)
Warnings & History
Jails
Freeze
Vanish
Holograms (OHolograms)
Portals & Jump Pads
Interactive Commands (IC)
World Sharding
Ender Chest (tiered)
Player Vaults
Inventory Sync
InvSee / InvLook
Anvil / Workbench / Furnace
Skin Changer
Temp Fly
Effects (effectme/effectto)
Sit / Top / Bottom / AFK
Kits
Playtime Rewards
Daily Rewards
Maintenance Mode
ClearLag (olagg)
Alias Editor
Command Toggle
Custom Craft Designer
Web Panel Integration
Storage & Data Architecture

OreoEssentials uses multiple storage backends, each chosen for what it does best.

MongoDB

Primary document database for persistent player data.

Economy balances, homes, warps, auction house listings, market orders, bans, mutes, warnings, player profiles.

Redis

In-memory key-value store for fast, shared, ephemeral data.

Online player directory, cross-server state, caches, session data, TPA requests, trade sessions.

RabbitMQ

Message broker for real-time cross-server events.

All cross-server packets: teleports, private messages, inventory sync, trade, orders, AH, chat.

YAML Flat Files

Local file storage for configuration and non-critical data.

All plugin configs, holograms, portals, jump pads, kits, playtime rewards, rules, MOTD, warps (local cache).

PostgreSQL

Relational database for the web panel only.

Web panel user accounts, server configs (AES-256 encrypted MongoDB URIs), player-server links, cached player data. Not used by the Bukkit plugin directly.

SQLite

Embedded database for optional local module storage.

Market Orders module when MongoDB is not configured or preferred. Fully shaded and relocated in the JAR.
How Cross-Server Works

Every feature that needs to work across servers uses the same underlying architecture. You do not need to configure anything per-feature — just set up RabbitMQ and Redis once.

Server A
survival
Server B
creative
Server C
minigames
↕each server publishes & subscribes↕
RabbitMQ — cross-server packets (teleports, chat, inventory sync, trade, AH, orders…)
↕player lookup & shared state↕
Redis
PlayerDirectory, sessions, caches
MongoDB
persistent data (shared)
BungeeCord / Velocity
proxy server switching
PlayerDirectory — every server registers online players to Redis. Any command that needs to find a player by name (e.g. /msg, /tp, /invsee) queries this directory to know which server the player is on before sending a packet.
Packets — every cross-server action is a typed packet class that extends Packet with write() and read() methods. All packets are registered deterministically at startup so IDs are consistent across all servers in the network.
Documentation Pages
OreoEssentials v4.7c-SNAPSHOT  ·  Paper / Folia 1.21+  ·  Java 21+  ·  by elias