Origins SMP Server: Full Setup Guide for Minecraft Race Abilities
Origins turns a regular SMP into something far more interesting: every player picks a race with its own pros and cons. Avian flies but takes fall damage and freezes fast. Merling breathes underwater but suffocates on land. In this guide we walk through how to spin up a proper Origins server on Fabric, which mods belong on the client and the server, how to add a custom origin via datapack, and how to dodge the usual rakes.
What Origins is and why it is a mod, not a plugin
Origins is a mod by apace100, available on Modrinth and CurseForge. It adds a "origin" system: when a player joins for the first time, they go through a race selection screen, and that race grants unique passive and active abilities, buffs, and drawbacks.
Key point: Origins is a mod, not a plugin. It will never run on bare Paper or Spigot. The reason is simple: the mod hooks into core player mechanics (flight, breathing, fall damage, physics) at a level the Bukkit API doesn't expose. So you'll build the server on Fabric, or as an alternative on Forge through the third-party port Origins-Forge.
In most cases the SMP community sits on Fabric: it's the original, updates faster to new Minecraft versions, and the supporting mod ecosystem is healthier. The Forge port works but lags behind on versions and sometimes clashes with other mods.
Minecraft versions and compatibility
Origins actively supports 1.20.1 (legacy stable) and 1.21.x (current). A few SMPs still run on 1.19.4, but there's no point starting a new server on that version.
Things to lock in your head right away:
- Every player must run the same mods on the client as the server. Origins is not a one-sided server mod.
- The Origins version on client and server has to match exactly. A minor-version drift often breaks race selection.
- Dependencies (Fabric API, Apoli, Calio) ship to the client too.
If players struggle with installation, the easiest move is to bundle a modpack in Modrinth App or Prism Launcher and hand out the link.
Installing the Fabric server
Start with the server side. Make a folder, grab the Fabric Server Launcher from fabricmc.net/use/server and drop it in. A standard launch script looks like this:
#!/bin/bash
java -Xms6G -Xmx8G \
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC \
-XX:+AlwaysPreTouch -XX:G1HeapRegionSize=8M \
-XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 \
-jar fabric-server-launch.jar nogui
After the first run you'll get eula.txt and server.properties. Accept the EULA, and in server.properties usually drop view-distance to 8 (Origins adds load, 10+ becomes noticeable) and leave simulation-distance at 8.
Which mods go in mods/
The minimum set for a working Origins server:
- Fabric API - base dependency, nothing runs without it
- Origins - the mod itself
- Apoli - the "power engine" that Origins calls under the hood
- Calio - library for loading custom datapack data
- Cardinal Components API - per-player data storage (the chosen origin)
- Cloth Config API - UI for settings
All six go into mods/ on the server and into .minecraft/mods/ on the client. Versions must come from the same Minecraft version - if the server is on 1.21.1, don't grab mods built for 1.21.4.
If you want to layer more races on top of the defaults, popular packs include Origins: Classes (classes on top of races) and Origins: Extra. They mix in fine, just confirm compatibility with your Origins version.
The 12 default origins and what they do
Out of the box Origins ships twelve races:
- Avian - double jump, slow fall, but penalties from rain and warm armor
- Arachnid - climbs walls, spins temporary webs, fears spider bites
- Blazeborn - immune to fire and lava, hurt by water
- Elytrian - born flier with built-in elytra, fragile health
- Enderian - free ender-pearl teleport, weak to water
- Feline - 18 hearts, silent walking, can't eat plants
- Human - vanilla baseline, no bonuses, the safe pick
- Inchling - tiny, fits in 1x1 holes, takes more damage
- Merling - water breathing, faster swimming, dries out in sun
- Phantom - phases through blocks in ghost form, fragile
- Shulk - natural armor, slow movement
- Starborne - night vision and regen, weakens during the day
On SMP servers admins often disable the most overpowered races (Elytrian, Phantom) or nerf them via datapack patches, otherwise balance crumbles by day three.
Custom origin via datapack
This is where it gets fun. Origins reads its config entirely from datapack format, so adding a race is a matter of writing a couple of JSON files and dropping them into a datapack.
Layout:
world/datapacks/custom_origins/
├── pack.mcmeta
└── data/
└── custom/
├── origins/
│ └── vampire.json
└── powers/
├── vampire_weakness_day.json
└── vampire_strength_night.json
Contents of pack.mcmeta:
{
"pack": {
"pack_format": 48,
"description": "Custom Origins for SMP"
}
}
The "Vampire" origin (origins/vampire.json):
{
"powers": [
"minecraft:fire_immunity",
"custom:vampire_weakness_day",
"custom:vampire_strength_night"
],
"icon": "minecraft:redstone",
"order": 5,
"impact": 2,
"name": "Vampire",
"description": "A creature of the night. Fragile under sun, lethal in darkness."
}
The "weakness during day" power (powers/vampire_weakness_day.json):
{
"type": "apoli:status_effect",
"effect": {
"effect": "minecraft:weakness",
"duration": 200,
"amplifier": 0,
"show_particles": false
},
"condition": {
"type": "apoli:in_overworld",
"inverted": false
}
}
The night-strength power follows the same pattern using an apoli:time_of_day condition. After laying out the files, restart the server or run /reload, and Vampire shows up in the selection menu for new players.
Performance and hardware
Origins itself is not catastrophically heavy, but it adds power-tick processing for every player, and with a lot of custom powers it stacks up. From practice:
- up to 10 online - 4 GB RAM is enough
- 10-30 online - 6-8 GB, with G1GC and tuned flags
- 30+ online - 8-12 GB, plus monitor TPS through Spark
The real bottleneck is not Origins, it's the other mods on top (Create, Distant Horizons, anything Lithium-incompatible). On its own, Origins eats fractions of a percent per player.
Compatibility with other mods
Origins lives well alongside most popular Fabric mods. Tested combos:
- Lifesteal - you can build a hybrid where each origin starts with a different heart count
- Distant Horizons - works, no server-side conflicts
- Create - works, but Avian with Create jetpacks turns into airborne circus
- Lithium / Krypton - Fabric optimizers, integrate cleanly
Trouble spots: vanilla anticheats like a hypothetical Fabric port of NoCheatPlus break everything. Avian flies, anticheat bans. Inchling is small, anticheat bans. The fix is either an Origins-aware anticheat like Vulcan Fabric with proper exemptions, or skip the anticheat entirely and lean on whitelist plus Discord moderation.
SMP format: whitelist, applications, seasons
Origins servers almost always run on whitelist plus Discord application. Without a whitelist, any "open" Origins SMP turns into anarchy within a week: someone goes Avian to grief from the air, someone goes Phantom to raid through walls.
A typical Discord application form:
- Age and timezone
- SMP experience
- Which origin you plan to pick and why
- Voice chat OK?
- Agree to the rules (no grief, no slurs)
Seasonal format is also a strong move. Every 2-3 months the world wipes, sometimes the allowed origin set changes, and the server restarts fresh. The community doesn't burn out, and new players don't walk into a world where the top faction has already built out the whole End.
Backups and seasonal reset
Origins stores the player's chosen race in their NBT data via Cardinal Components. That means a world backup must include world/playerdata/, otherwise players lose their races and get bumped back to the selection screen on next login.
A solid backup setup uses Restic or just a tar cron job:
0 */6 * * * tar -czf /backups/world-$(date +\%Y\%m\%d-\%H).tar.gz /opt/server/world
Before a seasonal reset many admins keep world/playerdata/ on the side: you can later hand players a "career save" so they remember who they played as last season.
DDoS and bot protection
Origins servers often become targets for bots and DDoS, especially when an influencer owner pulls in an audience. Standard moves:
- Whitelist through EasyWhitelist or the built-in mechanism cuts 90% of garbage
- A proxy filter in front of the server that scrubs TCP floods and weeds out fishy handshake packets
- Set
max-playersinserver.propertiesslightly above real online to make bot slot exhaustion harder - Monitoring via MineGuard or similar so you spot an attack early
Origins itself does not add any specific vulnerabilities, but any Fabric server with around 20 mods is heavier than vanilla, and falls over faster under pressure.
FAQ
Does Origins work on Paper or Spigot?
No. Origins is a mod, not a plugin. The Bukkit/Spigot/Paper API doesn't allow overriding player physics at the depth Origins needs. Fabric or the Forge port only.
How many origins can a datapack add?
Technically dozens. The real limit is server performance and selection UX: with 40 races in the menu, new players drown. Most SMPs cap at 12-20 origins total.
Is Origins free?
Yes, the mod is published under the MIT license on Modrinth and CurseForge. You can use it on any server, including monetized ones, without paying the author.
Can I play Origins without a server?
Yes. Origins works in single-player just the same. Drop the mod and its dependencies in .minecraft/mods/ and launch a Fabric profile.
How do I change my origin after the start?
By default you can't, the choice is one-shot. The /origin command in vanilla Origins is operator-only for debugging. To let players reroll, add helper mods like OriginCMD or flip a flag in config/origins.json allowing reselection.
Can I combine Origins and Lifesteal?
Yes, both mods live together cleanly. SMPs build nice hybrids: Avian starts with 16 hearts, Inchling with 12, Phantom with 14. PvP gets more tactical.
Why do players get a black screen on origin selection?
Almost always a version mismatch between client and server, or an outdated Fabric API. Confirm everyone's client has the same jar files as mods/ on the server.
What's next
If you're just spinning up a server, start with the minimum stack (Fabric API + Origins + Apoli + Calio + Cardinal + Cloth Config), the 12 default races, and a whitelist. Run a test session with 5-7 players, see which races dominate, and then nerf via datapack.
Once the community settles in, layer your own origins through JSON and plan a seasonal format. And don't forget protection: an Origins server with 50 online is a juicy bot target, and a filter in front of the game port pays for itself after the first attack.
Protect Your Server from DDoS Attacks
Free protection with 5-minute setup. 1 TB bandwidth included.
Try for FreeRelated Articles
Jobs Reborn: setting up RPG jobs on a Minecraft server (2026)
A full walk-through of Jobs Reborn 5.x in 2026: Vault install, Miner and Woodcutter configs, XP and payment formulas, placed-block anti-abuse, and /jobs reward shops.
MiniMessage: Modern Text Formatting for Minecraft Servers
MiniMessage is a text format from Adventure API that replaces outdated §-codes. Hex colors, gradients, clickable links, and hover tooltips.
Minecraft Server Monitoring: How to Track Attacks in Real Time
Complete guide to Minecraft server monitoring: from basic Linux tools to Prometheus + Grafana. Which metrics to track, how to set up Discord alerts, and how to automatically respond to DDoS attacks.