This guide explains how to create a proper manifest.json file for your Minecraft server. All manifests must follow the schema defined in servers/manifest-schema.json.
Create your server directory like this:
servers/
βββ your-server-name/
β βββ manifest.json
β βββ icon.png
β βββ bg.png
{
"server-address": ["your-server.com"],
"pretty-name": "Your Server Name",
"categorys": ["SURVIVAL"],
"assets": {
"icon": "./icon.png",
"background": "./bg.png"
}
}| Field | Type | Description | Example |
|---|---|---|---|
server-address |
Array of strings | Server addresses/domains | ["play.example.com", "mc.example.com"] |
pretty-name |
String | Display name for the server | "Epic Survival Server" |
categorys |
Array of strings | Server categories (see table below) | ["SURVIVAL", "PVP"] |
assets |
Object | Server images (see assets table) | {"icon": "./icon.png", "background": "./bg.png"} |
| Category | Description | Use Case |
|---|---|---|
HG |
Hunger Games | Battle Royale style servers |
PVP |
Player vs Player | Combat-focused servers |
SURVIVAL |
Survival Mode | Classic survival gameplay |
CREATIVE |
Creative Mode | Building and creation servers |
MINIGAMES |
Mini Games | Various small game modes |
SKYBLOCK |
SkyBlock | Island survival challenges |
PRISON |
Prison | Progression-based prison servers |
FACTIONS |
Factions | Team-based warfare |
SKYWARS |
SkyWars | Air combat battles |
BEDWARS |
BedWars | Bed destruction game |
UHC |
Ultra Hardcore | Hardcore survival challenges |
KITPVP |
Kit PvP | Pre-equipped combat |
ANARCHY |
Anarchy | No rules servers |
RPG |
Role Playing Game | Story-driven gameplay |
ADVENTURE |
Adventure | Exploration servers |
BUILD |
Building | Construction-focused |
TECHNICAL |
Technical | Redstone and mechanics |
VANILLA |
Vanilla | Unmodified Minecraft |
MODDED |
Modded | Custom mods and plugins |
CUSTOM |
Custom | Unique game modes |
Add detailed gamemode information:
{
"gamemodes": {
"survival": {
"name": "Survival",
"versions": ["1.19.2", "1.20.1"],
"description": "Classic survival gameplay with economy"
},
"creative": {
"name": "Creative",
"versions": "1.20.1",
"description": "Unlimited building and creation"
}
}
}| Field | Type | Description | Example |
|---|---|---|---|
versions |
String or Array | Supported Minecraft versions | "1.20.1" or ["1.19.2", "1.20.1"] |
description |
String | Brief description of the gamemode | "Classic survival with economy" |
Connect your social media and external links:
{
"socials": {
"website": "https://yourserver.com",
"store": "https://store.yourserver.com",
"youtube": "https://youtube.com/@yourserver",
"instagram": "https://instagram.com/yourserver",
"tiktok": "https://tiktok.com/@yourserver",
"x": "https://x.com/yourserver",
"discord": "https://discord.gg/yourserver",
"teamspeak": "https://teamspeak.com/yourserver"
}
}| Field | Type | Description | Example |
|---|---|---|---|
website |
URL | Official website | "https://yourserver.com" |
store |
URL | Store/Donation page | "https://store.yourserver.com" |
youtube |
URL | YouTube channel | "https://youtube.com/@yourserver" |
instagram |
URL | Instagram profile | "https://instagram.com/yourserver" |
tiktok |
URL | TikTok profile | "https://tiktok.com/@yourserver" |
x |
URL | X (Twitter) profile | "https://x.com/yourserver" |
discord |
URL | Discord server invite | "https://discord.gg/yourserver" |
teamspeak |
URL | TeamSpeak server | "ts3://teamspeak.com/yourserver" |
Required image files for your server:
{
"assets": {
"icon": "./icon.png",
"background": "./bg.png"
}
}| Field | Type | Description | File Requirements |
|---|---|---|---|
icon |
String | Server icon image | PNG |
background |
String | Server background image | PNG |
File Path Rules:
- Must start with
./(relative to manifest.json) - Supported formats:
.png - Files must actually exist in the specified location
Specify which client modules are disabled on your server:
{
"disabled-modules": ["FOV_CHANGER", "FULL_BRIGHT_MODULE", "ZOOM_MODULE"]
}| Module | Description | Why Disable |
|---|---|---|
FOV_CHANGER |
Field of View modifications | Prevents unfair visual advantages |
FULL_BRIGHT_MODULE |
Full brightness/gamma | Prevents night vision exploits |
ZOOM_MODULE |
Zoom functionality | Prevents unfair targeting |
FREE_LOOK_MODULE |
Free look camera | Prevents third-person exploits |
NO_FOG_MODULE |
Fog removal | Prevents visibility exploits |
ARROW_TRAIL |
Arrow trail effects | Prevents visual clutter |
PACK_TWEAKS |
Resource pack modifications | Ensures fair gameplay |
ITEM_MODEL |
Custom item models | Prevents visual confusion |
AUTO_TEXT |
Automatic text input | Prevents spam/automation |
ITEM_HIGHLIGHTER |
Item highlighting | Prevents unfair advantages |
TNT_TIMER |
TNT timer displays | Prevents timing exploits |
WEATHER_CHANGER |
Weather modifications | Prevents visual exploits |
TIME_CHANGER |
Time modifications | Prevents visual exploits |
Important Note: If a module is not available per enum can enter it as a string like this:
{
"disabled-modules": ["FovChanger"]
}If you have a valid reason to disable the Module your Pull Request will still be merged!
Here's a complete example of a valid manifest.json:
{
"server-address": ["play.example.com", "mc.example.com"],
"pretty-name": "Epic Survival Network",
"categorys": ["SURVIVAL", "PVP", "MINIGAMES"],
"gamemodes": {
"survival": {
"versions": ["1.19.2", "1.20.1"],
"description": "Classic survival with economy and factions"
},
"skywars": {
"versions": "1.20.1",
"description": "Fast-paced PvP battles in the sky"
},
"creative": {
"versions": ["1.19.2", "1.20.1"],
"description": "Unlimited building and creation"
}
},
"socials": {
"website": "https://example.com",
"store": "https://store.example.com",
"discord": "https://discord.gg/example",
"youtube": "https://youtube.com/@exampleserver"
},
"assets": {
"icon": "./icon.png",
"background": "./bg.png"
},
"disabled-modules": ["FOV_CHANGER", "FULL_BRIGHT_MODULE", "ZOOM_MODULE"]
}Test your manifest before submitting:
# Install dependencies
npm install
# Validate your manifest
npm run validateManifests are automatically validated when you:
- Push changes to the repository
- Create a pull request
The validation checks:
- β JSON structure and syntax
- β Required fields are present
- β Asset files exist
- β URLs are valid
- β Categories are valid
- β Data types are correct
When all server manifests are merged together, they create a unified manifest with the following structure:
{
"servers": {
"server-id": {
"server-address": ["server.com"],
"pretty-name": "Server Name",
"categorys": ["SURVIVAL"],
"gamemodes": {
"gamemode-name": {
"name": "Gamemode Name",
"versions": "1.20.1",
"description": "Description"
}
},
"socials": {
"website": "https://server.com"
},
"assets": {
"icon": "./assets/server-id/icon.png",
"background": "./assets/server-id/background.png"
},
"disabled-modules": []
}
},
"metadata": {
"totalServers": 1,
"mergedAt": "2024-01-01T12:00:00.000Z",
"sourceFolders": ["server-id"]
}
}| Field | Type | Description |
|---|---|---|
servers |
Object | All server manifests keyed by server ID |
servers[server-id] |
Object | Individual server manifest data |
metadata |
Object | Information about the merge process |
metadata.totalServers |
Number | Total number of servers processed |
metadata.mergedAt |
String | ISO timestamp of merge |
metadata.sourceFolders |
Array | List of source folder names |
In the merged manifest, asset paths are updated to reflect the new structure:
- Original:
"./icon.png" - Merged:
"./assets/server-id/icon.png"
All assets are copied to the merged/assets/ directory during the merge process.
-
Create your server directory:
mkdir servers/your-server-name cd servers/your-server-name -
Add your images:
icon.png(recommended: 64x64 or 128x128)bg.png(recommended: 1920x1080 or similar)
-
Create manifest.json:
- Copy the basic structure above
- Fill in your server details
- Test with
npm run validate
-
Submit your changes:
- Create a pull request
- GitHub Actions will validate automatically
| Error | Cause | Solution |
|---|---|---|
"server-address" is required |
Missing server addresses | Add your server domains |
"assets.icon" is required |
Missing icon file | Add icon.png to your directory |
"assets.background" is required |
Missing background file | Add bg.png to your directory |
Invalid category |
Unknown category | Use one from the categories table |
File not found |
Asset files missing | Ensure icon.png and bg.png exist |
Invalid URI format |
Bad URL format | Use proper URLs starting with https:// |
- Check the schema file for technical details
- Run
npm run validateto test your manifest - Look at existing server examples in the
servers/directory