# Commands One command, `/painting`, and it works the same on Paper and on Velocity. `/resourcepack` does the same thing if you prefer it. --- ## /painting | Subcommand | Permission | Description | |---|---|---| | `reload` | `lodestone.painting.commands.painting` | Reload pack and server registries from disk. | | `resend` | `lodestone.painting.commands.painting` | Resend resource pack offers to every online player. | | `generatehashes` | `lodestone.painting.commands.painting` | Download every configured pack URL, compute SHA-1, and write the hash back to config. | | `hash <url\|file>` | `lodestone.painting.commands.painting` | Print the SHA-1 of a single pack URL or pack file without touching config. | Aliases: `/resourcepack`. --- ## Applying config changes ``` /painting reload ``` Rereads your packs, servers, messages and version overrides from disk. If you've pointed a server at a pack that doesn't exist, you'll get a warning about it in the console. Players already online keep whatever pack they were given. To push the new setup out to them as well, follow it with `/painting resend`. --- ## Resending to everyone ``` /painting resend ``` Offers packs again to every player currently online. On a proxy, each player gets whatever their current server should send them. Anyone who already has the right pack is skipped, so this won't make people re-download things unnecessarily. --- ## /painting generatehashes Downloads every configured pack URL, computes SHA-1, and writes the result back to the config file. | Outcome | Message | |---|---| | No URLs configured | `No packs with a URL to hash.` | | All hashes already current | `All N hashes already up to date.` | | Mixed | `<changed> of <total> hashes changed.` (with optional `(N failed)` suffix) | After a successful run, the config is reloaded so the new hashes take effect immediately. A manual `generatehashes` always forces a refresh, bypassing the `hash-refresh-throttle` window, on both platforms. Players joining mid-run are let through without a pack and sent theirs as soon as the run finishes, so a rehash never offers a pack with a hash the client would reject. Since 1.0.20 you rarely need this: both platforms re-check hashes on their own (see `hash-refresh-throttle` in [[Painting/Server Owners/Configuration]]). Reach for `generatehashes` when you want a full re-download now, ignoring what the origin says about freshness. --- ## /painting hash Prints the SHA-1 of one source and nothing else, config is untouched. ``` /painting hash https://cdn.example.com/pack.zip /painting hash packs/base.zip ``` A path is resolved against the Painting data folder first, then the server directory. Useful for filling in a `hash:` field by hand, or checking what a CDN is actually serving. The command runs under the same limits as the API: `http`/`https` only, a byte cap, and paths confined to the server directory. A source outside them comes back as an error rather than a hash, see `hash-security` in [[Painting/Server Owners/Configuration]]. --- ## Permissions | Permission | Grants | |---|---| | `lodestone.painting.commands.painting` | All `/painting` subcommands. Defaults to `op` on Paper. | --- ## Related Pages - [[Painting/Server Owners/Configuration]], config values reloaded by `/painting reload` - [[Painting/Developers/Overview]], `PackRegistryReloadEvent` is fired after `/painting reload`