resourcepack.ai
DOCS

Testing in Minecraft

The plugin

Vanilla Minecraft can't do most of what a pack made here is for. It has no concept of an animated block model, no way to play an emote on a player, and no way for a server to hand one person a pack without handing it to everybody.

RP Engine is the half that makes those work. It's what our test server runs — the models you see standing around and moving on are this plugin doing it — and it's the same jar you can put on your own server.

You don't need it to use a pack

A pack made here is an ordinary resource pack. Export the .zip, point server.properties at it, done — nothing of ours installed. The plugin is for the things a resource pack alone can't do, which is the list below.

What it adds#

Without the pluginWith it
ModelsThe model renders, standing stillPlace it, sit on it, pick it up, and it animates
AnimationsNothing — the keyframes sit in fields vanilla ignoresPlays on loop, on click, or from your own plugin
EmotesNothing/emote plays one on a player, wearing their own skin — or puts on a movement set they keep while they carry on playing
Custom GUIsThe art ships, but nothing opens a screen with it/rp screen opens the screen with your art drawn over it
HUD overlaysSame/rp hud draws a meter or a frame over the world
Pack sounds/playsound works, if you're an operator/rp sound works for anybody, so the person testing can hear their own sound
Live testingRe-export, re-upload, rejoinStudio pushes a pack to one player in seconds
DistributionOne pack for everybody, one versionEvery player gets the build for the version they're on

It also does a good deal that has nothing to do with this site — items, recipes, entities, liquids, all written as YAML in a folder on your own server. That half is documented in RP Engine.

Installing it#

Requirements

A Paper or Spigot server on 1.19.4 or newer, running Java 17+, and permission to install plugins on it. 1.19.4 is where display entities arrived, and a placed model is one — so there's no build for 1.8, because the features the plugin exists to deliver aren't there to use.

Below 1.21.4 a few things are reduced rather than missing, and the plugin prints exactly which at startup. Minecraft versions is that list written down.

  1. 1

    Download the jar

    https://cdn.resourcepack.ai/RPEngine.jar
  2. 2

    Drop it in /plugins

    Alongside everything else. It has no dependencies and no required configuration.

  3. 3

    Restart the server

    A /reload won't do it — plugin jars are only picked up on a real restart. Check the console for the plugin's startup line.

Using it#

Two things it does for a pack made here, and they're independent — a server can do either without the other.

Pushing a pack to one player#

For building. A player runs /rp sync with the 8-digit code Studio shows, and from then on Sync in the editor pushes the pack straight to them, in seconds, without anybody touching server.properties. /rp sync add <player> shares your pushes with the people building alongside you.

That's per player on purpose: it's how you and your builders see a pack while it's being made, not how a public server serves one.

Serving your published pack to everyone#

For launch. /rp distribute <code> ties the server to a pack from the Distribution tab, and from then on every joining player is served the build for the Minecraft version they're actually on. That's the Distribution feature, and it needs no sync from anybody.

Commands and permissions#

One command, /rpengine, with /rp and /rpe as aliases, plus /emote and /emotereply for players. Every argument tab-completes, and every subcommand has its own rpengine.<name> permission with rpengine.admin as a parent that grants the lot.

The full table is on Commands and permissions. Two things worth knowing before you grant anything:

/rp screen, /rp hud and /rp sound each take an optional player, so granting one lets that person draw a screen, an overlay or a sound onto somebody else's client. Grant them to the people building your pack, not to everyone.

Nobody is pulled into an emote without agreeing. /emote <name> <player…> asks everyone it names first, and rpengine.emote.force is what skips the asking — deliberately not a child of rpengine.emote.cast, because holding one is being allowed to ask and holding the other is not having to. See Emotes.

Driving it from your own plugin#

Everything above is reachable from Java: place a model, play an emote, open a screen, put an icon in a message, and cancel any of it when your own rules say no. See For plugin developers.