Major update to make the library compatible with 1.21.5
## Additions
- New item data components:
- `combat-plus:melee_weapon`
- Holds two floats, weapon damage and offhand damage.
- All Melee and Dual weapons are expected to use this data component.
- Combat+ mods can use this component to acquire damage values for callbacks (interface values from MeleeWeapon should always be preferred).
- `combat-plus:cooldown_group`
- Takes an identifier and sets what group the item should use when on cooldown.
- `combat-plus:max_use_time`
- Determines how many ticks an item can be used for.
- This component was moved from Dual Swords.
- New enchantment component type: data component enchantment effects!
- Enchantments can grant temporary data components to items.
- The component is added when the item is enchanted and lost when the enchantment is removed.
- Currently supports:
- Cooldown Group
- Max Use Time
- Blocks Attacks
- New attribute: Protection Effectiveness
- Treated as a multiplier, this determines how effective protection enchantments are on the entity.
- Default value of 1 (normal effectiveness).
## Changes
- Callbacks for blocking attacks now accept a damage source instead of the attacking entity.
## Bugfixes
- Tridents are no longer unbreakable with KeepLoyaltyTridents.
- When using `KeepLoyaltyTridents`, only tridents with Loyalty will go on cooldown.
Minor update to add the groundwork for a shield-related features.
## Additions
- Added new class for easily executing callbacks from an item.
- Added new interface, BlockingItem.
- Items with the ability to block attacks should implement this interface.
- It contains methods that allow the item to configure the nature of its blocking.
- Cooldown duration when disabled.
- How many ticks the item must be used for until it is actively blocking attacks.
- Callbacks
- Damaging the shield.
- Post-block actions.
- Added enchantment callback for post-block actions.
- Added enchantment context (for conditions) for post-block actions.
- In this context, the target is the owner of the enchanted item, the one who blocked the attack.
- Added debug shield item and debug blocking enchantment for developers.
- **[LilyLib]** Enchantment descriptions now also generate a `.description` key as well as the existing `.desc` key.
Minor update to add the groundwork for a shield-related features.
## Additions
- Added new class for easily executing callbacks from an item.
- Added new interface, BlockingItem.
- Items with the ability to block attacks should implement this interface.
- It contains methods that allow the item to configure the nature of its blocking.
- Cooldown duration when disabled.
- How many ticks the item must be used for until it is actively blocking attacks.
- Callbacks
- Damaging the shield.
- Post-block actions.
- Added enchantment callback for post-block actions.
- Added enchantment context (for conditions) for post-block actions.
- In this context, the target is the owner of the enchanted item, the one who blocked the attack.
- Added debug shield item and debug blocking enchantment for developers.
- **[LilyLib]** Enchantment descriptions now also generate a `.description` key as well as the existing `.desc` key.
Minor update to add the groundwork for a shield-related features.
## Additions
- Added new class for easily executing callbacks from an item.
- Added new interface, BlockingItem.
- Items with the ability to block attacks should implement this interface.
- It contains methods that allow the item to configure the nature of its blocking.
- Cooldown duration when disabled.
- How many ticks the item must be used for until it is actively blocking attacks.
- Callbacks
- Damaging the shield.
- Post-block actions.
- Added enchantment callback for post-block actions.
- Added enchantment context (for conditions) for post-block actions.
- In this context, the target is the owner of the enchanted item, the one who blocked the attack.
- Added debug shield item and debug blocking enchantment for developers.
- **[LilyLib]** Enchantment descriptions now also generate a `.description` key as well as the existing `.desc` key.
## Additions
- Added gamerule (`lethalPoison`) to toggle whether poison can be lethal.
- Includes new related damage type.
- Sweeping attacks now apply Combat+ post-charged hit effects to all affected entities.
- Enchanted Numerals now grants translation keys for 0 to 10.
- **[LilyLib]** Added datagen provider for `assets/.../sounds.json`
- **[LilyLib]** Added datagen provider for particle textures.
- **[LilyLib]** Added wrapper provider for the Fabric language datagen provider.
- This provides common useful functions: adding enchantments with their descriptions (for inter-mod compatibility), and adding simple death translations.
## Changes
- `pvpEnchantmentModifier` now has a minimum value of 0.
- `#combat-plus:standard_attack` tag includes the vanilla `is_player_attack` tag instead of the individual player attack.
Major patch to finally bring Combat+ into the world of 1.21, this update completely rewrites literally everything that even remotely interacted with enchantments.
For obvious reasons, version 3.0.0 contains breaking changes for almost everything.
# Brief Overview
Yes, this is the *brief* version...
Check [Github](https://github.com/Provismet/CombatPlus-Core/releases/tag/3.0.0-mc1.21) for the full details.
## Additions
- Combat+ Core now reveals LilyLib to dependent mods.
- LilyLib was already bundled in the jar, it's just made available now.
- LilyLib patch notes will be included in Combat+ patch notes.
- Added several new enchantment components types:
- `combat-plus:post_charged_attack`
- `combat-plus:post_critical_attack`
- `combat-plus:post_kill`
- `combat-plus:bonus_damage`
- So items that are not the primary weapon can increase damage too.
- `combat-plus:gamerule_damage`
- Damage dealt against players is modified by the new gamerule.
- This allows for world-based PvP balancing.
- New gamerule that modifies enchantment damage effectiveness against players.
- Extra Damage Enchantments and Extended Enchanting both had their seperate versions of this gamerule before. They have been moved into Combat+ now.
- Added a small library of common effects and conditions for enchantments.
- Added a new type of enchantment effect: Double Entity Effect
- This is used by the Combat+ components and allows for effects for consider two entities at once.
- Added two built-in resource packs:
- One provides Roman Numerals for enchantments with a level over 10 (up to 255).
- One replaces Roman Numerals for enchantment levels with plain numbers (up to 255).
- Vanilla Maces are considered melee weapons by Combat+.
- Added two new loot functions.
## Changes
- Sharpness, Smite, Bane of Arthropods, and Fire Aspect are now overriden entirely by Combat+ Core to change their supported item tags.
- Previously a mixin was used to change the tags instead.
- Smite and Bane of Arthropods use the new `combat-plus:gamerule_damage` component.
- The enchantment types of Combat+ (Additional Damage, Offhand, Weapon Utility, Aspect) have been converted into enchantment tags.
- Combat+ Enchantment Helper methods have different parameters.
## Removals
- The entire old enchanting system. :(
## New Features From LilyLib
- Enchantment datagen provider
- DamageType datagen provider
- DamageType tag datagen provider
- Enchantment Containers
- Combines a registry key with an enchantment builder. Highly useful for eliminating code duplication if you need to bootstrap your enchantments.
- Also contains useful utility for getting registry entries of the enchantment.
- DamageType Containers
- Combines a registry key with a damage type. Highly useful for eliminating code duplication.
- Also has utility methods for generating damage sources.
- Fabric resource condition to only load certain things when in dev mode.
Patch update to add some little features before updating to the gauntlet that is 1.21.
## Additions
- Development environments now have access to a debug enchantment and item, these use their callbacks for console logs. This is to help developers assess when callbacks are workings.
- Enchantments that use the Combat+ enchantability tags will now appear in the Creative Mode inventory.
Major release that includes some breaking changes to account for Mojang's own breaking changes in 1.20.5/6.
## Additions
- Added abstract class for melee weapons.
- Added enchantability item tags for the 4 new item groups + primary versions of these tags.
- Vanilla enchantments now use Combat+ item tags for when appropriate.
- The Combat+ tags extend the vanilla ones.
- Added tag translations.
## Changes
- MeleeWeapon.getWeaponDamage now requires an ItemStack parameter.
- Combat+ enchantment classes can no longer use the vanilla damage method, the Combat+ version should be used instead.
- CombatTags has been renamed to CPCItemTags.
## Removals
- FabricASM is no longer used or included by Combat+. (Hurray!)