Skip to content

Releases: apace100/apoli

Apoli 2.11.5 (Minecraft 1.20.2)

07 Feb 14:30
1ab423b
Compare
Choose a tag to compare

Changes

  • Simplified implementation of modify_food power type for making items always edible.
  • Simplified implementation of modify_grindstone power type.
  • Added support for * (current namespace/path) in REGEX_MAP data type (used by the replace_loot_table power type.)

Fixes

  • Fixed condition logic in replace_loot_table power type.
  • Fixed edible_item power type not working on items usable on blocks.
  • Fixed exposed_to_sky and brightness entity condition types not accounting for the world's ambient darkness (in most cases.)
  • Fixed modify_enchantment_level power type not working on empty item stacks (in some cases.)

Full changelog: v2.11.4...v2.11.5

Apoli 2.11.4 (Minecraft 1.20.2)

11 Jan 16:08
6a7503e
Compare
Choose a tag to compare

Fixes

  • Fixed oversight where the action_on_remove bi-entity action of the entity_set power type is only being called when removing a temporary entity from an entity set.
  • Fixed entity_set power type ticking temporary entities inconsistently.

Full changelog; v2.11.3...v2.11.4

Apoli 2.11.3 (Minecraft 1.20.2)

10 Jan 10:34
2bca250
Compare
Choose a tag to compare

Fixes

  • Fixed replace_loot_table power type ignoring block conditions.
  • Fixed potential issues with the inventory power type.

Full changelog: v2.11.2...v2.11.3

Apoli 2.11.2 (Minecraft 1.20.2)

03 Jan 10:22
6325a51
Compare
Choose a tag to compare

Fixes

  • Fixed temporary UUIDs in the NBT of a power that uses the entity_set power type not being removed.

Apoli 2.11.1 (Minecraft 1.20.2)

02 Jan 10:25
db82b4e
Compare
Choose a tag to compare

Fixes

  • Fixed burn power type ignoring conditions.
  • Fixed fire_projectile power type not accepting zero value in its interval and start_delay fields.
  • Fixed entity_set power type not properly executing its action_on_remove bi-entity action upon removing entities.

Full changelog: v2.11.0...v2.11.1

Apoli 2.11.0 (Minecraft 1.20.2)

22 Dec 18:55
e375f55
Compare
Choose a tag to compare

Warning

Item actions have been changed to operate on a Pair<World, StackReference> instead of a Pair<World, ItemStack>, so if you're an addon developer and your addon implements an item action type, please read this migration guide for the steps for migrating and for more information.

Thanks to @MerchantPug for contributing!

