Changelog
This is primarily a bug-fixing and optimisation update.
*Changed the way /reload
works to refresh attributes:
- No longer saves the
updateFlag
to the level's nbt data. - No longer injects the
updateFlag
into vanilla packets. - Instead, we only use the
updateFlag
in runtime - not saving it at all, anywhere.
*Fixed #80: attribute tracking is handled differently now.
*Likely fixed an incompatibility between Data Attributes and ReplayMod: we no longer mess around with world properties at all.
*May have fixed long-standing issues 24 and 10: almost all networking has been removed - now we only send/receive two custom packets in the whole mod: on game join and when /reload
is executed.
*Various performance improvements.
Changelog
+Added hierarchy entity types that can be used to apply attributes to all entities that are an instance of an entity class. Currently supported types are as follows:
Identifier | Class Type |
---|---|
dataattributes:living_entity |
LivingEntity |
dataattributes:mob_entity |
MobEntity |
dataattributes:path_aware_entity |
PathAwareEntity |
dataattributes:hostile_entity |
HostileEntity |
dataattributes:passive_entity |
PassiveEntity |
dataattributes:animal_entity |
AnimalEntity |
These have a hierarchy of:
LivingEntity
â”— MobEntity
â”— PathAwareEntity
┣ HostileEntity
â”— PassiveEntity
â”— AnimalEntity
This feature is useful for when you want to modify the attributes of many different mobs, but do not know every mob's EntityType
identifier.
*Changed how datapack is synced S2C:
Before, sent raw NBT through network. Now:
- converts NBT to SNBT;
- uses Java's Deflater to compress the SNBT;
- converts the compressed SNBT to byte array;
- sends the byte array over network;
- Reverses this using java's Inflater on the client.
This reduces the raw NBT network packet from aprox. 4KB to ~0.9KB. This was done in attempt to fix packet size issue with Velocity plugin, but also in general the player connection packet has the potential to get really massive really quickly depending on the datapack.
-Removed version checking between client and server. This was done in an attempt to make this compatible with Velocity plugin, which tends to get upset if we use regular Minecraft's connection packets.
*Changed MutableIntFlag to be implemented further up in the hierarchy (MutableWorldProperties). Added relevant casting checks. This is an attempt to fix bugs caused when other mods want to make 'dummy world properties' that don't respect the world properties hierarchy nor the client/server divide.
+Incremented version.
+Added multiplier based attribute functions.
Why: among other things such as being a requested enhancement, flat Attack Speed buffs are too OP and really need a multiplier type mechanic.
How: when defining attribute functions in JSON, instead of the value being a number/double, it is an object containing aforementioned number as well as a FunctionBehaviour reference. This lets the game know how the value should be used.
This is a breaking change, hence the buff in middle version number. All mods/datapacks will need to adjust their data JSON accordingly.