Origins: Powerful Powers
» Contents

Origins: Powerful Powers

Download 1.0.0Latest release · all versions

Origins: 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, the fake_blocks power, /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 (the chunk_loader power, 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 /attribute and Origins' origins:attribute condition, with no power needed.
  • A settable drag attribute 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_downed condition 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 write origins:inventory powers), /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

#PageWhat's in it
1Getting startedRequirements, installing, your first OPP power, how these docs are laid out
2Entity conditionsThe 40 condition types: combat, movement, body, world, mobs, items, integrations
3Bi-entity conditionsis_observed_by, has_power_tag
4Damage conditionsdamage_source_nbt
5Block conditionsredstone_power
6Entity actionssignals, 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
7AttributesThe 45 read-only attributes, plus the settable drag
8VariablesDeclaring, changing and checking per-player variables, and HUD bars
9Variables in Origins fields, commands and scoreboardswith_variables, /opp with, Scoreboard.get, modifier resource
10Language referenceThe Java expression language: operators, types, built-ins (including Death, Stat and Global), errors
11Lists and loopslist, power_list, for_each, for_each_read
12Global storeValues shared by every entity: Global.*, global_variables, modify_global, locking, cleanup, /opp global
13Voice chatSimple Voice Chat conditions, broadcast, mute and deafen
14Power inventoriesReading and writing origins:inventory powers
15CommandsEvery command in one place
16Power tagsGrouping powers in a datapack file, the has_power_tag condition, /opp powertag
17CookbookComplete powers that combine several features

Every id

Condition types

IdKindPage
attack_cooldown_progressentity2
biome_temperatureentity2
critical_hit_eligibleentity2
crouch_depthentity2
damage_source_nbtdamage4
distance_to_nearest_playerentity2
exhaustionentity2
expressionentity, bi-entity8
frictionentity2
glide_ratioentity2
has_attack_targetentity2
has_power_tagentity, bi-entity16
hurt_timeentity2
in_same_voice_groupbi-entity13
in_voice_groupentity13
in_voice_range_ofbi-entity13
invulnerable_ticksentity2
is_blockingentity2
is_broadcasting_voiceentity13
is_deafened_voiceentity13
is_jumpingentity2
is_moving_loudlyentity2
is_muted_voiceentity13
is_observed_bybi-entity3
is_sleepingentity2
is_talkingentity13
is_whisperingentity13
item_on_cooldownentity2
last_attack_reachentity2
last_damage_amountentity2
last_damage_was_critentity2
last_damage_typeentity2
last_hit_was_critentity2
light_at_eyesentity2
look_angleentity2
moon_phaseentity2
fake_entityentity6
projectile_ageentity2
recent_damage_takenentity2
recent_damage_blockedentity2
recent_knockbackentity2
redstone_powerblock, entity5, 2
regional_difficultyentity2
sprint_ticksentity2
statentity2
submersion_depthentity2
time_airborneentity2
time_since_last_mealentity2
velocityentity2
vibration_on_cooldownentity2
voice_installedentity13
voice_mic_disabledentity13
with_variablesentity, bi-entity9
xp_progressentity2

Action types

IdKindPage
clear_fake_blockentity, block6
delete_globalentity, bi-entity12
despawn_fake_entityentity6
disguiseentity6
executeentity, bi-entity8
for_eachentity, bi-entity11
for_each_readentity, bi-entity11
hide_from_tablistentity6
load_chunksentity6
emit_signalentity6
look_atentity, bi-entity6
modify_globalentity, bi-entity12
modify_variableentity, bi-entity8
fake_entity_actionentity6
play_block_crackblock6
set_fake_blockentity, block6
show_in_tablistentity6
set_item_cooldownentity6
set_rotationentity6
set_vibration_cooldownentity6
spawn_fake_entityentity6
start_broadcast_voiceentity13
stop_broadcast_voiceentity13
stop_loading_chunksentity6
undisguiseentity6
with_variablesentity, bi-entity9

Power types

IdPage
variables8
variable_bar8
global_variables12
list11
power_list11
item_list11
action_on_death6
action_on_join6
action_on_disconnect6
action_on_start_tracking6
action_on_mob_conversion6
action_on_sleep_start6
action_on_signal6
fake_blocks6
chunk_loader6
obfuscate_name6
hidden_from_tablist6
action_on_chat6
action_on_fake_entity_hit6

Commands

CommandPage
/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.

WhereSuspected behavior
look_angleThe 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 barOrigins' /resource command works on the bar too.
Scoreboard.getThe 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.