Enchantment Builder

Link to enchantment-builder

Using this package you can create custom enchantments for tools, weapons and probably everything else.

Importing the class

Link to importing-the-class

It might be required for you to import the class if you encounter any issues (like casting an Array), so better be safe than sorry and add the import.
import mods.contenttweaker.enchantments.EnchantmentBuilder;

Creating an Enchant

Link to creating-an-enchant

First and foremost you will need to create a Material Builder.
This can be done using the static create method.

ZenScript
Copy
//mods.contenttweaker.enchantments.EnchantmentBuilder.create(String name);
val myChant = mods.contenttweaker.enchantments.EnchantmentBuilder.create("kindlich_chant");

Remember, that you will need to register the enchantment after you've done your changes.
This can be done with the register method which will return a IEnchantmentDefinition of the new enchantment.

ZenScript
Copy
myChant.register();

You can set and get these properties using myChant.name.

nameType
name
name
Type
string
name
allowedOnBooks
Type
bool
name
applicableSlots
Type
IEntityEquipmentSlot[] (default: empty)
name
curse
Type
bool
name
domain
Type
string (default: "contenttweaker")
name
maxLevel
Type
int (default: 1)
name
minLevel
Type
int (default: 1)
name
rarity
Type
string (use the custom methods below)
name
treasure
Type
bool
name
type
Type
string (use the custom methods below)

Calculated Properties

Link to calculated-properties

You can set and get these properties functions.

nameparametersReturn Type
name
canApply
parameters
IEnchantmentDefinition thisEnchantment, IItemStack item
Return Type
bool
name
canApplyAtEnchantmentTable
parameters
IEnchantmentDefinition thisEnchantment, IItemStack item
Return Type
bool
name
canApplyTogether
parameters
IEnchantmentDefinition thisEnchantment, IEnchantmentDefinition other
Return Type
bool
name
calcDamageByCreature
parameters
IEnchantmentDefinition thisEnchantment, int level, String creatureType
Return Type
float
name
calcEnchantabilityMin
parameters
IEnchantmentDefinition thisEnchantment, int level
Return Type
int
name
calcEnchantabilityMax
parameters
IEnchantmentDefinition thisEnchantment, int level
Return Type
int
name
calcModifierDamage
parameters
IEnchantmentDefinition thisEnchantment, int level, IDamageSource damageSource
Return Type
int
name
calcTranslatedName
parameters
IEnchantmentDefinition thisEnchantment, int level
Return Type
string
name
parameters
Return Type
name
onEntityDamaged
parameters
IEnchantmentDefinition thisEnchantment, IEntityLivingBase user, IEntity target, int level
Return Type
void
name
onUserHurt
parameters
IEnchantmentDefinition thisEnchantment, IEntityLivingBase user, IEntity attacker, int level
Return Type
void

Use these methods to be instantly notified if you made a typo.

ZenScript
Copy
//Rarities
myChant.setRarityCommon()
myChant.setRarityUncommon()
myChant.setRarityRare()
myChant.setRarityVeryRare()

//Types
myChant.setTypeAll()
myChant.setTypeArmor()
myChant.setTypeFeed()
myChant.setTypeLegs()
myChant.setTypeChest()
myChant.setTypeHead()
myChant.setTypeWeapon()
myChant.setTypeDigger()
myChant.setTypeFishingRod()
myChant.setTypeBreakable()
myChant.setTypeBow()
myChant.setTypeWearable()
ZenScript
Copy
#loader contenttweaker
val builder = mods.contenttweaker.enchantments.EnchantmentBuilder.create("kindlich_chant");
builder.applicableSlots = [mainHand, offhand, feet, legs, chest, head];
builder.setTypeAll();
builder.setRarityVeryRare();
builder.calcModifierDamage = function(thisEnch, level, damageSource){
    return level;
};

builder.onUserHurt = function(thisEnch, entity, attacker, level) {
    entity.health = entity.maxHealth;
    if(entity instanceof crafttweaker.player.IPlayer) {
        val player as crafttweaker.player.IPlayer = entity;
        player.foodStats.addStats(100, 10.0f);
    }

};

builder.register();

builder.name = "other_chant";
builder.domain = "definitely_not_cot";
builder.calcModifierDamage = null;
builder.onUserHurt = function(thisEnch, player, attacker, level) {
    player.sendMessage("EARNED IT!");   
};
builder.register();