resourcepack.ai
DOCS

Migrating

Moving from BetterModel

RP Engine reads BetterModel's plugin folder as it is. Copy plugins/BetterModel/ into plugins/RPEngine/content/ as bettermodel/ and start the server. The folder name is the namespace, so it has to be lowercase: a folder called BetterModel is refused rather than folded, and the load says so.

plugins/RPEngine/content/
  bettermodel/                ← straight out of plugins/BetterModel/
    models/knight.bbmodel     →  bettermodel:knight, an item wearing it
    players/steve.bbmodel     →  every animation in it, an emote: /emote roll
    players/dance.bbmodel     →  dance_<animation>
    config.yml
    build/                    ← ignored

There is nothing to turn on and no pack.yml is needed: a folder of Blockbench files is plainly BetterModel's, and loads as a pack named after the folder. build/ is the resource pack BetterModel generated, which is its output rather than anything to read, so it is skipped.

Models become items#

models/ holds blueprints exactly as Model Engine's blueprints/ does, and they load the same way. Each .bbmodel becomes an item that wears it, named after the file, so knight.bbmodel is bettermodel:knight. A model in a subfolder is found where it is, and its ID is still the file's name.

/rp give bettermodel:knight     the item that wears it
/rp bind bettermodel:knight     put it on the mob you are looking at

The bone tags already mean the same thing. BetterModel's are Model Engine's, and Model Engine's are RP Engine's: h_ and hi_ heads, b_ and ob_ hitboxes, p_ seats and tag_ nametags. See Bones that do something.

The generated item is a plain one, on paper. Write your own under the same ID in items/ for anything more, a place: block or a name, and yours wins.

Player animations become emotes#

players/ holds BetterModel's player animations: a .bbmodel of a player, whose animations it plays on somebody wearing their own skin. That is exactly an RP Engine emote, so each animation in each file becomes one, played with /emote.

The numbers carry over unchanged. BetterModel's player rig faces the way the emote rig does and its keyframes mean what an emote's do. Its bone tags map to the emote bones:

BetterModelEmote bone
phhead
pc · pw · phip (chest, waist, hip)body
pra · prfaright arm · right forearm
pla · plfaleft arm · left forearm
prl · prflright leg · right shin
pll · plflleft leg · left shin
player_rootthe whole figure

Emote names are shared by the whole server, so an animation in BetterModel's own steve.bbmodel is named after the animation alone (/emote roll), and one in any other file is prefixed with that file's name (/emote dance_spin).

Two things differ, and the load says so

Their torso is three bones and ours is one. BetterModel has a hip, a waist and a chest; the emote rig has a body. Where more than one of them moves, the most specific (the chest, then the waist, then the hip) is the body.

Their arms and head ride the torso; ours stand on their own. A bow from the waist bends the body here without carrying the arms and head down with it. An animation that leans on that will want its arms and head keyframed to follow.

Held-item and cape bones are not carried, and nor is Molang in a keyframe, which has nothing here to evaluate it and is read as zero.

Emotes play on a rig baked from each player's skin, which needs Minecraft 1.21.4 or newer. On an older server they still load, but play on nobody. See the rig it plays on.