0.1.2-Beta
Compatibility
Changes
D2 Affix 更新日志 / Changelog
版本范围 / Release range: 0.1.0-Beta → 0.1.2-Beta
日期 / Date: 2026-07-29
Mod ID: d2affix · Minecraft 1.20.1 (Forge 47.4.10+) · Author: PyroStella
English
Added
- Melee Aspect Enchantment system. Four new weapon enchantments (Rarity: RARE, Max Level: 5), each adding flat elemental damage on melee hit, +1 point per level:
cold_aspect(d2affix:cold),poison_aspect(d2affix:poison),lightning_aspect(d2affix:lightning),magic_aspect(d2affix:magic).- New classes
D2AspectEnchantment+AspectEnchantmentHandler(listens onLivingHurtEvent).
- New damage type
d2affix:magic(magic.json), registered intobypasses_armor,bypasses_cooldown, andon_crittags; replaces vanillamagicfor the magic aspect damage. - Vanilla
minecraft:fire_aspectintegrated into the same on-hit damage system (deals +1d2affix:fireper level).
Changed
- Fire Aspect max level 2 → 5 (
FireAspectEnchantmentMixin.getMaxLevel()). - Protection enchantment compatibility (
ProtectionEnchantmentMixin.checkCompatibility()): each protection type now conflicts only with itself; different protection types (protection / fire / blast / projectile) are no longer mutually exclusive. The vanilla fall-protection exception is preserved. - Sharpness rebalance (
DamageEnchantmentMixin.getDamageBonus(),type == 0only): damage bonus changed from1.0 + (level-1)*0.5tolevel(i.e. +1 per level). Smite (type == 1) and Bane (type == 2) are unchanged. - Poison potion redirection (
MobEffectPoisonMixin): poison damage is now dealt asd2affix:poisoninstead of vanillamagic; an already-poisoned entity is no longer re-applied. Tick interval followsf(x)=25 - 0.00367816·x²(floored to 1 tick) and damageg(x)=0.5·xper displayed level.
Fixed
- Aspect damage source corrected to the attacker (previously mistakenly used the victim). Added anti-mis-trigger guards:
is_thornstag exclusion,getDirectEntity() != attackercheck, andAdditionalDamage.isApplyingguard. - Aspect status-effect duration floor of 1 second (20 ticks) in
LivingDamageHandler(cold slow/weakness and poison), preventing sub-second durations.
Technical / Notes
- Added 4 Mixins (Fire Aspect, Protection, MobEffect poison, DamageEnchantment) registered in
mixins.d2affix.json. All@Overwritemethods carry@author+@reasonJavadoc per project convention.
中文
新增
- 近战附加附魔系统。 新增 4 个武器附魔(稀有度 RARE,最大等级 5),近战命中时附加固定元素伤害,每级 +1 点:
cold_aspect(d2affix:cold)、poison_aspect(d2affix:poison)、lightning_aspect(d2affix:lightning)、magic_aspect(d2affix:magic)。- 新增类
D2AspectEnchantment与AspectEnchantmentHandler(监听LivingHurtEvent)。
- 新增伤害类型
d2affix:magic(magic.json),已加入bypasses_armor、bypasses_cooldown、on_crit标签;代替原版magic作为魔法附加伤害。 - 原版
minecraft:fire_aspect火焰附加并入 同一命中增伤体系(每级 +1d2affix:fire)。
变更
- 火焰附加最大等级 2 → 5(
FireAspectEnchantmentMixin.getMaxLevel())。 - 保护附魔互斥规则(
ProtectionEnchantmentMixin.checkCompatibility()):每种保护附魔现在仅与自身互斥;不同保护种类(保护 / 火焰 / 爆炸 / 弹射)不再互相排斥。保留原版摔落保护兼容例外。 - 锋利附魔平衡调整(
DamageEnchantmentMixin.getDamageBonus(),仅type == 0分支):伤害加成由1.0 + (level-1)*0.5改为level(即每级 +1)。亡灵克星(type == 1)与节肢克星(type == 2)保持不变。 - 剧毒药水重定向(
MobEffectPoisonMixin):剧毒伤害由magic改为d2affix:poison;已中毒实体不再重复施加。结算间隔遵循f(x)=25 - 0.00367816·x²(封底 1 刻),伤害g(x)=0.5·x(按显示等级)。
修复
- 附加伤害来源修正为攻击者(此前误用受害者)。新增防误触发机制:
is_thorns标签排除、getDirectEntity() != attacker判定、以及AdditionalDamage.isApplying守卫。 - 附加状态效果时长下限为 1 秒(20 刻)(
LivingDamageHandler的寒冷缓慢/虚弱与中毒),防止不足 1 秒的异常时长。
技术说明
- 新增 4 个 Mixin(火焰附加、保护、剧毒 MobEffect、DamageEnchantment),已在
mixins.d2affix.json注册。所有@Overwrite方法均按项目约定携带@author+@reason注释。
Compatibility note / 兼容性提示: The vanilla enchantment rebalances (Fire Aspect level cap, Protection mutual-exclusion, Sharpness curve) and the poison potion redirection are applied globally via Mixins and will affect all callers, including other mods. See the "Vanilla Behavior Overrides" section in
D2Affix_release_0.1.2-Beta.mdfor the full list.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:wvNcUG8s:OspfEseN"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:wvNcUG8s:OspfEseN"
}

