Enchantment Builder

Link to enchantment-builder

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

Импорт класса

Link to импорт-класса

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();

Свойства

Link to свойства

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

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

Calculated Properties

Link to calculated-properties

You can set and get these properties functions.

nameparametersВозвращаемый тип
name
canApply
parameters
IEnchantmentDefinition thisEnchantment, IItemStack item
Возвращаемый тип
bool
name
canApplyAtEnchantmentTable
parameters
IEnchantmentDefinition thisEnchantment, IItemStack item
Возвращаемый тип
bool
name
canApplyTogether
parameters
IEnchantmentDefinition thisEnchantment, IEnchantmentDefinition other
Возвращаемый тип
bool
name
calcDamageByCreature
parameters
IEnchantmentDefinition thisEnchantment, int level, String creatureType
Возвращаемый тип
float
name
calcEnchantabilityMin
parameters
IEnchantmentDefinition thisEnchantment, int level
Возвращаемый тип
int
name
calcEnchantabilityMax
parameters
IEnchantmentDefinition thisEnchantment, int level
Возвращаемый тип
int
name
calcModifierDamage
parameters
IEnchantmentDefinition thisEnchantment, int level, IDamageSource damageSource
Возвращаемый тип
int
name
calcTranslatedName
parameters
IEnchantmentDefinition thisEnchantment, int level
Возвращаемый тип
string
name
parameters
Возвращаемый тип
name
onEntityDamaged
parameters
IEnchantmentDefinition thisEnchantment, IEntityLivingBase user, IEntity target, int level
Возвращаемый тип
void
name
onUserHurt
parameters
IEnchantmentDefinition thisEnchantment, IEntityLivingBase user, IEntity attacker, int level
Возвращаемый тип
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();