Migrating
Moving from ItemsAdder
RP Engine reads ItemsAdder's config files as they are, so you can move an ItemsAdder pack (including one bought on a marketplace) to RP Engine without converting anything.
- Copy the pack's folder out of ItemsAdder's
contents/intoplugins/RPEngine/content/, everything in it included:configs/,textures/,models/,resourcepack/. - You do not need a
pack.yml(RP Engine's own pack file). Leave one out. - Start the server, or run
/rp reload, and read the console for warnings.
plugins/RPEngine/content/
my_content/ ← straight out of ItemsAdder's contents/
configs/ ← read at any depth
items.yml
textures/ ← older layout: art at the pack root
models/
resourcepack/ ← ItemsAdder 4 layout
assets/my_content/
textures/
models/Both layouts work, and art kept in folders of its own (textures/<set>/
rather than textures/item/) is found too. There is nothing to turn on: a
file is recognised by its own shape (an info: block beside items:,
font_images: or recipes:). So one of their files also works inside a pack
of yours, which is a handy way to move over a piece at a time.
The folder's name becomes the namespace: the first half of every item's
ID, as in my_content:ruby. Keep the folder name ItemsAdder used and your
existing IDs keep working.
What comes across#
| ItemsAdder | RP Engine |
|---|---|
items.<id> | an item |
resource.material | material |
resource.textures / texture | texture: the first one, since a flat item has one picture |
resource.model_path | model |
display_name or name | name (ItemsAdder 4.0.9 renamed it, so both are read) |
lore, permission | the same |
enchants, attribute_modifiers.mainhand | enchantments, attributes |
durability.max_durability, unbreakable | durability, unbreakable |
max_stack_size | stack |
equipment.id or specific_properties.armor.custom_armor | armor, worn with that set's layer art |
equipments, armors_rendering, legacy_armor_renderings | the layer art, read from any file in the pack |
equipment with no id, on the head | hat, so a 3D helmet shows its model |
behaviours.liquid_bucket | liquid |
behaviours.furniture | place:, with its light, solidity and seat |
blocks.<id> | a custom block, with its model, hardness, light and tool |
behaviours.block (or specific_properties.block) on an item | a custom block, with its name, lore, model (or the cube generated from its textures), hardness, tool, light_level and place sound |
placed_model.type REAL_NOTE · REAL · REAL_WIRE · REAL_TRANSPARENT | a note block · base: mushroom_stem · a plant on cut tripwire · shape: grate, the see-through full block |
directional_mode LOG · FURNACE · DROPPER / ALL | rotate: axis · horizontal · all. Its <id>_<face> items are each direction's look, and are not placed as blocks of their own |
custom_variants, with weight | random:, a look picked as each is placed |
no_explosion | blast-resistant |
a placed block's interact event with replace_block (to) | click-into, so on/off pairs switch |
loots.blocks.<name>, in any file | the block's drop, when the table's first item is the pack's own and certain |
item_flags | flags |
events | actions, below |
font_images.<id> | an icon |
sounds.<id>, with its subtitle, volume, pitch and stream | a sound, the subtitle looked up in your minecraft_lang_overwrite when it is a key |
a sounds.json in resourcepack/assets/<namespace>/, from before 4.0.12 | a sound per entry |
recipes.crafting_table, cooking, campfire_cooking, stonecutter | recipes: shaped, the cookers (one each for a recipe with several machines), campfire and stonecutting |
recipes.smithing | a smithing recipe |
recipes.anvil_repair | an anvil repair, a quarter of full durability per ingredient, as theirs |
recipes.brewing (from the ItemsAdderAdditions add-on) | a brewing recipe, which needs Paper; minecraft:awkward_potion is potion/awkward |
enabled: false | skipped, as it is there |
A recipe's bare lowercase ID (base: my_sword) is the file's own namespace, as
ItemsAdder reads it. A recipe's permission is not carried across: RP Engine
recipes are open to everyone.
Events become actions#
| ItemsAdder event | RP Engine trigger |
|---|---|
interact.right, interact.left (a bare interact is both) | right_click, left_click |
attack, drop, pickup, block_break | the same |
eat, drink | consume |
item_break | break |
bow_shot | shoot |
placed_block / placed_furniture: interact, break, place | the block's or furniture's own interact, remove, place |
Inside an event, play_sound, execute_commands (as_console: true runs as
the console, otherwise as the player), potion_effect, give_item,
decrement_amount, cancel, and ItemsAdderAdditions' message and
actionbar come across, in order. play_particle and shoot_particle are a
particle step, a shot particle drawn as a puff
where it happens. {player} means the same thing in both
plugins. A permission that every action in an event asks for becomes one
permission step at its front.
What does not#
Each of these is a warning naming the ID when the pack loads, so nothing is dropped silently.
A world of blocks does not come across
Block definitions translate. The blocks already standing in a world do not: the vanilla state each one hides in (a note block, a mushroom, a tripwire or a chorus plant) was allocated by ItemsAdder against its own numbering, so this engine reads them as whatever it gave that state. The pack migrates; the world has to be rebuilt or remapped by hand.
The pool is also smaller: 49 blocks on the note block
base rather than ItemsAdder's 800, plus 63 on mushroom_stem. A pack with
hundreds of blocks will not fit as it stands.
Their entities do not translate. Write them as
entities/ definitions, which are short. Recipe groups other than the ones above are skipped by name.
Events and actions with nothing to land on: holding, wearing, fishing, a
sneaking click, guns and books have no trigger here; damage and dropping
experience have no step. An action with a
delay, or with a permission only some of its event's actions share, is
skipped too, since a step runs when its trigger does and a permission step
stops everything after it. The rest of the event still comes across.
Blocks drawn with an entity: a TILE or FIRE placed_model.type draws
with a spawner's or fire's entity, which RP Engine blocks do not, so it comes
across as a full block. A placed model draws any shape.
Loot by chance, and mob and fishing loot. A block gives back one thing, so a table that might drop its item leaves the block dropping itself, and says so.
Some of a sound. A sound that picks one of several files at random keeps the
first, because an RP Engine sound plays one file, and weight,
attenuation_distance, preload and jukebox have no equivalent here. Your
audio stays where it is: their sounds/ folder and resource pack folder are
both packed where an RP Engine sound looks.
If the console warns#
info.namespace says galaxy_set but the folder is galaxyset, and the folder wins
The pack's configs declare one namespace and its folder has another name (a
pack is often unzipped into a folder named differently). The items load as
galaxyset:..., and their models and textures are still found under
resourcepack/assets/galaxy_set/, so they look right. If other plugins, shops
or commands name the items as galaxy_set:..., rename the folder to
galaxy_set and /rp reload. Otherwise the warning is harmless.
An item shows the missing texture (black and pink)
Check the warning above it for the path RP Engine looked at. The usual causes
are a folder renamed after the pack was made (see above), or a pack whose
art was left out when it was copied. Copy the whole pack folder, resourcepack/
included.
Good to know#
Their art can stay where it is. ItemsAdder keeps art at the pack root or in
resourcepack/assets/, and RP Engine reads both, so
textures/item/ruby.png and models/lamp.json need no moving. For new content
you write beside it, use assets/, as the content folder
page describes.
Armour art stays where it is. A set's layer_1 and layer_2 are exactly
the two pictures vanilla's equipment path draws (body and
leggings), so the build serves them there for you. That needs Minecraft 1.21.4;
on an older server the armour is still worn but draws with vanilla art, and the
build names every piece that will.
What does not come across from a set, each a warning naming the item: an
animated layer, which is a strip of frames a worn layer cannot play (save one
frame as assets/textures/entity/equipment/humanoid/<id>.png, or
humanoid_leggings/ for legs); a use_color tint and emissive layers,
which needed ItemsAdder's shaders; and colour-only armour, which has no art
and is worn as plain leather.