What Are Server Modules?
The server folder (plugins/OreoEssentials/server/) contains configuration files for
eleven distinct server-management features. Each feature has its own YAML file.
Together they let you control everything from lag management to custom crafting rewards.
Folder Structure
plugins/
OreoEssentials/
server/
maintenance.yml ← lock server from new players
clearlag.yml ← auto-remove entities & fight lag
jumpads.yml ← launch-pad blocks
tempfly.yml ← temporary flight by rank
warnings.yml ← player warning system
modgui.yml ← moderation GUI worlds filter
help.yml ← /help command content
rules.yml ← /rules command content
motd.yml ← join message of the day
craft-actions.yml ← rewards when crafting items
shards.yml ← cross-server world sharding
What Does It Do?
Maintenance mode lets you temporarily close the server to regular players while you do updates,
fix bugs, or prepare an event. When enabled:
- Players not on the whitelist are blocked from joining with a custom message
- The server list shows a custom maintenance MOTD
- Optionally, the server list shows as full (hides the join button)
- A countdown timer can show time until maintenance ends
Quick Start
Enable maintenance: /maintenance on
Add yourself to the whitelist: /maintenance whitelist add Steve
Set a timer (optional): /maintenance clock set 2h
When done, disable: /maintenance off
Config File: server/maintenance.yml
maintenance:
enabled: false
motd:
line1: "&c&l⚠ MAINTENANCE ⚠"
line2: "&7Server is under maintenance"
kick-message: "&c&l⚠ MAINTENANCE ⚠\n&7Please try again later."
join-denied-message: "&cServer is under maintenance."
whitelist: []
timer:
end-time: 0
show-in-motd: true
format: "&eTime remaining: &f{TIME}"
server-list:
show-as-full: true
hide-player-count: false
Commands
| Command | What It Does |
/maintenance on | Enable maintenance mode — non-whitelisted players can't join |
/maintenance off | Disable maintenance — everyone can join again |
/maintenance toggle | Switch on/off |
/maintenance status | See current state, whitelist size, timer info |
/maintenance whitelist add <name> | Add player to whitelist (can join during maintenance) |
/maintenance whitelist remove <name> | Remove from whitelist |
/maintenance whitelist list | View the full whitelist |
/maintenance whitelist clear | Clear the entire whitelist |
/maintenance clock set <time> | Set a countdown timer (e.g. 2h30m) |
/maintenance clock add <time> | Add time to existing timer |
/maintenance clock remove <time> | Remove time from timer |
/maintenance clock clear | Delete the timer |
/maintenance motd set line1 <text> | Update MOTD line 1 live |
/maintenance serverlist full <true/false> | Toggle show-as-full |
/maintenance reload | Reload maintenance.yml |
Player Examples
🧱 Steve (Admin)
Steve is installing a new update. He enables maintenance, adds himself to the whitelist, and sets a 1-hour timer so players know when to come back.
/maintenance on
/maintenance whitelist add Steve
/maintenance clock set 1h
🎀 Alex (Regular Player)
Alex tries to connect but sees: "⚠ MAINTENANCE ⚠ — Please try again later." and in the server list: "Time remaining: 59m 12s". She'll come back later.
🎩 Notch (VIP)
Notch was added to the whitelist by Steve. He connects normally and helps test the new update while maintenance is active.
👾 Herobrine (Staff)
Herobrine has oreo.maintenance.admin permission and uses /maintenance status to check how many minutes remain, without needing to be on the whitelist (staff bypass).
What Does It Do?
When hundreds of item stacks pile up on the ground, or thousands of mobs accumulate, your server's
TPS (Ticks Per Second) drops below 20 — causing lag. OreoLag automatically cleans up:
- Ground items — diamonds, wood, dirt that players dropped
- Mobs — cows, zombies, etc. (you can whitelist specific types)
- Other junk — experience orbs, arrows, primed TNT, falling blocks
Config File: server/clearlag.yml
enable: true
global-broadcasts:
enabled: true
use-permission-for-broadcasts: false
permission: "bukkit.broadcast"
area-filter: []
kill-mobs:
enabled: true
remove-named: false
mob-filter: []
auto-kill-mobs:
enabled: false
interval: 600
broadcast-removal: true
broadcast-message: "&6[OreoLag] &aRemoved +RemoveAmount mobs!"
warnings:
- "time:60 msg:&6[OreoLag] &eMobs will be killed in 60s!"
- "time:10 msg:&6[OreoLag] &cMobs killed in 10s!"
auto-removal:
enabled: true
autoremoval-interval: 480
broadcast-removal: true
broadcast-message: "&6[OreoLag] &aRemoved +RemoveAmount entities!"
flags:
item: true
experience-orb: true
falling-block: true
primed-tnt: true
projectile: false
boat: false
minecart: false
itemframe: false
item-filter: []
warnings:
- "time:60 msg:&6[OreoLag] &eEntities cleared in 60s!"
- "time:10 msg:&6[OreoLag] &cClearing in 10s!"
command-remove:
enabled: true
broadcast-removal: true
tps-meter:
enabled: false
interval: 15
tps-trigger: 14.0
tps-recover: 19.0
broadcast-enabled: true
commands: []
recover-commands: []
Warning Format
Warnings use a special inline format: time:<seconds> msg:<message>
warnings:
- "time:300 msg:&6[OreoLag] &eItems will be cleared in 5 minutes!"
- "time:60 msg:&6[OreoLag] &eItems cleared in 60 seconds!"
- "time:10 msg:&6[OreoLag] &cClearing in 10s! Pick up your items!"
Commands
| Command | What It Does | Permission |
/olagg help | Show command list | — |
/olagg clear | Manually clear entities now | oreo.lag.clear |
/olagg killmobs | Manually kill all mobs now | oreo.lag.killmobs |
/olagg reload | Reload clearlag.yml | oreo.lag.reload |
Player Examples
🧱 Steve (Farmer)
Steve has 200 cows in his farm. He added "COW" to auto-kill-mobs.mob-filter so clearlag never kills them.
🎀 Alex (Builder)
Alex is mining. She added "DIAMOND" to item-filter so her diamonds are never auto-cleared.
🎩 Notch (Admin)
Notch has oreo.lag.clear. He sees TPS drop to 12 and runs /olagg clear to instantly remove thousands of items. TPS climbs back to 19.
👾 Herobrine (Player)
Herobrine hears "Items cleared in 10s!" and quickly picks up his dropped netherite gear (netherite is in item-filter, so it's safe anyway).
What Does It Do?
A Jump Pad is an invisible trigger attached to any specific block coordinate.
When a player walks over that block, they get launched with a configurable velocity — great for
parkour, arenas, hubs, or just having fun.
How it works: Jump pads detect the block under the player's feet
(one block below their position). Stand on top of the block, and you're launched.
Creating a Jump Pad
Stand on (or next to) the block you want to be the jump pad.
Run: /jumpad create <name> [power] [upward] [useLookDir]
The pad is placed at the block directly under your feet.
Test it by walking over the block — you should be launched!
To remove: /jumpad remove <name>
Config File: server/jumpads.yml
This file stores the pad data — you don't edit it manually. Use the command to create pads.
jumpads:
launch_1:
name: launch_1
world: world
x: 100
y: 64
z: 200
power: 1.2
upward: 1.0
useLookDir: true
Understanding Power Values
power
Horizontal speed. 1.0 is a gentle push. 2.5 is a strong fling. Use 0 for a pure vertical jump.
upward
Vertical speed. 0.5 is a small hop. 1.5 is a big leap. 2.0 sends you very high.
useLookDir
true: launched where you're looking. false: always launched straight up.
Commands
| Command | What It Does |
/jumpad | Show help & list all pads |
/jumpad create <name> [power] [upward] [useLookDir] | Create a pad at block under you |
/jumpad remove <name> | Delete a pad |
/jumpad list | List all pads |
/jumpad info <name> | View location & settings of a pad |
Player Examples
🧱 Steve (Hub Admin)
Steve places a gold block in the hub lobby and creates a jump pad on it:
/jumpad create lobby_launch 1.5 2.0 false
Now any player stepping on that gold block flies straight up, landing on a platform above.
🎀 Alex (Parkour Builder)
Alex creates a directional pad for her parkour course. Players must be facing the right direction to land correctly:
/jumpad create parkour_jump1 2.0 1.2 true
🎩 Notch (Player)
Notch wants to know what's at each pad. He uses:
/jumpad info lobby_launch
He sees: World: world | XYZ: 100 64 200 | Power: 1.5 | Upward: 2.0
What Does It Do?
TempFly gives players the ability to fly for a limited time. When the time runs out,
flight is automatically disabled. Different ranks can get different durations. This is perfect for
reward systems, donor perks, or event prizes.
Note: TempFly respects game modes — switching to Creative or Spectator cancels the timer.
Reminder messages are sent at 60s, 30s, 10s, and 5s remaining.
Config File: server/tempfly.yml
use-permission-groups: true
permission-groups:
vip: 300
premium: 600
elite: 1800
use-luckperms-groups: true
luckperms-groups:
default: 180
vip: 300
premium: 600
How Duration Resolution Works
Permission groups checked first (if use-permission-groups: true). Plugin checks if the player has oe.tempfly.<group>.
LuckPerms primary group checked second (if use-luckperms-groups: true). The player's main LP group name is matched.
If neither matches, no duration — player gets message: "You don't have permission to use temporary fly."
Special permission: Players with oe.tempfly.infinite have flight enabled permanently on join.
Commands
| Command | What It Does |
/tempfly or /tempfly on | Start temporary flight (uses your rank's duration) |
/tempfly off | Cancel flight early |
/tempfly time | Check how much time remains |
Alias: /tfly | Same as /tempfly |
Player Examples
🎀 Alex (VIP Rank)
Alex has the "vip" LuckPerms group. She types:
/tempfly
She gets: "Temporary fly enabled for 5m." After 5 minutes, flight is removed and she gets a warning at 60s, 30s, 10s, 5s.
🎩 Notch (Elite Rank)
Notch has the "elite" LuckPerms group — he gets 30 minutes of flight. He uses:
/tfly time
He sees: "Time remaining: 27m 45s"
🧱 Steve (Default)
Steve is in the default group (180 seconds = 3 min). He activates fly, builds quickly, then cancels early to save time:
/tempfly off
Flight cancelled. His session time is gone — he'll need to use /tempfly again to start fresh.
👾 Herobrine (Owner)
Herobrine has oe.tempfly.infinite. Every time he joins, flight is enabled automatically with no timer.
What Does It Do?
Staff can give players formal warnings. The system tracks how many warnings each player has and
automatically applies a punishment (kick, temp ban, or ban) when the limit is reached.
Warnings can expire after a set time. All data is saved to warnings.yml.
Config File: server/warnings.yml
warnings:
max-warnings: 3
max-action: tempban
max-action-duration: 7d
broadcast-on-warn: false
expire-after: ""
Commands
| Command | What It Does | Permission |
/warn <player> <reason...> | Add a warning to a player (online or offline) | oreo.warn |
/warnings [player] | View your own warnings (or another player's) | oreo.warnings |
/unwarn <player> <warn-id|all> | Remove a specific warning or all warnings | oreo.unwarn |
Tip: When using /unwarn, tab-complete the player name first, then
tab-complete to see all their active warning IDs (short 8-char codes like a1b2c3d4).
Use /unwarn Steve all to clear everything.
Viewing others' warnings: To check another player's warnings, you need
oreo.warnings.others permission. Without it, /warnings only shows your own.
How It Works Step by Step
Staff member types /warn Alex Spamming in chat
Alex receives a message: "You have been warned by Notch: Spamming in chat. Total warnings: 1/3"
Staff sees: "Warned Alex: Spamming in chat (1/3 warnings)"
If broadcast-on-warn: true, all staff see the warning in chat
On the 3rd warning, the punishment fires automatically — in this case, a 7-day tempban
Player Examples
🎀 Alex (Gets Warned)
Alex was spamming chat. Notch warns her twice this week.
/warn Alex Spamming
/warn Alex Advertising another server
Alex now has 2/3 warnings. One more and she's tempbanned for 7 days.
🎩 Notch (Moderator)
Notch wants to check Alex's warning history:
/warnings Alex
He sees both warnings with their IDs, dates, and reasons.
🧱 Steve (Admin)
Steve decides one warning was unfair and removes it:
/unwarn Alex a1b2c3d4
That specific warning is removed. Alex is back to 1/3.
👾 Herobrine (Bad Player)
Herobrine gets his 3rd warning. The system automatically applies the configured action: tempban for 7 days. His warning count is then cleared.
What Does It Do?
ModGUI provides a visual, clickable GUI panel for staff members. Instead of memorizing dozens of
commands, moderators can open one menu and access everything: player inspection, inventory viewing,
banning, kicking, freezing, notes, IP lookup, chat moderation, world management, and performance tools.
How to Open
Make sure you have the oreo.modgui.open permission
Run /modgui — a 6-row GUI opens
Click items to navigate to sub-menus
Config File: server/modgui.yml
worlds: {}
Available Sub-Menus
Player Menu
Search for a player by name. Opens their personal actions panel.
Player Actions
Ban, kick, mute, freeze, teleport, view inventory, check IP, add notes.
Inspect Menu
Full player profile: playtime, warnings, ban status, alt accounts, location.
InvSee
View and optionally modify another player's inventory in real-time.
EcSee
View another player's ender chest contents.
IP / Alts Menu
See all accounts that have logged in from the same IP address.
Player Notes
Add/view private staff notes about a player. Notes persist across sessions.
Chat Moderation
Mute chat globally, set slowmode, toggle staff chat mode.
Server Menu
Server-wide controls: broadcast, emergency clear, server info.
World Actions
Toggle PvP, mob spawning, gamerules per-world, world whitelist.
TPS Dashboard
Real-time performance panel: TPS graph, entity counts, chunk info.
Perf Tools
Performance utilities: clearlag trigger, chunk analysis, memory info.
Freeze Feature
Moderators can freeze a player (from the Player Actions menu or by command). A frozen player
cannot move, chat, or interact. This is useful for mid-investigation holds.
Player Examples
🎩 Notch (Moderator)
Notch suspects a player is hacking. He opens /modgui, navigates to Player Menu, searches "Herobrine", then clicks Inspect to see his movement stats and recent activity.
👾 Herobrine (Under Investigation)
Herobrine is frozen by Notch. He cannot move. He receives a message: "You have been frozen by a moderator."
🧱 Steve (Admin)
Steve uses the World Actions menu to quickly toggle PvP off in the mining world without remembering any gamerule commands.
Config: server/help.yml
help:
mode: paginated
simple-text:
- "&6=== SERVER HELP ==="
- "&e/home &7- Teleport to your home"
- "&e/warp &7- List server warps"
header: "&8&m------&r &6&lServer Help &7(Page {page}/{total}) &8&m------"
footer: "&8&m------&r &7Use &e/help <page> &7to navigate &8&m------"
entries-per-page: 8
entries:
- command: "&e/home"
description: "Teleport to your home"
- command: "&e/ban"
description: "Ban a player (staff only)"
permission: "oreo.ban"
Permission-gated entries: If an entry has a permission field, only players with
that permission will see it in /help. This lets you show different commands to staff vs players.
Config: server/rules.yml
rules:
lines:
- "&6=== SERVER RULES ==="
- "&e1. &7No hacking or using unfair advantages"
- "&e2. &7Be respectful to all players"
- "&e3. &7No griefing or stealing"
- "&e4. &7No spamming or advertising other servers"
- "&e5. &7Follow staff instructions"
- "&7Breaking rules may result in a ban."
Commands
| Command | What It Does | Permission |
/help [page] | Show help page (default: page 1) | oreo.help |
/help reload | Reload help.yml | oreo.help.admin |
/rules | Show the server rules | oreo.rules |
/rules reload | Reload rules.yml | oreo.rules.admin |
Player Examples
🧱 Steve (New Player)
Steve just joined and wants to know what commands are available. He types /help and sees page 1 of the help list. He types /help 2 for page 2.
🎩 Notch (Moderator)
Notch types /help and sees additional entries in the list — like /ban and /kick — that regular players don't see because they require oreo.ban.
🎀 Alex (Player)
Alex was arguing about a rule with another player. She types /rules to show the official rules in chat, ending the argument.
What Does It Do?
When a player joins the server, they receive a customizable join message after a short delay.
You can configure:
- A default message all players see
- A first-join message for brand new players
- Group-specific messages for different ranks (VIP, staff, etc.)
Config File: server/motd.yml
motd:
enabled: true
delay-ticks: 20
default:
- "&6Welcome back, &e%player%&6!"
- "&7There are &a%online% &7players online."
- "&7Type &e/help &7for commands."
first-join:
enabled: true
lines:
- "&a&lWELCOME TO THE SERVER, &e&l%player%&a&l!"
- "&7This is your first time here. Type &e/rules &7to read the server rules."
- "&7Need help? Type &e/help &7for all commands."
groups:
- permission: "group.admin"
lines:
- "&c[ADMIN] &7Welcome back, &c%player%&7!"
- "&7Staff channel: /staffchat"
- permission: "group.vip"
lines:
- "&6[VIP] &7Welcome, &6%player%&7!"
- "&7Your VIP perks: /fly, /nick, /kit vip"
Placeholders
| Placeholder | Replaced With |
%player% | The joining player's username |
%online% | Number of currently online players |
Group priority: Groups are checked top to bottom. The first matching group wins.
Put more specific ranks (admin, owner) before general ones (vip, default).
Commands
| Command | What It Does |
/motd | Show the MOTD again (your rank's version) |
/motd reload | Reload motd.yml (requires oreo.motd.admin) |
Player Examples
🧱 Steve (First Join)
Steve joins for the first time. He sees:
"WELCOME TO THE SERVER, STEVE!"
"This is your first time here. Type /rules to read the rules."
🎀 Alex (VIP)
Alex has the "vip" LuckPerms group, which gives group.vip. She sees the VIP MOTD: "[VIP] Welcome, Alex! Your VIP perks: /fly, /nick, /kit vip"
🎩 Notch (Admin)
Notch sees the admin MOTD — he's checked first because admin group is listed before VIP in config. He also sees: "Staff channel: /staffchat"
👾 Herobrine (Default)
Herobrine has no special rank. He sees the default MOTD. After closing his screen he types /motd to read it again.
What Does It Do?
Craft Actions let you reward players for crafting specific items. When someone crafts a configured item,
the server can:
- Run console commands (give money, effects, broadcast, etc.)
- Send the player a custom MiniMessage formatted message
Works for both vanilla items (like DIAMOND_SWORD) and custom-named recipes from the CustomCraft system.
Config File: server/craft-actions.yml
actions:
DIAMOND_PICKAXE:
commands:
- "eco give %player% 50"
- "broadcast &e%player% crafted a Diamond Pickaxe!"
message: "<green>You earned <gold>$50</gold> for crafting this pickaxe!</green>"
DIAMOND_SWORD:
commands:
- "effect give %player% strength 60 1"
message: "<aqua>You feel powerful wielding this sword!</aqua>"
my_magic_staff:
commands:
- "give %player% blaze_rod 1"
message: "<yellow>You crafted a magical staff!</yellow>"
Available Placeholders
| Placeholder | Replaced With |
%player% | Crafting player's username |
%player_uuid% | Player's UUID |
%world% | World the player is in |
%item% | Material name of the crafted item |
%amount% | How many were crafted |
Commands run as console. You don't need to prefix with /.
Just write the command as you would in console: eco give %player% 100
Player Examples
🧱 Steve (Miner)
Steve crafts his first Diamond Pickaxe. He immediately sees:
"You earned $50 for crafting this pickaxe!"
And the whole server sees a broadcast that he crafted it.
🎀 Alex (Fighter)
Alex crafts a Diamond Sword and instantly gets a Strength 1 effect for 60 seconds. The action fired silently — no broadcast, just a personal message.
🎩 Notch (Admin, Reloading)
Notch added a new craft action for NETHERITE_SWORD. He runs /oecraft reload to apply the change without restarting the server.
Advanced Feature: Sharding requires multiple Minecraft servers connected by BungeeCord/Velocity
and a Redis server. This is for large networks (Donut SMP style). If you have one server, you don't need this.
What Does It Do?
Imagine a world so large it can't run on one server. Sharding splits the world into a grid of zones,
each hosted on its own server. When a player walks from one zone to the next, they're silently
transferred to the correct server — the world feels endless and seamless.
Config File: server/shards.yml
sharding:
enabled: false
proxy: VELOCITY
transfer-cooldown-ms: 3000
redis:
host: localhost
port: 6379
password: ""
worlds:
world:
enabled: true
mode: GRID
shard-size: 10000
transfer-buffer: 12
safe-zone: 16
dimension-servers:
overworld: "shard-%shard%"
How It Works
Each server is started with a system property: -DshardId=shard-0-0 (sets which grid cell this server owns)
Player walks toward the edge of shard-0-0 (within 12 blocks of border)
Plugin calculates the target shard: shard-1-0
Player state (health, inventory, velocity, potion effects) is saved to Redis with a 5-second TTL
Player is silently transferred to shard-1-0 server via BungeeCord/Velocity
On the new server, the ShardJoinListener reads the Redis handoff data and restores the player's exact state
GRID vs RADIAL Mode
GRID Mode
World is divided into a rectangular grid. Shard IDs use X,Z coordinates: shard-0-0, shard-1-0, shard-0-1, etc. Best for square/rectangular worlds.
RADIAL Mode
World is divided into concentric rings from the center. Shard IDs: shard-ring-0, shard-ring-1, etc. Best for circular/island worlds.
Safe Zone
The safe-zone setting creates a combat-free border buffer.
Players within safe-zone blocks of a shard boundary cannot be attacked.
This prevents players from exploiting border transfers during combat.
Commands
| Command | What It Does | Permission |
/shard status | Show current shard info and Redis connection status | oreo.shard.admin |
/shard create <world> | Create a new world shard configuration | oreo.shard.admin |
/shard list | List all configured shard worlds | oreo.shard.admin |
/shard transfer <player> <shard> | Manually transfer a player to a shard | oreo.shard.admin |
All Permissions
Maintenance
| Permission | What It Allows |
oreo.maintenance.admin | All maintenance commands (enable, disable, whitelist, clock, etc.) |
oreo.maintenance.bypass | Join during maintenance without being on the whitelist |
ClearLag
| Permission | What It Allows |
oreo.lag.clear | /olagg clear — manually clear entities |
oreo.lag.killmobs | /olagg killmobs — manually kill mobs |
oreo.lag.reload | /olagg reload — reload clearlag config |
JumpPads
| Permission | What It Allows |
oreo.jumpad | Create, remove, and manage jump pads |
TempFly
| Permission | What It Allows |
oe.tempfly.use | Use /tempfly command |
oe.tempfly.infinite | Permanent flight (enabled on every join) |
oe.tempfly.<group> | Duration from permission-groups config (e.g. oe.tempfly.vip) |
Warnings
| Permission | What It Allows |
oreo.warn | Issue warnings with /warn |
oreo.warnings | View own warnings with /warnings |
oreo.warnings.others | View another player's warnings |
oreo.unwarn | Remove warnings with /unwarn |
oreo.warn.see-broadcasts | Receive warning broadcast messages |
ModGUI
| Permission | What It Allows |
oreo.modgui.open | Open /modgui panel |
Help & Rules
| Permission | What It Allows |
oreo.help | Use /help |
oreo.help.admin | /help reload |
oreo.rules | Use /rules |
oreo.rules.admin | /rules reload |
MOTD
| Permission | What It Allows |
oreo.motd | Receive MOTD on join and use /motd |
oreo.motd.admin | /motd reload |
Shards
| Permission | What It Allows |
oreo.shard.admin | All /shard commands |
Frequently Asked Questions
How do I put the server in maintenance but still let my staff join?
Enable maintenance: /maintenance on
Then add each staff member: /maintenance whitelist add Steve
Alternatively, if you give staff the oreo.maintenance.bypass permission in LuckPerms,
they can join without being on the whitelist at all.
ClearLag removed my items! How do I protect specific items?
In server/clearlag.yml, add items to auto-removal.item-filter:
item-filter:
- DIAMOND
- NETHERITE_INGOT
- NETHERITE_SCRAP
- ELYTRA
These items will never be cleared, even during auto-removal. Reload with /olagg reload.
ClearLag killed my named pet! How do I protect it?
In server/clearlag.yml, set auto-kill-mobs.remove-named: false.
This tells ClearLag to never kill mobs that have a custom name (including pets named with a name tag).
You can also add specific entity types to mob-filter to never kill them:
auto-kill-mobs:
mob-filter:
- WOLF
- CAT
- HORSE
Can TempFly sessions survive a server restart?
No. TempFly sessions are stored in memory only. If the server restarts, all active sessions
are lost. Players will need to use /tempfly again when they reconnect.
If you need persistent fly time (survives restarts), consider using a permission plugin to
grant oe.tempfly.infinite for a limited time using a timed permission plugin.
A player reached max warnings but nothing happened — why?
Check the max-action setting in server/warnings.yml. If it's set to
none, the system records the warnings but takes no automated action.
Change it to kick, tempban, or ban.
Also ensure max-warnings is set to a reasonable number (e.g. 3).
My /help shows too many entries on one page. How do I change it?
In server/help.yml, change entries-per-page:
entries-per-page: 5 # Show 5 commands per page instead of 8
Then run /help reload to apply the change.
Can I show different /motd to VIPs vs default players?
Yes! Use the groups section in server/motd.yml. Add a group entry for each rank:
groups:
- permission: "group.vip"
lines:
- "&6Welcome back, VIP %player%!"
- "&7Your exclusive /kit vip is ready!"
The first matching group wins, so put higher-priority groups (admin, owner) at the top of the list.
How do craft actions interact with custom recipes from /oecraft?
Craft actions work for both vanilla and custom recipes.
- For vanilla items, use the uppercase Material name as the key:
DIAMOND_SWORD
- For custom recipes created with
/oecraft, use the recipe name (lowercase): my_special_sword
The system automatically detects which type the key is — if Material.valueOf(key) fails,
it treats it as a custom recipe name.
JumpPads aren't making sounds or particles. Why?
The sound and particle names must match Minecraft's registry keys (all lowercase with underscores).
For sounds, use the Minecraft sound name format:
entity_firework_rocket_launch, block_note_block_pling
For particles, use: cloud, flame, end_rod, fireworks_spark
You can look up valid names in the Minecraft wiki or by using tab-complete in-game with the /particle command.
Is sharding suitable for a single-server setup?
No. Sharding is designed for networks with multiple Minecraft servers behind BungeeCord or Velocity,
plus a Redis server for state handoff. If you only have one server, leave sharding.enabled: false
and ignore the shards.yml file.
Sharding is useful when your world is so large that one server can't handle all the chunks efficiently —
typically for creative/exploration servers with very active populations.
How do I reload all server module configs at once?
Most modules have their own reload subcommand. Currently there's no single "reload all" command for
server modules. You need to reload each module individually:
/maintenance reload
/olagg reload
/help reload
/rules reload
/motd reload
/oecraft reload
Or use the global /oe reload if OreoEssentials supports a full plugin reload.