TConJSEvents.modifierRegistry
TConJSEvents.modifierRegistry(handler: (event: ModifierRegisterEventJS) => void): voidBasic Syntax
TConJSEvents.modifierRegistry((event) => {
event.createEmpty("id");
event.createNew("give_me_hat", (builder) => {});
});Event Properties
| Method | Parameters | Description |
|---|---|---|
createEmpty | (id: string) => void | Creates an empty modifier |
createNew | (id: string, builder: (builder: ModifierBuilderJS) => void) => void | Creates a new modifier |
Note
The type of builder shown in the files generated by ProbeJS is Consumer_<com.xiaoyue.tconstruct_js.content.ModifierBuilder>. For simplicity, it is referred to as ModifierBuilderJS here.
ModifierBuilderJS
Method List
| Method | Applicable Scope | Description |
|---|---|---|
addAttributes | Adds attribute modifiers | |
addToolStats | Adds basic item stats | |
addVolatileData | Adds extra data on tool update | |
armorTakeAttacked | Damage taken ability | |
canBlockAttacked | Damage immunity ability | |
conditionalStat | Modifies basic item stats | |
findBowAmmo | Ammo search logic | |
getBreakSpeed | Block breaking speed | |
getDurabilityRGB | Durability bar color | |
getDurabilityWidth | Durability bar width | |
getMeleeDamage | Attack damage | |
getRepairFactor | Item repair factor method | |
getToolDamage | Tool durability | |
getUseAnim | Tool use (right-click) animation | |
getUseTime | Use time | |
isDurabilityShowBar | Whether to show durability bar | |
isSingleLevel | Whether it is a single level | |
modifyDamageTaken | Final damage modification when equipped | |
modifyProtection | Modifies protection factor | |
onAfterBreak | Block break event (after) | |
onAfterMeleeHit | Attack event (after) | |
onBeforeMeleeHit | Attack event (before) | |
onDamageDealt | Entity attack event when equipped | |
onEquip | Equip event | |
onFinishUsing | Finish using event | |
onInventoryTick | Inventory tick event | |
onModifierRemove | Tinkers' modifier removal event | |
onStoppedUsing | Stop using event | |
onUnequip | Unequip event | |
onUseTool | Item right-click event | |
onUsingTick | Using tick event | |
processLoot | Loot processing | |
projectileHitBlock | Projectile hit block | |
projectileHitEntity | Projectile hit entity | |
projectileLaunch | Projectile launch | |
setElytraFlight | Elytra flight ability | |
tooltipSetting | Item tooltip setting | |
toolUseAction | Tool left-click action | |
updateArmorLooting | Modifies looting level | |
updateToolLooting | Modifies looting level | |
validateTool | Adds extra data check |
addAttributes
addAttributes(consumer: (arg0: IToolStackView, arg1: number, arg2: EquipmentSlot, arg3: Map<ResourceLocation, AttributeModifier>) => Map_<ResourceLocation, AttributeModifier>) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: EquipmentSlot- Equipment slotarg3: Map<string, AttributeModifier>- Attribute modifiers
Return Value
Map_<string, AttributeModifier>- Attribute modifiers
Example
Tips
It is recommended to use builder.getAttributeModifier()
Increases player movement speed by 10% per level
builder.addAttributes((view, lvl, slot, attributes) => {
attributes.put(
"minecraft:generic.movement_speed",
builder.getAttributeModifier(
"b444bae1-abde-41ed-8688-f75a469fdbf4",
"minecraft:generic.movement_speed",
lvl * 0.1,
"multiply_base"
)
);
return attributes;
});addToolStats
addToolStats(consumer: (arg0: IToolContext, arg1: number, arg2: ModifierStatsBuilder) => void) => thisParameters
arg0: IToolContext- Tool contextarg1: number- Tinkers' modifier levelarg2: ModifierStatsBuilder- Modifier stats builder
Example
Increases attack damage and projectile damage by 10% per level
builder.addToolStats((view, lvl, statsBuilder) => {
TinkerToolStats.ATTACK_DAMAGE.multiply(statsBuilder, 1 + lvl * 0.1);
TinkerToolStats.PROJECTILE_DAMAGE.multiply(statsBuilder, 1 + lvl * 0.1);
});addVolatileData
addVolatileData(consumer: (arg0: IToolContext, arg1: number, arg2: ModDataNBT) => void) => thisParameters
arg0: IToolContext- Tool contextarg1: number- Tinkers' modifier levelarg2: ModDataNBT- Extra data
Example
Gives the item an enchantment glow effect
builder.addVolatileData((context, lvl, data) => {
data.putBoolean("tconstruct:shiny", true);
});armorTakeAttacked
armorTakeAttacked(consumer: (arg0: IToolStackView, arg1: number, arg2: EquipmentContext, arg3: EquipmentSlot, arg4: DamageSource, arg5: number) => boolean) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: EquipmentContext- Equipment contextarg3: EquipmentSlot- Equipment slotarg4: DamageSource- Damage sourcearg5: number- Damage value
Return Value
boolean- Whether damage is taken
Example
Reflects damage back to the attacker when equipped
builder.armorTakeAttacked((view, lvl, context, slot, source, damage) => {
const returned = source.actual || source.immediate;
if (returned != null) {
returned.attack(source, damage);
}
return true;
});canBlockAttacked
canBlockAttacked(consumer: (arg0: IToolStackView, arg1: number, arg2: EquipmentContext, arg3: EquipmentSlot, arg4: DamageSource, arg5: number) => boolean) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: EquipmentContext- Equipment contextarg3: EquipmentSlot- Armor slotarg4: DamageSource- Damage sourcearg5: number- Damage value
Return Value
boolean- Whether immune to damage
Example
Immune to melee attacks (attacker and actual attacker are the same person)
builder.canBlockAttacked((view, lvl, context, slot, source, damage) => {
return !!(source.immediate && source.actual && source.immediate.is(source.actual));
});conditionalStat
conditionalStat(consumer: (arg0: IToolStackView, arg1: number, arg2: LivingEntity, arg3: FloatToolStat, arg4: number, arg5: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: LivingEntity- Entityarg3: FloatToolStat- Basic tool statarg4: number- Base valuearg5: number- Multiplier
Return Value
number- Value
Example
Increases attack damage and projectile damage by 10% per level
builder.modifyStat((view, lvl, entity, stat, base, magnification) => {
switch (stat) {
case TinkerToolStats.ATTACK_DAMAGE:
return base * (1 + lvl * magnification);
case TinkerToolStats.PROJECTILE_DAMAGE:
return base * (1 + lvl * magnification);
default:
return base;
}
});findBowAmmo
findBowAmmo(consumer: (arg0: IToolStackView, arg1: number, arg2: LivingEntity, arg3: ItemStack, arg4: Predicate<ItemStack>) => ItemStack_) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: LivingEntity- Entityarg3: ItemStack- Item stackarg4: Predicate<ItemStack>- Item stack predicate
Return Value
ItemStack_- Item stack
Example
Allows the weapon to only shoot spectral arrows
builder.findBowAmmo((view, lvl, living, stack, predicate) => {
return stack.id == "minecraft:spectral_arrow" ? stack.withCount(stack.count - 1) : Item.empty();
});getBreakSpeed
getBreakSpeed(consumer: (arg0: IToolStackView, arg1: number, arg2: PlayerEvent$BreakSpeed, arg3: Direction, arg4: boolean, arg5: number) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: PlayerEvent$BreakSpeed- Player eventarg3: Direction- Directionarg4: boolean- Whether it meets the minimum mining level required for the blockarg5: number- Current break speed
Example
Increases break speed by 10% per level when entity health
builder.getBreakSpeed((view, lvl, breakSpeedEvent, direction, canDrop, currentSpeed) => {
if (breakSpeedEvent.entity.health / breakSpeedEvent.entity.maxHealth < 0.5) {
breakSpeedEvent.newSpeed = currentSpeed * (1 + lvl * 0.1);
}
});getDurabilityRGB
getDurabilityRGB(consumer: (arg0: IToolStackView, arg1: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier level
Return Value
number- RGB decimal color value, default return value is-1
Example
Set the durability bar color to red
builder.getDurabilityRGB((view, lvl) => {
return 0xff0000;
});getDurabilityWidth
getDurabilityWidth(consumer: (arg0: IToolStackView, arg1: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier level
Return Value
number- Width, default return value is-1
Example
Set the durability bar width to 6
builder.getDurabilityWidth((view, lvl) => {
return 6;
});getMeleeDamage
getMeleeDamage(consumer: (arg0: IToolStackView, arg1: number, arg2: ToolAttackContext, arg3: number, arg4: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: ToolAttackContext- Tool attack contextarg3: number- Base damage valuearg4: number- Final damage
Return Value
number- Damage value
Example
Randomly increase damage value by 0.0 to 2.0 times
builder.getMeleeDamage((view, lvl, context, baseDamage, finalDamage) => {
return finalDamage * (context.attacker.random.nextInt(1, 20) / 10);
});getRepairFactor
getRepairFactor(consumer: (arg0: IToolStackView, arg1: number, arg2: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: number- Repaired durability
Return Value
number- Repaired durability
Example
Increase repaired durability by 15% per level
builder.getRepairFactor((view, lvl, repaired) => {
return repaired * (1 + lvl * 0.15);
});getToolDamage
getToolDamage(consumer: (arg0: IToolStackView, arg1: number, arg2: number, arg3: LivingEntity) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: number- Tool durabilityarg3: LivingEntity- Entity
Return Value
number- Tool durability
Example
builder.getToolDamage((view, lvl, damage, entity) =>
Array(damage)
.fill()
.reduce((acc, cur) => acc + entity.random.nextBoolean(), 0)
);getUseAnim
getUseAnim(consumer: (arg0: IToolStackView, arg1: number) => UseAnim_) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier level
Return Value
UseAnim_- Use animation
Example
Use the spyglass animation
builder.getUseAnim((view, lvl) => {
return "spyglass";
});getUseTime
getUseTime(consumer: (arg0: IToolStackView, arg1: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier level
Return Value
number- Use time
Example
Reduce use time by 1 / 1 + level
builder.getUseTime((view, lvl) => {
return SimpleTCon.castToolStack(view).item.getUseDuration() / (1 + lvl);
});isDurabilityShowBar
isDurabilityShowBar(consumer: (arg0: IToolStackView, arg1: number) => boolean) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Damage value
Return Value
boolean- Whether to show the durability bar
Example
Do not show the durability bar
builder.isDurabilityShowBar((view, lvl) => {
return false;
});isSingleLevel
isSingleLevel() => thisReturn Value
this
Example
This Tinkers' modifier has only one level
builder.isSingleLevel();modifyDamageTaken
modifyDamageTaken(consumer: (arg0: IToolStackView, arg1: number, arg2: EquipmentContext, arg3: EquipmentSlot, arg4: DamageSource, arg5: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: EquipmentContext- Equipment contextarg3: EquipmentSlot- Equipment slotarg4: DamageSource- Damage sourcearg5: number- Damage value
Return Value
number- Damage value
Example
Reduce damage taken by 10% per level
builder.modifyDamageTaken((view, lvl, context, slot, source, damage) => {
return damage - damage * (0.1 * lvl);
});modifyProtection
modifyProtection(consumer: (arg0: IToolStackView, arg1: number, arg2: EquipmentContext, arg3: EquipmentSlot, arg4: DamageSource, arg5: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: EquipmentContext- Equipment contextarg3: EquipmentSlot- Equipment slotarg4: DamageSource- Damage sourcearg5: number- Armor value
Return Value
number- Armor value
Example
Reduce protection factor by 10% per level
builder.modifyProtection((view, lvl, context, slot, source, protection) => {
return protection - protection * (0.1 * lvl);
});onAfterBreak
onAfterBreak(consumer: (arg0: IToolStackView, arg1: number, arg2: ToolHarvestContext) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: ToolHarvestContext- Tool harvest context
Example
Replace the block with a gold block after breaking it
builder.onAfterBreak((view, lvl, context) => {
context.world.getBlock(context.pos).set("minecraft:gold_block");
});onAfterMeleeHit
onAfterMeleeHit(consumer: (arg0: IToolStackView, arg1: number, arg2: ToolAttackContext, arg3: number) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: ToolAttackContext- Tool attack contextarg3: number- Damage value
Example
event.createNew("give_me_hat", (builder) => {
builder
.onAfterMeleeHit((view, damage, context) => {
const { headArmorItem } = context.livingTarget;
context.livingTarget.block.up.popItem(headArmorItem);
context.livingTarget.headArmorItem = "air";
context.playerAttacker.statusMessage = ["Can I have your hat?"];
});
});onBeforeMeleeHit
onBeforeMeleeHit(consumer: (arg0: IToolStackView, arg1: number, arg2: ToolAttackContext, arg3: number, arg4: number, arg5: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: ToolAttackContext- Tool attack contextarg3: number- Damage valuearg4: number- Base knockback valuearg5: number- Final knockback value
Return Value
number- Knockback value
Example
Increase knockback value by 10% per level
builder.onBeforeMeleeHit((view, lvl, context, damage, baseKnockback, finalKnockback) => {
return finalKnockback * (1 + lvl * 0.1);
});onDamageDealt
onDamageDealt(consumer: (arg0: IToolStackView, arg1: number, arg2: EquipmentContext, arg3: EquipmentSlot, arg4: LivingEntity, arg5: DamageSource, arg6: number, arg7: boolean) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: EquipmentContext- Equipment contextarg3: EquipmentSlot- Equipment slotarg4: LivingEntity- Target entityarg5: DamageSource- Damage sourcearg6: number- Damage valuearg7: boolean- Whether it is direct damage
Example
Swap the oxygen values of the attacker and the target entity when attacking
builder.onDamageDealt((view, lvl, context, slot, living, source, damage) => {
const { airSupply } = living;
const attacker = (source.actual || source.immediate);
if (attacker != null) {
living.airSupply = attacker.airSupply;
attacker.airSupply = airSupply;
}
});onEquip
onEquip(consumer: (arg0: IToolStackView, arg1: number, arg2: EquipmentChangeContext) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: EquipmentChangeContext- Equipment change context
Example
Ignite the entity for 1 second when equipped
builder.onEquip((view, lvl, context) => {
context.entity.secondsOnFire = 1 * lvl;
});onFinishUsing
onFinishUsing(consumer: (arg0: IToolStackView, arg1: number, arg2: LivingEntity) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: LivingEntity- Entity
Example
Give the player the same saturation and nutrition as a golden apple after using a crossbow
builder.onFinishUsing((view, lvl, living) => {
if (view.item.id == "tconstruct:crossbow" && living.player) {
living.foodData.eat("golden_apple", "golden_apple");
}
});onInventoryTick
onInventoryTick(consumer: (arg0: IToolStackView, arg1: number, arg2: Level, arg3: LivingEntity, arg4: number, arg5: boolean, arg6: boolean, arg7: ItemStack) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: Level- Dimensionarg3: LivingEntity- Entityarg4: number- Item slotarg5: boolean- Whether in main handarg6: boolean- Whether in available slotarg7: ItemStack- Item stack
Example
Give the entity a strength effect equal to the Tinkers' modifier level when holding the item in the main hand.
builder.onInventoryTick((view, lvl, level, entity, slot, inMainHand, inAvailableSlot, itemStack) => {
if (inMainHand) {
entity.potionEffects.add("minecraft:strength", 1, lvl);
}
});onModifierRemove
onModifierRemove(consumer: (arg0: IToolStackView, arg1: Modifier) => Component_) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: Modifier- Modifier
Return Value
Component_- Component
Example
onStoppedUsing
onStoppedUsing(consumer: (arg0: IToolStackView, arg1: number, arg2: LivingEntity, arg3: number) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: LivingEntity- Entityarg3: number- Use time
Example
Kick the player when they stop using the tool
builder.onStoppedUsing((view, lvl, living, duration) => {
if (living.player) {
living.kick();
}
});onUnequip
onUnequip(consumer: (arg0: IToolStackView, arg1: number, arg2: EquipmentChangeContext) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: EquipmentChangeContext- Equipment change context
Example
Freeze the entity for 20 seconds when unequipped
builder.onUnequip((view, lvl, context) => {
context.entity.ticksFrozen = 20 * 25;
});onUseTool
onUseTool(consumer: (arg0: IToolStackView, arg1: number, arg2: Player, arg3: InteractionHand, arg4: InteractionSource) => boolean) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: Player- Playerarg3: InteractionHand- Interaction handarg4: InteractionSource- Interaction source
Return Value
boolean- Whether to use the tool
Example
Tell the player the name of the item they are holding when using the tool
builder.onUseTool((view, lvl, player, hand, source) => {
player.tell(player.getItemInHand(hand).displayName);
return true;
});onUsingTick
onUsingTick(consumer: (arg0: IToolStackView, arg1: number, arg2: LivingEntity, arg3: number) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: LivingEntity- Entityarg3: number- Use time
Example
Give the entity resistance 5 effect when using the tool
builder.onUsingTick((view, lvl, living, duration) => {
living.potionEffects.add("resistance", 1, 4);
});processLoot
processLoot(consumer: (arg0: IToolStackView, arg1: number, arg2: List<ItemStack>, arg3: LootContext) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: List<ItemStack>- Item stack listarg3: LootContext- Loot context
Example
Clear dropped items
builder.processLoot((view, lvl, items, context) => {
items.clear();
});projectileHitBlock
projectileHitBlock(consumer: (arg0: ModifierNBT, arg1: ModDataNBT, arg2: number, arg3: Projectile, arg4: BlockHitResult, arg5: LivingEntity) => void) => thisParameters
arg0: ModifierNBT- Modifierarg1: ModDataNBT- Tinkers' data NBTarg2: number- Modifier levelarg3: Projectile- Projectilearg4: BlockHitResult- Block hit resultarg5: LivingEntity- Entity
Example
projectileHitEntity
projectileHitEntity(consumer: (arg0: ModifierNBT, arg1: ModDataNBT, arg2: number, arg3: Projectile, arg4: EntityHitResult, arg5: LivingEntity, arg6: LivingEntity) => boolean) => thisParameters
arg0: ModifierNBT- Modifierarg1: ModDataNBT- Tinkers' data NBTarg2: number- Damage valuearg3: Projectile- Projectilearg4: EntityHitResult- Entity hit resultarg5: LivingEntity- Attackerarg6: LivingEntity- Victim
Return Value
boolean- Whether to hit the entity
Example
builder.projectileHitEntity((modifier, namespaced, damage, projectile, hitResult, sourceEntity, targetEntity) => {
targetEntity.block.up.popItem(targetEntity.headArmorItem);
targetEntity.headArmorItem = "air";
return false;
});projectileLaunch
projectileLaunch(consumer: (arg0: IToolStackView, arg1: number, arg2: LivingEntity, arg3: Projectile, arg4: AbstractArrow, arg5: ModDataNBT, arg6: boolean) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: LivingEntity- Entityarg3: Projectile- Projectilearg4: AbstractArrow- Abstract arrowarg5: ModDataNBT- Tinkers' data NBTarg6: boolean- Whether it is the first trigger, multishot may trigger this event multiple times
Example
Increase arrow damage based on player's food level
builder.projectileLaunch((view, lvl, living, projectile, arrow, modData, isPrimary) => {
if (living.player) {
arrow.baseDamage += living.foodData.foodLevel;
}
});setElytraFlight
setElytraFlight(consumer: (arg0: IToolStackView, arg1: number, arg2: LivingEntity, arg3: number) => boolean) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: LivingEntity- Entityarg3: number- Flight duration
Return Value
boolean- Whether to glide
Example
Allow the player to fly without gliding
builder.setElytraFlight((view, lvl, living, flyDuration) => {
return true;
});tooltipSetting
tooltipSetting(consumer: (arg0: IToolStackView, arg1: number, arg2: Player, arg3: List<Component>, arg4: TooltipKey, arg5: TooltipFlag) => void) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: Player- Playerarg3: List<Component>- Component listarg4: TooltipKey- Tooltip key (SHIFT)arg5: TooltipFlag- Tooltip flag (advanced, creative)
Example
Display a string of random characters
builder.tooltipSetting((view, lvl, player, tooltip, key, flag) => {
tooltip.add(Text.of("000000000").obfuscated());
});toolUseAction
toolUseAction(consumer: (arg0: IToolStackView, arg1: number) => ToolAction_) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier level
Return Value
ToolAction_- Tool action
Example
validateTool
validateTool(consumer: (arg0: IToolStackView, arg1: number) => Component_) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier level
Return Value
Component_- Component
Example
updateArmorLooting
updateArmorLooting(consumer: (arg0: IToolStackView, arg1: number, arg2: LootingContext, arg3: EquipmentContext, arg4: EquipmentSlot, arg5: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: LootingContext- Looting contextarg3: EquipmentContext- Equipment contextarg4: EquipmentSlot- Equipment slotarg5: number- Looting level
Return Value
number- Looting level
Example
Increase looting level per level
builder.updateArmorLooting((view, lvl, looting, equipment, slot, originalLvl) => {
return originalLvl * lvl;
});updateToolLooting
updateToolLooting(consumer: (arg0: IToolStackView, arg1: number, arg2: LootingContext, arg3: number) => number) => thisParameters
arg0: IToolStackView- Tool stack viewarg1: number- Tinkers' modifier levelarg2: LootingContext- Looting contextarg3: number- Looting level
Return Value
number- Looting level
Example
Increase looting level per level
builder.updateToolLooting((view, lvl, looting, originalLvl) => {
return originalLvl * lvl;
});Special Methods
| Method Name | Description |
|---|---|
getAttributeModifier | Get attribute modifier |
toolActionOf | Tool action |
getAttributeModifier
getAttributeModifier(arg0: string, arg1: string, arg2: number, arg3: string): AttributeModifier;Parameters
arg0: string- Attribute modifier UUIDarg1: string- Attribute modifier IDarg2: number- Valuearg3: string- Attribute modifier type, refer to Operations§MinecraftWiki"addition": Increment operation"multiply_base": Multiplier operation"multiply_total": Final multiplier operation
toolActionOf
toolActionOf(arg0: string): ToolAction;Parameters
arg0: string- Tool action ID