Origins: Powerful Powers
Download 1.0.0Latest release · all versionsOrigins: Powerful Powers (OPP) is a Fabric mod for Minecraft 1.20.1 that adds new building blocks to Origins datapacks. Everything it adds is used from power JSON with "type": "origins-powerful-powers:<id>", the same way as Origins' own origins:<id> types.
What it adds:
- 40 entity conditions: attack cooldown, recent damage and damage blocked, knockback, crouch depth, sprint time, glide ratio, friction, light level at the eyes, moon phase, sleeping, redstone power, vanilla statistics, and more.
- A block condition for redstone signal strength (
redstone_power), usable wherever Origins checks a block. - Actions: turn an entity's view (
set_rotation,look_at), fake block-crack animations (play_block_crack), item and vibration cooldowns, fake mobs and fake players only chosen players can see, which powers can act on (spawn_fake_entity,fake_entity_action), and disguises that make an entity look like another type (disguise). - Signals: one power announces something by name (
emit_signal) and unrelated powers react (action_on_signal), so separately written origins can work together. - Fake blocks: show chosen players a different block at a position (
set_fake_block, thefake_blockspower,/opp fakeblock). - Name obfuscation and tab-list hiding: scramble a player's name and Styled Nicknames nickname for chosen viewers (
obfuscate_name,/opp obfuscate), or leave a player out of chosen tab lists (hidden_from_tablist,hide_from_tablist,/opp tablist). - Entity-tied chunk loading: keep the chunks around an entity loaded like
/forceload, following it as it moves (thechunk_loaderpower,load_chunks,/opp chunkload). - Power tags: group powers in one datapack file (wildcards included) and check them with
has_power_tag. - 45 read-only attributes with the same values, readable with
/attributeand Origins'origins:attributecondition, with no power needed. - A settable
dragattribute on every living entity that replaces vanilla's fall-drag constant. - Variables and lists. Typed per-player data (
int,double,String, …) that you change and check with Java expressions. You can use it in any Origins field and in commands, and it can read scoreboards and the items in a power inventory. - A global store. Typed values and lists addressed by a key, saved with the world, with optional locking and automatic cleanup of keys tied to entities.
- Power inventories read and written from commands, including each slot's item id as plain text.
- Simple Voice Chat integration: conditions for talking, whispering and groups, plus voice broadcast, forced mute and forced deafen.
- Hardcore Revival integration: an
is_downedcondition for players knocked out in Hardcore Revival. - Styled Nicknames integration: name obfuscation covers nicknames too.
- Commands:
/opp with(variables in any command),/opp powerinv(read and writeorigins:inventorypowers),/opp fakeentity,/opp disguise,/opp global,/opp fakeblock,/opp chunkload,/opp obfuscate,/opp tablist,/opp powertag,/disableshield,/oppvc.
The pages read in order, like slides, and each one also works as a reference.
Pages
| # | Page | What's in it |
|---|---|---|
| 1 | Getting started | Requirements, installing, your first OPP power, how these docs are laid out |
| 2 | Entity conditions | The 40 condition types: combat, movement, body, world, mobs, items, integrations |
| 3 | Bi-entity conditions | is_observed_by, has_power_tag |
| 4 | Damage conditions | damage_source_nbt |
| 5 | Block conditions | redstone_power |
| 6 | Entity actions | signals, fake blocks, entity-tied chunk loading, name obfuscation, tab list hiding, set_vibration_cooldown, set_item_cooldown, set_rotation, look_at, spawn_fake_entity, disguise, undisguise, the block action play_block_crack, fake_entity_action, the fake_entity condition, action_on_fake_entity_hit, the event powers (death, join, disconnect, start tracking, mob conversion, sleep start), action_on_chat, and where the other actions live |
| 7 | Attributes | The 45 read-only attributes, plus the settable drag |
| 8 | Variables | Declaring, changing and checking per-player variables, and HUD bars |
| 9 | Variables in Origins fields, commands and scoreboards | with_variables, /opp with, Scoreboard.get, modifier resource |
| 10 | Language reference | The Java expression language: operators, types, built-ins (including Death, Stat and Global), errors |
| 11 | Lists and loops | list, power_list, for_each, for_each_read |
| 12 | Global store | Values shared by every entity: Global.*, global_variables, modify_global, locking, cleanup, /opp global |
| 13 | Voice chat | Simple Voice Chat conditions, broadcast, mute and deafen |
| 14 | Power inventories | Reading and writing origins:inventory powers |
| 15 | Commands | Every command in one place |
| 16 | Power tags | Grouping powers in a datapack file, the has_power_tag condition, /opp powertag |
| 17 | Cookbook | Complete powers that combine several features |
Every id
Condition types
| Id | Kind | Page |
|---|---|---|
attack_cooldown_progress | entity | 2 |
biome_temperature | entity | 2 |
critical_hit_eligible | entity | 2 |
crouch_depth | entity | 2 |
damage_source_nbt | damage | 4 |
distance_to_nearest_player | entity | 2 |
exhaustion | entity | 2 |
expression | entity, bi-entity | 8 |
friction | entity | 2 |
glide_ratio | entity | 2 |
has_attack_target | entity | 2 |
has_power_tag | entity, bi-entity | 16 |
hurt_time | entity | 2 |
in_same_voice_group | bi-entity | 13 |
in_voice_group | entity | 13 |
in_voice_range_of | bi-entity | 13 |
invulnerable_ticks | entity | 2 |
is_blocking | entity | 2 |
is_broadcasting_voice | entity | 13 |
is_deafened_voice | entity | 13 |
is_jumping | entity | 2 |
is_moving_loudly | entity | 2 |
is_muted_voice | entity | 13 |
is_observed_by | bi-entity | 3 |
is_sleeping | entity | 2 |
is_talking | entity | 13 |
is_whispering | entity | 13 |
item_on_cooldown | entity | 2 |
last_attack_reach | entity | 2 |
last_damage_amount | entity | 2 |
last_damage_was_crit | entity | 2 |
last_damage_type | entity | 2 |
last_hit_was_crit | entity | 2 |
light_at_eyes | entity | 2 |
look_angle | entity | 2 |
moon_phase | entity | 2 |
fake_entity | entity | 6 |
projectile_age | entity | 2 |
recent_damage_taken | entity | 2 |
recent_damage_blocked | entity | 2 |
recent_knockback | entity | 2 |
redstone_power | block, entity | 5, 2 |
regional_difficulty | entity | 2 |
sprint_ticks | entity | 2 |
stat | entity | 2 |
submersion_depth | entity | 2 |
time_airborne | entity | 2 |
time_since_last_meal | entity | 2 |
velocity | entity | 2 |
vibration_on_cooldown | entity | 2 |
voice_installed | entity | 13 |
voice_mic_disabled | entity | 13 |
with_variables | entity, bi-entity | 9 |
xp_progress | entity | 2 |
Action types
| Id | Kind | Page |
|---|---|---|
clear_fake_block | entity, block | 6 |
delete_global | entity, bi-entity | 12 |
despawn_fake_entity | entity | 6 |
disguise | entity | 6 |
execute | entity, bi-entity | 8 |
for_each | entity, bi-entity | 11 |
for_each_read | entity, bi-entity | 11 |
hide_from_tablist | entity | 6 |
load_chunks | entity | 6 |
emit_signal | entity | 6 |
look_at | entity, bi-entity | 6 |
modify_global | entity, bi-entity | 12 |
modify_variable | entity, bi-entity | 8 |
fake_entity_action | entity | 6 |
play_block_crack | block | 6 |
set_fake_block | entity, block | 6 |
show_in_tablist | entity | 6 |
set_item_cooldown | entity | 6 |
set_rotation | entity | 6 |
set_vibration_cooldown | entity | 6 |
spawn_fake_entity | entity | 6 |
start_broadcast_voice | entity | 13 |
stop_broadcast_voice | entity | 13 |
stop_loading_chunks | entity | 6 |
undisguise | entity | 6 |
with_variables | entity, bi-entity | 9 |
Power types
| Id | Page |
|---|---|
variables | 8 |
variable_bar | 8 |
global_variables | 12 |
list | 11 |
power_list | 11 |
item_list | 11 |
action_on_death | 6 |
action_on_join | 6 |
action_on_disconnect | 6 |
action_on_start_tracking | 6 |
action_on_mob_conversion | 6 |
action_on_sleep_start | 6 |
action_on_signal | 6 |
fake_blocks | 6 |
chunk_loader | 6 |
obfuscate_name | 6 |
hidden_from_tablist | 6 |
action_on_chat | 6 |
action_on_fake_entity_hit | 6 |
Commands
| Command | Page |
|---|---|
/opp with <targets> <command> | 9, 15 |
/opp fakeentity spawn|player <owner> <entity_type|username> <pos> <lifetime> [behavior …] [viewers …] [id …] | 6, 15 |
/opp fakeentity run <id> <command> | 6, 15 |
/opp disguise <targets> <entity_type> [duration …] [viewers …], /opp undisguise <targets> | 6, 15 |
/opp global get|set|delete|list|prune|lock|unlock … | 12, 15 |
/opp fakeblock set|clear … | 6, 15 |
/opp chunkload start|stop|list … | 6, 15 |
/opp obfuscate <targets> [duration …] [viewers …], /opp unobfuscate <targets> | 6, 15 |
/opp tablist hide|show … | 6, 15 |
/opp powertag list|of … | 16 |
/opp powerinv … | 14, 15 |
/disableshield <targets> <ticks> | 15 |
/oppvc broadcast|mute|deafen … | 13, 15 |
/gamerule whitelistFeedback <username> … | 15 |
/gamerule oppPlayerExpiryDays <days> | 15 |
The 45 read-only attributes (plus drag) are listed on page 7.
Suspected bugs
Unconfirmed behavior worked out from the code.
| Where | Suspected behavior |
|---|---|
look_angle | The raw yaw is unwrapped, so after turning around several times it can leave the −180 to 180 range. The attribute is clamped to that range. |
| Variable bar | Origins' /resource command works on the bar too. |
Scoreboard.get | The client may only know objectives shown in a display slot, so conditions that Origins checks on the client may fail to read scores. |
Changelog
Every version's changes, newest first
1.0.0
First release.