下面列出了net.minecraft.util.DamageSource#isMagicDamage ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static DamageSource copyOf(final DamageSource original) {
CraftDamageSource newSource = new CraftDamageSource(original.damageType);
// Check ignoresArmor
if (original.isUnblockable()) {
newSource.setDamageBypassesArmor();
}
// Check magic
if (original.isMagicDamage()) {
newSource.setMagicDamage();
}
// Check fire
if (original.isExplosion()) {
newSource.setExplosion();
}
return newSource;
}
@Override
public boolean attackEntityFrom(@Nonnull DamageSource source, float amount) {
if (source.isMagicDamage()) {
super.attackEntityFrom(source, amount);
ClientRunnable.run(new ClientRunnable() {
@Override
@SideOnly(Side.CLIENT)
public void runIfClient() {
LibParticles.SPIRIT_WIGHT_HURT(world, getPositionVector());
}
});
return true;
} else return false;
}
@Override
public boolean attackEntityFrom(@Nonnull DamageSource source, float amount) {
if (source.isMagicDamage() || source == DamageSource.OUT_OF_WORLD) {
super.attackEntityFrom(source, amount);
ClientRunnable.run(new ClientRunnable() {
@Override
@SideOnly(Side.CLIENT)
public void runIfClient() {
LibParticles.SPIRIT_WIGHT_HURT(world, getPositionVector());
}
});
return true;
} else return false;
}
/**
* Reduces damage, depending on potions
*/
protected float applyPotionDamageCalculations(DamageSource source, float damage) {
damage = super.applyPotionDamageCalculations(source, damage);
if (source.getTrueSource() == this) {
damage = 0.0F;
}
if (source.isMagicDamage()) {
damage = (float) ((double) damage * 0.15D);
}
return damage;
}
@Override
protected float applyPotionDamageCalculations(DamageSource damageSource, float damage) {
//same as a vanilla witch
damage = super.applyPotionDamageCalculations(damageSource, damage);
if(damageSource.getTrueSource() == this) {
damage = 0.0F;
}
if(damageSource.isMagicDamage()) {
damage = (float) (damage * 0.15D);
}
return damage;
}