Running a server
Configuration
plugins/RPEngine/config.yml. Everything in it has a working default; most
servers change the first setting and nothing else.
The pack#
pack:
format: 46 # must match the version your players are on
description: "My server"
default-bundle: main # what a joining player is handedpack.format is the one to get right. A number that does not match the
client's version shows a "made for a different version" warning on join. The
comment beside it lists the numbers.
Serving#
host:
port: 8181
public-address: "http://203.0.113.4:8181"The plugin serves its own built packs over HTTP. It is told its public address rather than guessing one: a server behind a proxy or a NAT cannot work out how the outside world reaches it, and a guess produces a pack that downloads on the machine you tested on and nowhere else.
How it talks#
Every line the plugin writes wears a prefix and a palette, and both are yours:
chat:
prefix: "RPEngine"
colour:
prefix: "#3670f8"
brackets: "#555555"
body: "#aaaaaa"
accent: "#3670f8"
error: "#ff5555"
success: "#55ff55"A plugin that shouts in its own brand colours on somebody else's server is a plugin whose messages get muted. The defaults are ours; the palette is yours.
Colours are hex, with or without the #. Anything that is not a hex triple
falls back to its default rather than throwing — a typo in a colour is not a
reason for a plugin to stop talking.
Icons in chat#
chat:
icons: falseTurn it on and anybody with rpengine.chat.icons can type :wave: in chat to
get the icon called wave. Use
:mypack:wave: where two packs use one name.
Off by default, because a plugin that starts rewriting what people type the moment it is installed is one somebody has to find the setting for in a hurry.
A name that is not an icon is left exactly as typed, so 10:30, :) and a URL
all survive.
Seats#
models:
seat-offset: 0.0Nudges every seat on the server up or down, in blocks. seat: on a piece says
where that piece's seat is; this corrects how the game draws somebody
sitting, which is wrong by the same amount for every chair you own.
Sit on something, decide it is a hand's width out, put the number here and
/rp reload. Positive is higher. Most servers never touch it.
Vehicles#
vehicles:
seat-offset: 0.0
seat-forward: 0.0
push-players: false
collide: true
speedometer: true
mount-hint: true
seat-rig: trueseat-offset and seat-forward are the same nudge as the one above, for the
seats in a vehicle: up, and along the vehicle toward
its front. Where a rider ends up is the chassis, plus the seat, plus the
game's own rule for placing a passenger — and that last one cannot be read by
a plugin and has changed between versions. If every seat on your server is
consistently a bit off from where the editor drew it, these close the gap in
one /rp reload.
push-players makes a moving vehicle shove players out of its way, as it
already does mobs. Off, because cars nudging each other's drivers about in a
car park, and a passenger being flung as they get out, are both worse than a
vehicle passing through somebody. Nothing here changes what a vehicle does
about blocks — it always stops at a wall.
collide is whether vehicles run into each other. On, and what happens
when they do is worked out rather than staged: how fast the two were closing,
which way round they met, how far off centre the hit landed and what each of
them weighs. So a lorry shunts a hatchback aside and
hardly slows, a clip on the corner sends you round and a square rear-ending
does not, and at a crawl the whole thing turns into pushing. Turn it off for a
track where a pile-up is worse than a clean overtake, or a lobby where cars are
parked shoulder to shoulder.
speedometer is whether a driver sees their speed above the hotbar in
kilometres an hour, going yellow while the tyres are sliding. On. It stays off
the action bar for a few seconds after anything else is written there, so it
never paints over which seat you got. Off writes nothing and puts the readout
nowhere else. An individual vehicle can opt out on its own with
speedometer: false — see vehicles,
which is what a skateboard does.
mount-hint is the line above the hotbar when somebody gets in: the controls,
once, and nothing else. On, because which keys drive depends on what this
server can read from a client — a server that cannot read them steers by
look instead, and nothing anywhere else says so. Off for a server that has
told its players once and would rather the screen stayed clean. A passenger is
told which seat they took either way, because on a small vehicle the seat
markers overlap and somebody who meant to drive needs to know they did not.
seat-rig puts every occupant in their emote rig, sitting the way the seat's
pose says, even on a pack that never authored a driving pose. It is on because
the game otherwise draws a passenger standing up to their waist in the hull.
Off costs nothing and shows ordinary players; a seat that names an emote is
unaffected either way.
The /emote command#
emotes:
player-commands: true
bake-on-join: trueWhether /emote and /emotereply are registered as commands of their own.
Turn it off and nothing is lost — /rp emote runs the same code — but the
server has one command instead of three.
bake-on-join rebuilds the packs shortly after somebody turns up whose emote
rig is not in them, and sends the new ones out. A player's rig is pack
content — a model per bone wearing their skin — so a player this server has
never seen has no rig to wear and appears as the shared default until a build
catches up. That is the "why is my friend a default skin" every server hits,
and it lands on a first join, which is the worst moment for it.
The rebuild starts at once: somebody who walked in on their own should not stand about as a default skin waiting out a window that exists for crowds. Anybody who arrives during that rebuild, or in the five seconds after it, is covered by a single follow-up rather than costing a rebuild each — so a server filling up at the start of an evening pays two, not twenty. Only players whose pack is actually out of date are sent a new one.
Off is for a server that would rather choose the moment — a big pack, a busy
lobby — and /rp reload still bakes whatever has arrived since.
On by default. It is worth turning off on a server that already has an
/emote from another plugin: two plugins claiming one name means whichever
loaded first wins, and the loser's version is reachable only as
/theirplugin:emote, which no player will ever type.
Upgrading
This setting is new, so an existing config.yml will not have the line in
it. A missing line reads as true, which is what the plugin has always done
— add it by hand if you want it off.
Studio#
sync:
url: "wss://sync.resourcepack.ai/connect"
server-token: ""Only needed if you use Studio to push packs to a running server. Leave it alone and the plugin never reaches out.
A server that never links behaves exactly as it did before any of this existed — Studio is one content source among several, not a requirement.
Editing in a browser#
edit:
enabled: true
url: "https://studio.resourcepack.ai"/rp edit <id> hands you a link to the editors at resourcepack.ai,
opened on the file in your own content folder — no account needed. See
Editing in a browser.
enabled: false and the command says so instead of doing anything. This is
the only feature that talks to anything outside your server, and it does so
only while a link is open.
url: is worth changing for one reason: pointing at a staging Studio.