跳到正文
烈焰甘蔗Wiki

Damage Sources

Package: thaumcraft.api.damagesource

Author: 源码中无 @author 标注(无法从本仓核实)

⚠️ 已订正:原条目此处写「Author: Azanor」——本仓源码里没有这条署名。 证据:entities/ITaintedMob.java 与 entities/IEldritchMob.java 全文各只有 5 行, 是没有任何 javadoc 的空标记接口,全仓 grep author 在这两个文件里 0 命中。 (对比:IRunicArmor.java:7、IVisDiscountGear.java:11、IWarpingGear.java:8 等接口确实带 @author Azanor,所以「作者是 Azanor」这一事实可能成立, 但这两个接口本身没有署名。)

Thaumcraft provides custom damage sources for various in-game hazards and attacks.

DamageSourceThaumcraft

File: DamageSourceThaumcraft.java

Custom damage source class for Thaumcraft-specific damage types.

Static Instances

Damage Source String ID Properties
taint "taint" Bypasses armor, magic damage
tentacle "tentacle" Standard damage
swarm "swarm" Standard damage
dissolve "dissolve" Bypasses armor

Static Factory Methods

Method Description
causeSwarmDamage(EntityLivingBase) Creates an EntityDamageSource with ID “swarm”
causeTentacleDamage(EntityLivingBase) Creates an EntityDamageSource with ID “tentacle”

Example Usage

// Direct damage source
entityLivingBase.attackEntityFrom(DamageSourceThaumcraft.taint, damage);

// From an entity (creates EntityDamageSource)
entityLivingBase.attackEntityFrom(DamageSourceThaumcraft.causeSwarmDamage(player), damage);

DamageSourceIndirectThaumcraftEntity

File: DamageSourceIndirectThaumcraftEntity.java

Extends: EntityDamageSourceIndirect

For projectile or indirect entity damage from Thaumcraft sources (e.g., arrows fired by Taint mobs).

Constructor

public DamageSourceIndirectThaumcraftEntity(String par1Str, Entity par2Entity, Entity par3Entity)
  • par1Str: Damage source string identifier
  • par2Entity: The entity that caused the damage (e.g., the shooter)
  • par3Entity: The entity that was used as a projectile

Fluent Setters

Method Description
setFireDamage() Marks damage as fire-based
setDamageBypassesArmor() Makes damage ignore armor

Example Usage

DamageSourceIndirectThaumcraftEntity source = 
    new DamageSourceIndirectThaumcraftEntity("taintarrow", shooter, arrow);
source.setFireDamage();
entityLivingBase.attackEntityFrom(source, damage);

Damage Source Properties

⚠️ 已订正 + mod 源码缺陷 DamageSourceThaumcraft 里确实存在三个字段(证据:damagesource/DamageSourceThaumcraft.java:25/28/34):

private boolean fireDamage;      // :25
/** This kind of damage is based on a projectile or not. */
private boolean projectile;      // :28
private boolean magicDamage = false;  // :34

但它们全是 private 且从未被赋值、也从未被读取——类里没有 setter,工厂方法 getDamageSourceTaint / getDamageSourceTentacle / getDamageSourceSwarm / getDamageSourceDissolve 也不碰这三个字段。即:这是上游遗留的死字段,在 1.7.10 这版 API 里完全无效。 原条目把它们当成「可配置的属性」描述,是错的。

同理,原条目对 Magic Damage「Affected by magic resistance/enchantments」、 Fire Damage「Can ignite the target」、Projectile「Damage from ranged sources」 的行为描述 均无法核实——本仓只提供 4 个绕过护甲的具名伤害源(bypassArmor=true), 其余行为在主 mod 侧。

Tags

#api #entity #damage #combat

浏览全部模组