Skip to main content

Commands

Apoli and Origins add a handful of commands for granting powers, editing resources, disguising entities, managing skill trees and summoning clones. They are meant for pack authors and server admins, and everything they do can also be done from JSON.

The commands

CommandAliasWhat it does
/apoli:power/powerGrants, revokes, inspects and suppresses powers.
/apoli:resource/resourceReads and writes apoli:resource and apoli:cooldown values.
/apoli:skill_tree/skillsBuys and refunds skills, hands out points, and grants and revokes trees.
/apoli:disguise/disguiseMakes an entity render as another entity or a player.
/apoli:scalenoneReads and changes the scales stored on entities.
/apoli:clonenoneSummons, lists and removes player clones.
/apoli:mountnoneInspects and clears the rider offsets apoli:mount stores.
/apoli:keynoneHolds, releases and inspects keys on any entity, and fakes a scroll wheel.
/apoli:dev_modenoneToggles the debugging view: resources as text, shapes outlined in particles, no cooldowns.
/tick entity, /tick chunk/apoli:tickTwo extra branches on Minecraft's own /tick, so a rate, freeze, step or sprint can be aimed at particular entities or chunks.
/originnoneSets, queries and rerolls a player's origin. Only with Origins installed.

Apoli also adds entity selector options so @a[origin=…] and @e[power=…] work anywhere a selector is accepted.

Namespaced names and aliases

Every command is registered under its full apoli: name, and some also have a short alias that points at the same command. /power grant @s example:flight and /apoli:power grant @s example:flight are the same command. Use the namespaced form in functions if another mod might claim the short name.

/apoli:clone has no short alias because /clone is a vanilla command. /apoli:mount and /apoli:key have none either, since /mount and /key are names other mods are likely to want.

Permissions

Each command needs permission level 2 (the same as /give) by default. On Fabric, when fabric-permissions-api is installed, Apoli checks a permission node first and only falls back to the level when the node isn't set. On NeoForge the nodes are registered with the built-in permission API, with the level as their default.

NodeCommand
apoli.command.power/apoli:power
apoli.command.resource/apoli:resource
apoli.command.skill_tree/apoli:skill_tree
apoli.command.disguise/apoli:disguise
apoli.command.scale/apoli:scale
apoli.command.clone/apoli:clone
apoli.command.mount/apoli:mount
apoli.command.key/apoli:key
apoli.command.dev_mode/apoli:dev_mode
apoli.command.tick/apoli:tick entity and /apoli:tick chunk, and on 1.20.1 also /tick entity and /tick chunk. On 1.21, /tick itself uses vanilla's level 3.
origins.command.origin.set/origin set and /origin revoke
origins.command.origin.gui/origin gui
origins.command.origin.random/origin random
origins.command.origin.orb/origin orb
origins.command.origin.cap/origin cap
origins.command.origin.storage/origin storage

Anyone can run /origin has and /origin get.

Return values

Every command returns a count, so it works with /execute store:

execute store result score @s power_count run power has @s
execute if entity @a[origin=example:phoenix] run say someone is a phoenix

It works the other way round too: /execute store result resource and /execute store success resource write any command's result straight into a resource. See Resource.