Additions

  • New power types: action_on_block_place and prevent_block_place, which executes an action upon placing a block and being prevented from placing a block respectively. Both power types support these fields:
    • entity_action; an optional field, which if specified, executes the entity action on the player that placed/tried placing a block.
    • held_item_action; an optional field, which if specified, executes the item action on the item used by the player for placing/trying to place a block.
    • place_to_action; an optional field, which if specified, executes the block action at the position of the block the player has placed/tried to place.
    • place_on_action; an optional field, which if specified, executes the block action on the block the player placed/tried to place a block on.
    • item_condition; an optional field, which if specified, only executes the actions if the item used by the player for placing/trying to place a block fulfills the item condition.
    • place_to_condition; an optional field, which if specified, only executes the actions/prevent the player from placing a block if the block at the position of the block the player is about to place fulfills the block condition.
    • place_on_condition; an optional field, which if specified, only executes the actions/prevent the player from placing a block if the block the player is about to place a block on fulfills the block condition.
    • directions; determines whether the actions should be executed/player should be prevented if the player is about to place a block at the specified side(s) of a block.
    • hands; determines whether the specified actions should be executed/player should be prevented if the player has used one of the specified hand(s) when trying to place a block.
    • result_stack; an optional field, which if specified, gives the item stack to the player upon placing/trying to place a block.
    • result_item_action; an optional field, which if specified, executes the item action on the given item stack upon the player placing/trying to place a block.
  • New power type: entity_set, which provides a storage for storing references of entities. It supports these fields:
    • action_on_add; an optional field, which if present, executes the bi-entity action on either or both the actor (the entity that has the power) and the target (the entity/entities referenced in the entity set) upon being added on the entity set.
    • action_on_remove; an optional field, which if present, executes the bi-entity action on either or both the actor (the entity that has the power) and the target (the entity/entities referenced in the entity set) upon being removed from the entity set.
  • New entity action type: revoke_all_powers, which revokes all powers from the specified source.
  • New entity action type: remove_power, which removes the specified power, regardless of its source(s).
  • New entity action type: random_teleport, which teleports the entity to a random location within an area. It supports these fields:
    • area_width; determines the width of the area
    • area_height; determines the height of the area
    • heightmap; an optional field, which if specified, the random location will be anchored to the specified surface of the world.
    • attempts; determines how many attempts the entity should be teleported to a random location.
    • landing_block_condition; an optional field, which if specified, the entity will only be teleported on top of a block that fulfills the block condition. Otherwise, the entity will be teleported on top of a block that blocks movement/have solid collision.
    • landing_condition; an optional field, which if specified, the entity will only be teleported to a location if the entity condition is fulfilled. Otherwise, the entity will only be teleported to a location that do not have any blocks or fluids.
    • landing_offset; determines the offset to apply to the chosen location. If the X and/or Z offsets are specified, the X and/or Z of the chosen location will be divided (floored) before the offset is applied.
    • loaded_chunks_only; determines whether to only teleport the entity within loaded chunks.
    • success_action; an optional field, which if specified, executes the entity action on the entity after the entity has been teleported to a random location.
    • fail_action; an optional field, which if specified, executes the entity action on the entity if the entity hasn't been teleported.
  • New bi-entity action type: add_to_set, which adds the target to the specified set of the actor. It supports these fields:
    • set; the identifier of the entity set
    • time_limit; determines how long the entity should stay in the entity set in ticks.
  • New bi-entity action type: remove_from_set, which removes the target from the specified set of the actor.
  • New bi-entity condition type: in_set, which checks if the target is within the specified set of the actor.
  • New block action type: spawn_entity, which spawns an entity at the position of the block being operated on.
  • New meta condition type: chance, which basically only evaluates to true to the specified percentage of the time.
  • New /power sub-command: /power dump, which outputs the JSON of the specified <power> in chat (not shared with other opped players.)

