Damage Sources
Package: thaumcraft.api.damagesource
Author: 源码中无 @author 标注(无法从本仓核实)
⚠️ 已订正:原条目此处写「Author: Azanor」——本仓源码里没有这条署名。 证据:
entities/ITaintedMob.java与entities/IEldritchMob.java全文各只有 5 行, 是没有任何 javadoc 的空标记接口,全仓 grepauthor在这两个文件里 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 identifierpar2Entity: 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