An Endstone plugin that installs Minecraft Bedrock add-ons from local files or remote URLs. Version 0.2.1 targets Endstone 0.11.8 and API 0.11.
- Installs
.mcpack,.mcaddon, and.zipfiles from the server'saddons/folder. - Supports behavior packs, resource packs, root-level manifests, and
.mcpackfiles nested inside.mcaddonarchives. - Downloads remote add-ons and only reprocesses files when their footprint changes.
- Adds entries to
world_behavior_packs.jsonandworld_resource_packs.jsonwithout removing pre-existing packs. - Never deletes installed pack folders when a source archive is missing.
- Preserves the legacy
plugins/configuration/addons/config.jsonlocation when it already exists.
Build the wheel from this directory:
python -m pip wheel . --no-deps --wheel-dir distCopy the resulting endstone_addons-0.2.1-py3-none-any.whl into the Endstone server's plugins/ directory, then start the server.
On first start, the plugin creates:
bedrock_server/
|-- addons/
| `-- processed.json
`-- plugins/
`-- addons/
`-- config.json
The default world is read from level-name in server.properties. The generated configuration can be edited before the next start:
{
"world": "Bedrock level",
"addons": [
{
"name": "Some Cool Addon",
"url": "https://example.com/some-addon.mcaddon"
},
{
"name": "Another Addon",
"url": "https://example.com/another-addon.zip"
}
]
}config.json must be valid JSON, so comments are not supported.
Place local add-on archives in bedrock_server/addons/, or add remote downloads to config.json. During startup, the plugin extracts changed packs and updates the selected world's pack lists. When a pack changes, it shuts the server down cleanly once so the world can load the new packs on the next start.
For GitHub downloads, use a URL that returns the archive itself. For example, a codeload URL provides useful change headers more reliably than a GitHub HTML page.