下面列出了net.minecraft.util.DamageSource#isUnblockable ( ) 实例代码,或者点击链接到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;
}
protected float applyArmorCalculations(EntityLivingBase e, DamageSource source, float damage)
{
if (!source.isUnblockable())
{
damage = CombatRules.getDamageAfterAbsorb(damage, (float)e.getTotalArmorValue(), (float)e.getEntityAttribute(SharedMonsterAttributes.ARMOR_TOUGHNESS).getAttributeValue());
}
return damage;
}
@Override
public ArmorProperties getProperties(EntityLivingBase player,
ItemStack armor, DamageSource source, double damage, int slot) {
if(!source.isUnblockable())
return new ArmorProperties(0, 5, 1);
return new ArmorProperties(0, 0, 0);
}
@Override
public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) {
T pack = this.getPack(armor);
if (pack != null && pack.isArmored && !source.isUnblockable()) {
if (pack.isFluxBased && source.damageType.equals("flux")) {
return new ArmorProperties(0, 0.5D, Integer.MAX_VALUE);
}
int energyPerDamage = this.getFuelPerDamage(armor, pack);
int maxAbsorbed = energyPerDamage > 0 ? 25 * (this.getFuelStored(armor) / energyPerDamage) : 0;
return new ArmorProperties(0, 0.85D * (pack.armorReduction / 20.0D), maxAbsorbed);
}
return new ArmorProperties(0, 1, 0);
}
@Override
public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) {
if (source.isUnblockable()) {
return new net.minecraftforge.common.ISpecialArmor.ArmorProperties(0, 0.0D, 0);
} else {
double absorptionRatio = getBaseAbsorptionRatio() * getDamageAbsorptionRatio();
int energyPerDamage = getEnergyPerDamage();
double damageLimit = energyPerDamage <= 0 ? 0 : (25 * ElectricItem.manager.getCharge(armor)) / energyPerDamage;
return new net.minecraftforge.common.ISpecialArmor.ArmorProperties(0, absorptionRatio, (int) damageLimit);
}
}
@Override
public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) {
if (source.isUnblockable()) {
return new net.minecraftforge.common.ISpecialArmor.ArmorProperties(0, 0.0D, 3);
} else {
double absorptionRatio = getBaseAbsorptionRatio() * getDamageAbsorptionRatio();
int energyPerDamage = getEnergyPerDamage();
double damageLimit = energyPerDamage <= 0 ? 0 : (25 * ElectricItem.manager.getCharge(armor)) / energyPerDamage;
return new net.minecraftforge.common.ISpecialArmor.ArmorProperties(3, absorptionRatio, (int) damageLimit);
}
}
@Override
public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) {
if (source.isUnblockable()) {
return new net.minecraftforge.common.ISpecialArmor.ArmorProperties(0, 0.0D, 3);
} else {
double absorptionRatio = getBaseAbsorptionRatio() * getDamageAbsorptionRatio();
int energyPerDamage = getEnergyPerDamage();
double damageLimit = energyPerDamage <= 0 ? 0 : (25 * ElectricItem.manager.getCharge(armor)) / energyPerDamage;
return new net.minecraftforge.common.ISpecialArmor.ArmorProperties(3, absorptionRatio, (int) damageLimit);
}
}
@Override
protected float applyArmorCalculations(DamageSource p_70655_1_, float p_70655_2_) {
if (!p_70655_1_.isUnblockable()) {
return Math.min(Math.max(p_70655_2_ - 3 - this.getSlimeSize(), this.getSlimeSize()) / 2, p_70655_2_);
}
return p_70655_2_;
}