Skip to content
OrePlugins

SurvivalCore

Everything a survival server needs, and the layer the rest of them plug into.

Product pagev1.0.01.21 through 1.26 · Java 21+

Installation

  1. 1Install Vault. SurvivalCore’s money works without it, but no other plugin can see that money without it — and the whole point of the economy module is that the rest of the catalogue finds a provider on a server with no EssentialsX.
  2. 2Install LuckPerms if you want ranks. Everything else works without it; the ranks module disables itself with an explanation and says so once at startup.
  3. 3Drop the jar into plugins/ and restart. Paper fetches the SQLite driver itself on first boot. A server with no outbound network that day sees SurvivalCore refuse to enable with an instruction rather than a stack trace: a /sethome that silently forgets is worse than no /sethome.
  4. 4Stand where you want players to arrive, look at what you want them to see, and run /setspawn. That is a working server — every ordinary player command already defaults to everyone.

The first thing to check: what did SurvivalCore actually get?

Run /orecore commands. SurvivalCore asks for a lot of very common names — /home, /spawn, /msg, /back, /kit — and Bukkit gives each one to whichever plugin registered it first and tells nobody. On a server that already runs EssentialsX or CMI, some of those names are theirs, and a player typing /home reaches their version while concluding SurvivalCore is broken.

You will not usually have that problem, because the overlapping modules stand down on their own when they see EssentialsX or CMI installed. /orecore modules prints every module, whether it is on, and why — a module reading "auto - deferring to EssentialsX" is switched off deliberately.

Set one to true in config.yml if you want SurvivalCore’s version instead, and read /orecore commands afterwards to see which names you actually won.

Spawn, and the direction people face

You stand where you want the spawn, looking at the build you want new players to see, you run /setspawn — and on most plugins everybody then arrives staring at a wall. The angles get dropped between capturing the location and using it, because the vanilla world spawn is a block position with a facing bolted on late that several paths ignore.

SurvivalCore stores its own spawn as five numbers — x, y, z, yaw and pitch — and sends every arrival to that. It writes the vanilla world spawn too, so a compass and anything else reading it still agree about the block. The facing is ours; the block is shared.

/setspawn -snap rounds the facing to the nearest of eight compass points, for lining up with a corridor rather than with a build. /setfirstspawn sets a separate place for players joining for the very first time, and /setfirstspawn clear removes it. If you do not want that distinction, never run it and you will never meet it.

Placement happens before the client is told anything, so a new player simply appears where they should be rather than being visibly yanked there a second after their world loads. Homes and warps keep their facing from the same code.

Money, and the plugins that were waiting for it

SurvivalCore registers a Vault economy. Watch for "Registered as the Vault economy provider" in your log, and then for "Hooked Vault economy: SurvivalCore" from MarketPulse, ShopSigns, MarketStalls, ChatGames and PetCompanions as they enable.

If you already run an economy plugin, SurvivalCore does not register. It says so and leaves the existing one alone, because two economies on one server means money that only half your plugins can see. Remove the other one, or set modules.economy to false to use theirs deliberately.

Balances are stored as whole cents in an integer column, never as a floating point number — a balance kept in one is eventually wrong by a penny nobody can account for, and it compounds across a shop’s turnover.

Storage, and the question that matters behind a proxy

sqlite is the default: one file, no setup, local to this server. If you run one Minecraft server that is the right answer.

If you run a proxy with more than one backend it is not. A player who earns money on one server and finds themselves broke on the next does not read that as "SQLite is per-server", they read it as stolen money — and the same goes for homes, playtime and rank progress.

Set storage.type to mysql, fill in the connection details, and point every backend at the same database. Paper downloads the driver on first start. Tables are prefixed survivalcore_, so sharing a database with other plugins is fine.

Ranks

A rank is a LuckPerms group. SurvivalCore keeps no second copy of who is what, because two systems that both own a player’s rank disagree the first time somebody uses the other one — and the one an admin reaches for is always LuckPerms.