Changes

  • The hud_render field in powers now can accept either an object or an array of objects. If an array of objects is specified, the HUD render will choose one (that's allowed to render and have its condition fulfilled or absent) of the specified objects from top to bottom.
  • Made the prevent_entity_collision power type work for entities with solid collision, like Shulkers and Boats.
  • Made the particle power type and the spawn_particles entity action type a bit consistent with how vanilla emits particles.
  • Changed the default resource bar sprite sheet to keep backwards compatibility.

Fixes

  • Fixed an exception being thrown on the client when syncing a power in certain edge-cases.
  • Fixed application/removal of attribute modifiers of powers that use the conditioned_attribute power type.
  • (#183) Fixed worn armor not being damaged upon taking damage.
  • Fixed a stack overflow issue with the phasing power type.
  • Fixed spawnpoint of players not persisting upon being set.
  • Fixed desync and more issues with the /resource operation command.
  • (#188) Fixed player abilities not being reset upon leaving a world in a special way.
  • Fixed crash caused by the relative_durability item condition type.
  • (#187) Fixed a memory leak issue.
  • Fixed the moving entity condition type not working reliably.

Full changelog: v2.10.3...v2.11.0

Apoli 2.10.3 (Minecraft 1.20.2)

18 Oct 15:36
e4ea976
Compare
Choose a tag to compare

Changes

  • Global power sets can now merge and be replaced. In order to replace or add onto a global power set that has already been replaced, a loading_priority value higher than the loading_priority specified in the replacement global power set must be specified.
  • Entity actions specified in a power that uses the action_on_callback power type is now only executed if the entity condition specified in the condition field of a power is fulfilled or absent.
  • Bi-entity action/condition types are now null-safe, where it now stops early/evaluates to false if neither the actor or target exist.

Fixes

  • Fixed ticking implementation of the action_over_time power type not properly accounting for when a power is active for the first time or no longer active.
  • Fixed the prevent_item_use power type ignoring the entity condition specified in the condition field of a power.
  • Fixed the game_event_listener power type executing the bi-entity action on the owner of the entity that emitted the game event (which is the case if the said entity is a projectile), instead of the entity that emitted the game event.
  • Fixed the crafting interface opened via the crafting_table entity action type closing upon the player moving.
  • Fixed items that are used on release (e.g: crossbow) not being consumed via the edible_item power type.

Full changelog: v2.10.2...v2.10.3

Apoli 2.10.2 (Minecraft 1.20.2)

11 Oct 10:37
a6817c4
Compare
Choose a tag to compare

Changes

  • Made modifiers serialize to JSON.
  • Regular expression patterns specified in the replace_loot_table power type is now pre-compiled, reducing the overhead from re-compiling it every time it replaces a loot table.
  • Used testing resource bar sprite sheet as the default resource bar sprite sheet.

Fixes

  • Fixed enchantments not working caused by the modify_enchantment_level power type.
  • Fixed a crash issue caused by the nbt item condition type missing a data field.
  • Fixed a crash issue caused by the predicate entity condition type being provided a null random identifier.
  • Fixed a crash issue caused by the attribute and other related power types trying to re-apply/remove already applied/removed attribute modifiers.
  • Fixed a translation error in the /power revoke command.
  • Fixed addition and removal of the sub-powers of a multiple power when syncing.

Apoli 2.10.1 (Minecraft 1.20.2)

09 Oct 16:49
2e06f38
Compare
Choose a tag to compare

Fixes

  • Fixed crash issue caused by Calio not including QuiltMC's JSON parser.

Apoli 2.10.0 (Minecraft 1.20.2)

09 Oct 11:40
87e657f
Compare
Choose a tag to compare

Warning

Item conditions have been changed to evaluate an Pair<World, ItemStack> instead of an ItemStack, so if you're an addon developer and your addon implements an item condition type, make sure to change how you're registering your item condition types and evaluating its result to match this change.

Thanks to @MerchantPug, @ThatRobin, @Dahminh and @RaymondBlaze for their contributions!

Additions

  • New aliasing system for addon developers: identifier aliasing system. The namespace aliasing system has been deprecated, so make sure to use the new identifier aliasing system instead.
  • New damage condition type: type, which checks if the damage source is of a specified damage type.
  • (#163) New power type: game_event_listener, which executes an action upon listening to a game event or vibration. It supports these fields:
    • block_action; an optional field, which if specified, executes the block action at the position where the game event or vibration is emitted.
    • bientity_action; an optional field, which if specified, executes the bi-entity action on either or both the actor (the entity that emitted the the game event or vibration) and the target (the entity that has the power).
    • block_condition; an optional field, which if specified, only executes the actions if the game event or vibration is emitted by a block that fulfills the block condition.
    • bientity_condition; an optional field, which if specified, only executes the actions if either or both the actor (the entity that emitted the game event or vibration) and the target (the entity that has the power) fulfills the bi-entity condition.
    • cooldown; determines the interval of ticks the power needs to recharge before being able to listen to game events or vibrations again.
    • hud_render; determines how the cooldown of the power will be visualized in the HUD.
    • range; determines how far the power can listen for game events or vibrations in blocks.
    • event; an optional field, which if present, will make the power only listen for the specified game event.
    • events; an optional field, which if present, will make the power only listen for the specified game events.
    • event_tag; an optional field, which if present, will make the power only listen for game events included in the specified game event tag.
    • show_particle; determines whether the vibration should emit a particle effect. It has a default value of true.
  • (#114) New item condition type: fuel, which checks if the item is considered a fuel item. It also has two fields:
    • comparison; determines how the fuel time value (in ticks) of the item is compared to a specific value.
    • compare_to; the value to compare the fuel time value (in ticks) of the item to.
  • (#108) New power type: modify_enchantment_level, which applies/modifies the level of the specified enchantment to/from the entity. It supports the following fields:
    • enchantment; the ID of the enchantment to apply/modify the level of to the entity.
    • item_condition; an optional field, which if specified, only applies/modifies the level of the specified enchantment to/from the entity if the item condition is fulfilled by the item.
    • modifier/modifiers; the modifier(s) to apply to the current level of the specified enchantment from the entity.
  • (#115) New entity condition types related to the weather: in_snow and in_thunderstorm, which checks if the entity is currently exposed to snowy weather and thunderstorm respectively.
  • (#103) New power type: action_on_death, which executes an action if the entity that has the power dies. It supports three fields:
    • bientity_action; the action to execute on either or both the target (the entity that died) and the actor (the killer).
    • damage_condition; an optional field, which if specified, will only execute the action if the damage dealt to the target (the entity that died) fulfills the specified damage condition.
    • bientity_condition; an optional field, which if specified, will only execute the action if either or both the actor (the killer) and the target (the entity that died) fulfills the specified bi-entity condition.
  • (#150) New block condition type: command, which behaves similar to the command entity condition type, except it doesn't have any entity to reference via @s. However, relative position (~ ~ ~) refers to the position of where the block condition is evaluated.
  • (#161) New power type: edible_item, which make items edible. It supports these following fields:
    • entity_action; an optional field, which if present, executes the specified entity action on the entity upon consuming an item.
    • item_action; an optional field, which if present, executes the specified item action on the item consumed by the entity.
    • result_item_action; an optional field, which if present, executes the specified item action on the item given to the entity as a result of consuming an item.
    • item_condition; an optional field, which if present, will only make the item edible and execute the specified actions if the item fulfills the specified item condition.
    • food_component; the food component, such as the item's hunger and saturation values, to apply to the item.
    • return_stack; an optional field, which if present, will be given to the entity upon consuming an item.
    • consume_action; determines whether the action of consuming the item is considered "eating" ("eat") or "drinking" ("drink"). It has a default value of "eat".
    • consume_sound; the sound event to play when consuming the item.
    • priority; determines the priority of which the power will apply its modification to the item. If the item is already considered a food item, the priority value must be higher than 0 to override its already defined food component, consume action and the like.

Changes

  • Updated to 1.20.2
  • Migrated to Fabric's object-based packet networking API.
  • The ticking method of the action_over_time power type has been changed to be more consistent.
  • Powers are now synced on reload. This allows for reloading the data of the powers upon /reload-ing or removing powers that no longer exist from entities.
  • The prevent_sleep power type has a new field: priority, which is used, alongside the set_spawn_point field, to determine which power will prevent the player to sleep and display a message (and prevent setting its spawn). In terms of which field is accounted first, set_spawn_point precedes priority.
  • The holding logic for the climbing power type has been changed; which now defaults to when the entity is sneaking. The default condition is overridden if the hold_condition field is specified.
  • The damage entity/bi-entity action types have two new fields:
    • modifier/modifiers; an optional field, which if specified, modifies the damage to be applied to the target. It uses the max health of the target as the base value.
  • The /power clear command now targets the entity that invoked the command by default if no selector is specified.
  • The modify_crafting power type now works for recipes provided by powers that use the recipe power type.
  • Item conditions now evaluate a Pair<World, ItemStack> instead of an ItemStack, similar to item actions.
  • (#125) The *_advancement entity action types have three new fields:
    • criteria/criterion; determines the criteria/criterion to grant/revoke to/from the specified advancement.
    • selection; determines how to select the parent advancement(s) or child(ren) advancement(s) of the specified advancement.
  • (#93) The invisibility power type has a new field:
    • bientity_condition; an optional field, which if specified, the target (the entity that has the power) will only be invisible to actors (either the player or mobs that may see the target) if the bi-entity condition is fulfilled by either or both of them.
  • (#109) The raycast entity action/condition types' distance field is now optional. It also has four new fields:
    • block_distance; an optional decimal number that determines the distance of the raycast if block is set to true. If absent, it will use the entity's block reach (with Reach Entity Attributes compatibility).
    • entity_distance; an optional decimal number that determines the distance of the raycast if entity is set to true. If absent, it will use the entity's entity attack range (with Reach Entity Attributes compatibility).
    • direction; an optional field, which if specified, determines the direction of the raycast.
    • space; determines the space of the specified direction.
  • (#123) Allowed multiple powers that use the overlay power type to work at the same time.
  • (#83) The modify item action type now has more loot context for certain item modifiers to work properly:
    • The "this" entity now refers to the entity holding the item.
    • Predicates, such as minecraft:match_tool, now evaluates the item being modified.
  • (#159) The item_on_item power type has a new field: click_type, which determines whether to execute the actions if the player does a left-click or right-click action.
  • (#149) The way the usability hint of the prevent_item_use power type is displayed has been changed:
    • Hidden powers are no longer excluded from being displayed if non-hidden powers are present.
    • Usability hints are now compact by default.
    • Names of the powers can be forcefully displayed by pressing the "key.apoli.usability_hint.show_powers" keybind (bound to Left Alt by default).
  • (#152) HUD renders has a new field: icon_index, which determines which icon to display beside the HUD bar.

Fixes

  • (#113) The owner bi-entity condition type now works for other ownable entities, such as projectiles.
  • (#...
Read more