BedrockAddonManager v0.0.0
Serves Bedrock .mcpack and .mcaddon resource packs over HTTP and reads their manifests. Pumpkin does not yet expose an API for sending packs to players.
See the plugin guide and API reference on the documentation site.
Installation
Put bedrock-addon-manager.wasm from the plugin's GitHub release in your server's plugins/ folder and restart. Hot reload cannot ask for permissions, so the first load needs a restart.
Pumpkin does not yet expose an API for sending resource packs to players. BedrockAddonManager still reads each pack's manifest, serves it over HTTP and logs the packs it would offer. Automatic delivery is unavailable, so packs.force has no effect.
Adding packs
Put .mcpack files, or .mcaddon bundles, in plugins/data/BedrockAddonManager/packs/ and run /baddon reload (or restart the server). The plugin reads each pack's manifest.json for its UUID, version and flags, and serves the pack over HTTP. pumpkin.toml is never changed.
- Packs are never picked up on their own. They are read on server start and on
/baddon reload. - A
.mcaddonoften holds a behavior pack next to the resource pack. Pumpkin can't use behavior packs, so only the resource pack is taken (written topacks/.extracted/and served from there) and the rest is logged as left out. A pack from a bundle is named after the bundle:Bundle.mcaddonbecomesBundle.mcpack, orBundle - <pack>.mcpackwhen it holds several. Use that name inoverrides. - Reachable URLs: set
web.public_urlto an address players can reach. If it is empty andweb.bindis0.0.0.0, the plugin asks UPnPumpkin to openweb.porton your router and uses the public address it returns (for example,http://203.0.113.7:8123). Nothing is opened when this machine already has a public address. Without UPnPumpkin, the plugin warns and falls back to127.0.0.1, which only works for players on the server machine. Setweb.port_forwarding = falseto opt out.
Permissions
Pumpkin asks for these on the server console the first time the plugin loads.
| Permission | Why |
|---|---|
fs.read.data | Read the packs folder and the plugin config in its data folder. |
fs.write.data | Create and update the config, and write the resource packs found in .mcaddon files. |
network.tcp.bind | Listen for pack downloads from Bedrock clients. |
http.outbound | Check Pumpkin Market for plugin updates. |
Commands
| Command | Description | Permission | Default access |
|---|---|---|---|
/baddon list | List detected packs and their effective settings | BedrockAddonManager:command.baddon.list | everyone |
/baddon reload | Reload config.toml and rescan the packs folder | BedrockAddonManager:command.baddon.reload | operators (level 3) |
Configuration
Settings live in plugins/data/BedrockAddonManager/config.toml. The plugin creates the file if needed, adds settings from the schema and removes settings no longer defined there. Values for existing settings are preserved.
| Option | Type | Default | Description |
|---|---|---|---|
web.enabled | boolean | true | Serve the packs over HTTP. Turn this off if the packs are hosted elsewhere and every pack has a download_url override. |
web.bind | string | "0.0.0.0" | IPv4 address to listen on. |
web.port | integer | 8123 | Port to listen on. |
web.public_url | string | "" | Base URL Bedrock clients should use to download packs, without a trailing slash; for example "https://packs.example.com". The plugin serves plain HTTP. Put a reverse proxy in front of it for HTTPS. When empty, the plugin uses the public address reported by UPnPumpkin if forwarding succeeds, or a loopback URL on the configured port otherwise. A loopback URL works only for players on the server machine. |
web.port_forwarding | boolean | true | When public_url is empty and bind is "0.0.0.0", ask UPnPumpkin to open port on your router (UPnP or NAT-PMP) and use the public address it returns. No port is opened when this machine already has a public address or UPnPumpkin is not installed. Set to false to disable forwarding. |
packs.directory | string | "packs" | Folder inside this plugin's data folder that is scanned for .mcpack and .mcaddon files. |
packs.force | boolean | false | Make pack downloads required before players can join. This currently has no effect because Pumpkin does not support pack delivery. |
overrides."<file>".enabled | boolean | none | Set to false to leave the pack out entirely. |
overrides."<file>".order | integer | none | Position in the pack list, lowest first. |
overrides."<file>".download_url | string | none | Download the pack from this URL instead of the built-in web server, for example a CDN. |
overrides."<file>".addon_pack | boolean | none | Mark the pack as an add-on pack. Normally derived from the manifest. |
overrides."<file>".has_scripts | boolean | none | Mark the pack as containing scripts. Normally derived from the manifest. |
overrides."<file>".rtx_enabled | boolean | none | Enable ray tracing for the pack. Normally derived from the manifest. |
overrides."<file>".sub_pack_name | string | none | Name of the sub-pack to activate. |
overrides."<file>".content_key | string | none | Decryption key for an encrypted pack. |
overrides."<file>".content_id | string | none | Content identifier of the pack. |
A fresh install gets this file:
# BedrockAddonManager configuration.
# This file is managed by the plugin: when it starts, settings that were added are written here with
# their defaults and settings that were removed are dropped. Your values are kept; comments you add
# are not. Changes apply after `/baddon reload` or a server restart.
# The web server that serves the packs to Bedrock clients.
[web]
# Serve the packs over HTTP. Turn this off if the packs are hosted elsewhere and every pack has a
# download_url override.
enabled = true
# IPv4 address to listen on.
bind = "0.0.0.0"
# Port to listen on.
port = 8123
# Base URL Bedrock clients should use to download packs, without a trailing slash; for example
# "https://packs.example.com". The plugin serves plain HTTP. Put a reverse proxy in front of it for
# HTTPS. When empty, the plugin uses the public address reported by UPnPumpkin if forwarding
# succeeds, or a loopback URL on the configured port otherwise. A loopback URL works only for
# players on the server machine.
public_url = ""
# When `public_url` is empty and `bind` is "0.0.0.0", ask UPnPumpkin to open `port` on your router
# (UPnP or NAT-PMP) and use the public address it returns. No port is opened when this machine
# already has a public address or UPnPumpkin is not installed. Set to false to disable forwarding.
port_forwarding = true
# Where the packs are and how they are listed.
[packs]
# Folder inside this plugin's data folder that is scanned for .mcpack and .mcaddon files.
directory = "packs"
# Make pack downloads required before players can join. This currently has no effect because Pumpkin
# does not support pack delivery.
force = false
# Per-pack overrides, keyed by file name. For packs extracted from a `.mcaddon`, use the name shown
# by `/baddon list`. All settings are optional. Packs are ordered by `order` (lowest first, default
# 0), then by file name.
#
# [overrides."My Pack.mcpack"]
# enabled = false # Set to false to leave the pack out entirely.
# order = 10 # Position in the pack list, lowest first.
# download_url = "https://cdn.example.com/my-pack.mcpack" # Download the pack from this URL instead of the built-in web server, for example a CDN.
# addon_pack = true # Mark the pack as an add-on pack. Normally derived from the manifest.
# has_scripts = false # Mark the pack as containing scripts. Normally derived from the manifest.
# rtx_enabled = false # Enable ray tracing for the pack. Normally derived from the manifest.
# sub_pack_name = "high_res" # Name of the sub-pack to activate.
# content_key = "..." # Decryption key for an encrypted pack.
# content_id = "..." # Content identifier of the pack.