Delivery Modes

Once EcoItems builds the resource pack, it has to reach players. delivery.mode in pack.yml controls how: EcoItems can upload the pack to a host, serve it itself, export it for you to host, or deliver nothing. This page covers each mode and how the pack is sent.

Choosing a mode

ModeHow it worksBest for
hostedUploads the pack to a packhost instance and delivers the returned URLMost servers; no setup
self-hostedServes the pack over HTTP from the Minecraft server itselfServers with an open port and a public address
externalExports pack.zip to a folder; you host it and set the URLServers with an existing CDN or web server
s3Uploads to S3-compatible object storageNetworks with existing AWS/R2/MinIO infrastructure
noneBuilds the pack but delivers nothingTesting, or manual distribution

hosted

The pack is uploaded on every reload to the packhost instance at delivery.hosted.url, which defaults to the public instance at packs.auxilor.io. Identical packs deduplicate server-side, so reloads without pack changes are free. You can run your own packhost and point the URL at it.

self-hosted

EcoItems serves the pack itself on delivery.self-hosted.bind:port. You must set public-url to the address players can reach the server on (including the port), e.g. http://203.0.113.4:8163. Make sure the port is open in your firewall or exposed by your host.

The current and previous packs both stay downloadable, so players joining mid-reload never hit a dead link.

external

The pack is written to delivery.external.directory as pack.zip. Upload or sync it to your own hosting, and set delivery.external.url to its public URL. If the URL is empty the pack is only exported, and nothing is sent to players.

s3

The pack uploads straight to S3-compatible object storage (AWS S3, Cloudflare R2, MinIO, Backblaze B2, and similar) as <sha1>.zip, with no SDK or extra tooling needed. Configure delivery.s3 with the endpoint, region, bucket, and credentials. Objects are keyed by content hash, so unchanged packs overwrite themselves harmlessly.

Set public-url when players should download through a CDN or custom domain instead of the raw endpoint. public-read: true (default) sends x-amz-acl: public-read with the upload; turn it off when the bucket policy already grants public access (R2 buckets with public access enabled, for example). MinIO wants the default path-style: true; AWS accepts either style.

Sending

With any active mode, the pack is sent to players on join (send-on-join) and re-sent to everyone after a reload (send-on-reload). The prompt, whether the pack is required, and whether declining kicks (kick-on-decline) are all configurable; see Pack Configuration.


Where to go next

  • Every option: Pack Configuration for the full delivery section of pack.yml.

  • Self-hosting packhost: Packhost to run your own instance for hosted mode.

  • Merging packs: Merging Other Packs to deliver other plugins' packs in the same download.