feat: add Vampiric and Explosive enchantments with 21 language translations
All checks were successful
Build and Artifact / build (push) Successful in 3m2s

- Add VampiricEnchantmentEffect: heals player on hit (50%/100%/150% per level)
- Add ExplosiveEnchantmentEffect: chance-based explosions (10%/20%/30% per level)
- Register enchantments in ModEnchantmentEffects and datagen
- Add translations for 21 languages (DE, PT-BR, IT, ZH-CN, ZH-TW, JA, KO, RU, TR, UK, NL, DA, SV, NO, PL)
- Generate enchantment JSON data files
- Add enchantments to enchanting table tag
This commit is contained in:
2026-01-18 18:31:03 -06:00
parent 6652a25d8a
commit f3dbe89d8e
34 changed files with 392 additions and 22 deletions

View File

@@ -1,6 +1,7 @@
package dev.sillyangel.more_spear_enchantments.fabric.enchantment;
import dev.sillyangel.more_spear_enchantments.util.ModTags;
import dev.sillyangel.more_spear_enchantments.enchantment.ModEnchantmentEffects;
import dev.sillyangel.more_spear_enchantments.enchantment.effect.*;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider;
@@ -107,6 +108,47 @@ public class ModEnchantmentGenerator extends FabricDynamicRegistryProvider {
new CripplingEnchantmentEffect(LevelBasedValue.perLevel(2.0f, 1.0f)) // 2s base, +1s per leve
)
);
// Our new enchantment, "Vampiric."
register(entries, ModEnchantmentEffects.VAMPIRIC, Enchantment.enchantment(
Enchantment.definition(
registries.lookupOrThrow(Registries.ITEM).getOrThrow(ModTags.Items.SPEARS),
5, // Lower weight (rarer)
3,
Enchantment.dynamicCost(10, 8),
Enchantment.dynamicCost(50, 8),
4,
EquipmentSlotGroup.HAND
)
)
.withEffect(
EnchantmentEffectComponents.POST_ATTACK,
EnchantmentTarget.ATTACKER,
EnchantmentTarget.VICTIM,
new VampiricEnchantmentEffect(LevelBasedValue.perLevel(0.5f, 0.5f)) // 0.5 base, +0.5 per level (50%, 100%, 150%)
)
);
// Our new enchantment, "Explosive."
register(entries, ModEnchantmentEffects.EXPLOSIVE, Enchantment.enchantment(
Enchantment.definition(
registries.lookupOrThrow(Registries.ITEM).getOrThrow(ModTags.Items.SPEARS),
2, // Very rare
3,
Enchantment.dynamicCost(20, 10),
Enchantment.dynamicCost(70, 10),
8,
EquipmentSlotGroup.HAND
)
)
.withEffect(
EnchantmentEffectComponents.POST_ATTACK,
EnchantmentTarget.ATTACKER,
EnchantmentTarget.VICTIM,
new ExplosiveEnchantmentEffect(
LevelBasedValue.perLevel(1.5f, 0.5f), // Power: 1.5, 2.0, 2.5
LevelBasedValue.perLevel(0.1f, 0.1f) // Chance: 10%, 20%, 30%
)
)
);
}
private void register(Entries entries, ResourceKey<Enchantment> key, Enchantment.Builder builder, ResourceCondition... resourceConditions) {