Create the groups first with /lp creategroup, or the rank-up will appear to work and change nothing. SurvivalCore checks this at startup and warns you by name for every group in your ladder that does not exist.

Requirements can be playtime (counted here, and it stops while AFK), money, experience level, or any of the counters SurvivalCore keeps — blocks mined, ores mined, mobs killed, crops harvested and more. They can also be anything another OrePlugins plugin has registered, written as plugin:thing. Run /orecore integrations to see exactly what is available on your server, with the real names to type.

A requirement nothing can measure is skipped, with a warning in the console, and never failed. Uninstall a plugin and the ranks that referenced it get slightly easier rather than becoming permanently unreachable with no message anywhere saying why. The first problem is visible and recoverable; the second is neither.

Rewards and kits

One syntax everywhere — daily rewards, rank payouts, kits and vote rewards: "money: 500", "item: DIAMOND 3", "xp: 50", "command: give <player> bread 8", or "cratekeys:key: vote" for something another plugin registered.

A kit is a reward list with a cooldown on it — 24h, 30m, or the word once. Each kit’s permission defaults to survivalcore.kit.<id>, so a new kit is locked until you grant it. That direction is deliberate: the kit you forget to lock is always the good one.

Nothing is marked claimed until something has actually been given. A player whose inventory was full has not lost their daily reward, and cannot be told to come back tomorrow for something they never received.

The guide, the menu, and your own pages

/guide is the index and /menu is the hub, and both fill themselves in. Every OrePlugins plugin you install adds its own page and its own tile without you writing anything and without SurvivalCore needing an update to know about it.

Drop a YAML file in plugins/SurvivalCore/guide/ for your own pages — server rules, lore, a warning about the nether. It appears in /guide beside the plugin pages. A file named after a plugin’s id replaces that plugin’s page, which is how you reword one without touching the plugin.

plugins/SurvivalCore/integrations/ holds one small manifest per product, written out on first start. They are what give each plugin its guide page, its menu tile and any rewards it exposes — without that plugin being rebuilt or knowing SurvivalCore exists. Edit them freely: they are never overwritten by an update, and deleting one brings it back on the next start.

Reloading, and what needs a restart

/orecore reload re-reads config.yml, messages.yml, ranks, rewards, kits, warps, guide pages and manifests, and tells you so.

Module switches, commands.disabled, storage settings and the teleport warmup and cooldown need a restart. Commands and listeners are claimed at startup, and Bukkit offers no clean way to hand a command name back mid-run without leaving the client’s command tree stale.

The reload message says exactly what it did and did not touch, rather than implying it did everything — the commonest way a reload wastes an afternoon is by looking like it applied a setting it never reads again.

Commands

SurvivalCore commands and permissions
CommandWhat it doesPermission
/setspawn [-snap] · /setfirstspawnSpawn where you stand, facing where you look. -snap rounds to a compass point; first-join spawn is a separate place.survivalcore.setspawn
/spawn · /home [name] · /sethome [name] · /warp [name]The everyday set. All of them keep the facing they were saved with.everyone by default
/tpa · /tpahere · /tpaccept · /back · /rtpTeleports, with one shared warmup, cooldown and cancel-on-move so no command can dodge the rules.everyone by default
/balance · /pay · /baltop · /eco give|take|set|resetMoney. The same money every Vault-aware plugin on the server sees.survivalcore.eco for the admin half
/rankup · /ranks · /rank check|setThe ladder, what is still missing for the next rung, and the admin override.survivalcore.rank.admin for /rank
/daily · /kit [name]Rewards and kits. Nothing is marked claimed until something has actually been given.everyone by default
/guide [topic] · /menuThe in-game guide and the hub — both grow a page and a tile per installed plugin, on their own.everyone by default
/orecore modules|commands|integrations|placeholders|reload|wipeWhat is on and why, which command names you actually own, and what every other plugin has registered.survivalcore.admin

Still stuck?

Post in Discord with your server version and the relevant part of the log. That is almost always enough to get a straight answer the same day.

Get help