Enchantment Builder

Link to enchantment-builder

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

Importare la Classe

Link to importare-la-classe

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.

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

Calculated Properties

Link to calculated-properties

You can set and get these properties functions.

nomeparametersReturn Type
nome
canApply
parameters
IEnchantmentDefinition thisEnchantment, IItemStack item
Return Type
bool
nome
canApplyAtEnchantmentTable
parameters
IEnchantmentDefinition thisEnchantment, IItemStack item
Return Type
bool
nome
canApplyTogether
parameters
IEnchantmentDefinition thisEnchantment, IEnchantmentDefinition other
Return Type
bool
nome
calcDamageByCreature
parameters
IEnchantmentDefinition thisEnchantment, int level, String creatureType
Return Type
float
nome
calcEnchantabilityMin
parameters
IEnchantmentDefinition thisEnchantment, int level
Return Type
int
nome
calcEnchantabilityMax
parameters
IEnchantmentDefinition thisEnchantment, int level
Return Type
int
nome
calcModifierDamage
parameters
IEnchantmentDefinition thisEnchantment, int level, IDamageSource damageSource
Return Type
int
nome
calcTranslatedName
parameters
IEnchantmentDefinition thisEnchantment, int level
Return Type
string
nome
parameters
Return Type
nome
onEntityDamaged
parameters
IEnchantmentDefinition thisEnchantment, IEntityLivingBase user, IEntity target, int level
Return Type
void
nome
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();