This is a backport of v1.10.2 (1.20.2)
This is a backport of v1.10.1 (1.20.2)
This is a backport of v1.10.0 (1.20.2), with some notable differences:
- The NBT operation/operator data types are still re-using vanilla's NBT operation/operator classes.
- The
modify_riding_position
andmodify_passenger_position
power types are currently not re-implemented due to its dependence on a method that only existed in Minecraft versions 1.20.2 and above for its implementation.
Changes
- Updated to Minecraft 1.20.2
- Removed some power/condition/action types that are now available in Apoli.
- The end bound for the linear-interpolated FOV multiplier is no longer affected by the
affected_by_fov_effect_scale
field of themodify_fov
power type. - Changed the object at which the NBT operation/operator data types operate on.
- Improved object-based packet implementation.
- Added
should_resolve
boolean field tomodify_label_render
power type, with a default value oftrue
(set this to false if you don't plan on using text components which require resolution.)
Fixes
- Fixed
open_inventory
entity action type not opening the inventory of the entity that invoked the action if nopower
is specified (for real this time.)
Additions
- New power type:
pose
, which sets the pose of the entity that has the power (may not work for certain poses for certain entities). It supports apose
field, which then supports these values:standing
,fall_flying
,sleeping
,swimming
,spin_attack
,crouching
,long_jumping
,dying
,croaking
,using_tongue
,sitting
,roaring
,sniffing
,emerging
,digging
. - New entity condition type:
in_pose
, which checks the entity's current pose. It supports apose
field. - New data type: message filter, used for executing an entity action if a message matches the specified filter. It supports these fields:
filter
; the string used as the filter for matching the message. Supports regular expressions.entity_action
; an optional entity action field, which will be executed upon the message matching the filter.
- New data type: message consumer, used for executing entity actions if a message matches the specified filter. It supports these fields:
filter
; the string used as the filter for matching the message. Supports regular expressions.before_action
/after_action
; an optional entity action field. When this entity action is invoked will depend on the power type.
- New data type: message replacer, used for replacing a message and executing entity actions if the message matches the specified filter. It supports these fields:
filter
; the string used as the filter for matching the message. Supports regular expressions.before_action
; an optional entity action field, which will be executed before the message is replaced.after_action
; an optional entity action field, which will be executed after the message has been replaced successfully (e.g: the message is no longer as it was.)
- New power type:
action_on_sending_message
, which executes an action upon sending a message. It supports these fields:message_type
; determines whether the actions should be executed if the message is of this type. See here for a list of vanilla message typesfilter
/filters
; optional message consumer(s) fields. Invokesbefore_action
before the message is prevented from being sent.priority
; determines the execution priority of the power. Higher values means the power will be executed earlier.
- New power type:
prevent_sending_message
, which prevents a message from being sent. It supports these fields:message_type
; determines whether the actions should be executed if the message is of this type. See here for a list of vanilla message typesfilter
/filters
; optional message filter(s) fields.priority
; determines the execution priority of the power. Higher values means the power will be executed earlier.
- New power type:
modify_sent_message
, which modifies the message sent by the player before it's broadcasted to the server. It supports these fields:filter
/filters
; optional message filter(s) fields.priority
; determines the execution priority of the power. Higher values means the power will be executed earlier.
- New item action type:
modify_item_cooldown
, which modifies the item's cooldown. It supports these fields:modifier
/modifiers
; these modifiers will be applied to the item's previous cooldown.
- New item condition type:
item_cooldown
, which compares the cooldown progress (ranging from 0.0 to 1.0) of the item to a specific value. It supports these fields:comparison
; determines how the cooldown progress value of the item is compared to the specified value.compare_to
; the value to compare the cooldown progress value of the item to.
- New power types,
modify_riding_position
andmodify_passenger_position
, which modifies the mounting position of the entity that has the power, and the passenger(s) of the entity that has the power respectively. It supports these fields:bientity_condition
; an optional bi-entity condition field, which if present, checks whether either or both the actor (the passenger(s)) and the target (the entity being ridden) fulfills this bi-entity condition.x_modifier
; an optional modifier field, which will be applied to the passenger's X mounting position.y_modifier
; an optional modifier field, which will be applied to the passenger's Y mounting position.z_modifier
; an optional modifier field, which will be applied to the passenger's Z mounting position.
- New damage condition type:
attacker
; similar to Apoli'sattacker
damage condition type, except it has abientity_condition
field.
Full changelog: v1.9.1-1.20...v1.10.0-1.20.2
Changelog
Changes
- The current screen and perspective is now only synced after a certain amount of ticks (controlled by the
syncTickRate
field in the client config.) - Simplified the attack distance scaling factor implementation of the
eggolib:invisibility
power type. - Optimized implementation of syncing command tags.
Fixes
- Fixed performance issue with setting the item stack's holder.
- Fixed
open_inventory
entity action type not opening the entity's inventory if nopower
is specified.
Changelog
- Updated to 1.20.x
- Added
tooltip
power type- Similar to Apoli's
tooltip
power type, except it can resolve JSON text component on the server-side
- Similar to Apoli's
- Added these new entity action types:
grant_advancement
revoke_advancement
- Both are similar to Apoli's
*_advancement
entity action types, except it's more functionally similar to the/advancement
command
- Both are similar to Apoli's
- Added these new item action types:
execute_command
copy_to_storage
- Added
type
damage condition type
Changelog
- Added
tooltip
power type- Similar to Apoli's
tooltip
power type, except it can resolve JSON text component on the server-side
- Similar to Apoli's
- Added these new entity action types:
grant_advancement
revoke_advancement
- Both are similar to Apoli's
*_advancement
entity action types, except it's more functionally similar to the/advancement
command
- Both are similar to Apoli's
- Added these new item action types:
execute_command
copy_to_storage
- Added
type
damage condition type
Changelog
- Updated to 1.19.4
- Updated testdata
- Added these new power types:
prevent_key_use
stat
- Updated the
invisibility
power type:- It now affects the attack distance scaling factor of mobs
- Added these new entity condition types:
in_snow
in_thunderstorm
has_spawnpoint
- Added these new bi-entity condition types:
colliding
owner
- Similar to Apoli's
owner
bi-entity condition type, except it works for other ownable entities
- Similar to Apoli's
- Added
command
block condition type - Added
modify
item action type- Similar to Apoli's
modify
item action type, except with more loot context
- Similar to Apoli's
- Added
fuel
item condition type
Changelog
- Added the
modify_fov
power type - Updated the
modify_label_render
power type- Now parses the specified JSON text component in the
text
field - Now has a
before_parse_action
andafter_parse_action
entity action fields - Now has a
tick_rate
positive integer field
- Now parses the specified JSON text component in the
- Added the
exposed_to_weather
entity condition type - Updated the
scoreboard
entity condition type- Now accepts a score holder in its
name
field
- Now accepts a score holder in its
- Updated the
inventory
entity condition type- Now has a
comparison
andcompare_to
fields
- Now has a
Changelog
- Updated testdata
- Tweaked the
eggolib:loop
meta action type- The action specified in the
before_action
field is now executed before getting the score from the specified scoreboard
- The action specified in the
- Updated the
eggolib:invisibility
power type- Now has the new fields from the
apoli:invisibility
power type
- Now has the new fields from the
- Removed the
eggolib:prevent_item_use
power type - Removed the
eggolib:clear_key_cache
entity action type - Added an
eggolib:equal
bi-entity condition type - Tweaked the
eggolib:game_event_listener
power type- Now has a
show_particle
boolean field, which determines whether it should spawn the vibration particle - Now can listen to the game events emitted by the power holder
- Now has a
- Added an
eggolib:selector_action
entity action type - Made the
SCOREBOARD
data type accept score holders- e.g:
scoreHolderName
and@e[tag = test, limit = 1]
are valid inputs
- e.g:
- Added an
eggolib:leash
bi-entity action type - Added an
eggolib:moon_phase
entity condition type - Optimized the
eggolib:in_screen
entity condition type- Now it shouldn't lag the server exponentially if many players are invoking it
- Added an
eggolib:crawling
power type - Added an
eggolib:crawling
entity condition type