Plugin support
Bedrock and Geyser
Geyser lets Bedrock Edition players (phones,
consoles, Windows) join a Java server. When Geyser-Spigot runs on the same
server, RP Engine builds a Bedrock pack (.mcpack) from your content every
time it builds the Java pack, and sends it to Bedrock players as they join.
They see your custom items with your art instead of the plain vanilla item
underneath.
There is nothing to configure. The console says what went into the pack:
[RPEngine] Bedrock pack built: 12 items, 3 models, 4 sounds, 6 icons, 2 armour pieces.It is built from your default bundle (default-bundle in config.yml) and
saved beside the Java zip in plugins/RPEngine/output/.
What crosses over#
- Items. A Bedrock player sees the item with your art and its name.
Bedrock draws every custom item as a flat icon, so a
3D item or a piece of furniture uses its sprite
if it has one at its
texture:path, and otherwise a picture of its model, drawn the way the Java inventory shows it. An item with neither shows its base material's own icon. - Armour, on the body, from the item's equipment texture. The item needs no sprite of its own for this.
- Placed models. Each piece is drawn for Bedrock players within 48 blocks as a native entity, at its size and facing, with its animations playing on their own client. A model that uses the game's own textures gets them baked in. The plugin downloads them once, in the background, the first time; a Bedrock player who joins in those first seconds sees a checkerboard on that model until they next join.
- Sounds. A sound plays on Bedrock under the same id it plays under on
Java, so actions and commands that play
mypack:laserwork for everyone. A file inoverrides/that replaces a vanilla sound is added under the name Geyser plays that sound by, so it is heard on Bedrock too. - Icons, in chat and anywhere else text goes. Every icon is drawn about a line of text tall on Bedrock, whatever its height on Java.
What does not#
Emotes and vehicles. Both are built from display entities, which Geyser does not draw.
Custom blocks. A custom block is a vanilla block in a state nothing else uses, and Bedrock players see that vanilla block.
Custom screens, HUD overlays and dialogs. All three rely on Java-only font and dialog features.
A handful of vanilla sounds that Bedrock plays itself rather than by name. Most vanilla sounds can be replaced on both editions.
Custom mobs and bound models#
A custom mob, and a model put on a mob with
/rp bind or MythicMobs' rpmodel,
is drawn for Bedrock players as its model (RP Engine 0.2.53 or newer). Geyser
still moves, turns, hurts and kills the mob itself, so its hitbox is where its
model is.
What crosses:
- the model, at its
scale:, turned by itsturn:, facing the way the mob faces; - its
idle,walk,attackandhurtanimations, played as the mob changes what it is doing, and anything a skill plays withanimate; - the red flash when it is hurt, which is the Bedrock client's own;
- a mob synced from Studio, drawn from the Bedrock pack Studio sends.
What is different:
- A dying mob tips over the way a Bedrock mob does, rather than playing its
deathanimation. - Its name sits over the hitbox, where Geyser puts a name, not just above the model.
- Two mobs wearing one model share one
turn:: Bedrock uses the first mob's. /rp bindcrosses only for a model Bedrock already has: one a custom mob wears, or one with aplace:block. Any other item's model stays invisible to Bedrock players.
Skills, drops, boss bars and the rest of a mob's behaviour run on the server, so they are the same for everybody.
New items need a restart#
Geyser learns which Java items are custom once, at startup. /rp reload
rebuilds the Bedrock pack and every Bedrock player gets the new art on their
next join, but an item that did not exist at startup shows as its base
material to Bedrock players until the server restarts. The console says so when
it happens.
The same goes for the very first start of a server whose items use the game's own textures (a model painted with oak planks, or an item falling back to its material's icon): those are downloaded once, after startup, and a restart puts their items in front of Bedrock players. After that they come from disk.
A server without RP Engine#
Geyser alone can show a pack exported from Studio: Export › Bedrock players
on a Java server gives the .mcpack and the item mappings Geyser reads. With
RP Engine installed you don't need its mappings, and shouldn't add them: RP
Engine registers the same items itself. See Bedrock and Geyser.
A Studio pack you dropped into content/ as a .zip reaches Java players
only. For Bedrock players, take packs/ from that export and put it in
Geyser's folder; RP Engine already knows the items. A pack that arrives by
Sync or Distribution needs none of this.
Studio models on Bedrock#
A pack pushed from Studio with /rp sync includes a Bedrock build whenever a
player receiving it is on Bedrock, and a pack served through Studio's
distribution always has one when anything in it can cross. A Bedrock client
only accepts packs while joining, so the player is moved back onto the same
server and given the pack on the way in. It takes a few seconds, and the sync
survives it.
Placed Studio models then show up for Bedrock players as native entities, drawn when a player comes within 48 blocks and taken away when they move off. Their animations play on the player's own client from the pack's keyframes, started by the same triggers as on Java.
3D armour from Studio is drawn on
the body for Bedrock players too, when the pieces were handed out with
/rp armor give or /rp armor wear.
Designing for both#
If many of your players are on Bedrock, put anything they need to know in something that crosses over, such as an item's name and lore or chat. Bedrock players never see a menu that only exists as a custom screen, the HUD, a dialog, an emote, a vehicle or a custom block.