|
968 | 968 |
|
969 | 969 | if (p_21194_ <= 0.0F) { |
970 | 970 | return 0.0F; |
971 | | -@@ -1581,8 +_,213 @@ |
| 971 | +@@ -1581,8 +_,217 @@ |
972 | 972 | } |
973 | 973 | } |
974 | 974 |
|
|
977 | 977 | + if (!this.isInvulnerableTo(damagesource)) { |
978 | 978 | + // Check if entity is a "human" aka player |
979 | 979 | + final boolean human = this instanceof ServerPlayer; |
980 | | -+ // Cauldron start - apply forge damage hook |
981 | 980 | + f = net.minecraftforge.common.ForgeHooks.onLivingHurt(this, damagesource, f); |
982 | | -+ // If the damage is negative return true |
983 | | -+ if (f < 0) return true; |
984 | | -+ // Thermos detect null damage |
985 | | -+ final boolean nulldmg = f == 0; |
986 | | -+ // Cauldron end |
| 981 | ++ if (f <= 0) return true; |
987 | 982 | + float originalDamage = f; |
988 | 983 | + com.google.common.base.Function<Double, Double> hardHat = new com.google.common.base.Function<Double, Double>() { |
989 | 984 | + @Override |
|
998 | 993 | + float hardHatModifier = hardHat.apply((double) f).floatValue(); |
999 | 994 | + f += hardHatModifier; |
1000 | 995 | + |
| 996 | ++ java.util.concurrent.atomic.AtomicBoolean shieldTakesDamage = new java.util.concurrent.atomic.AtomicBoolean(true); //Ketting |
1001 | 997 | + com.google.common.base.Function<Double, Double> blocking = new com.google.common.base.Function<Double, Double>() { |
1002 | 998 | + @Override |
1003 | 999 | + public Double apply(Double f) { |
1004 | | -+ return -((LivingEntity.this.isDamageSourceBlocked(damagesource)) ? f : 0.0); |
| 1000 | ++ //Ketting start - fire forge shield block event before bukkit |
| 1001 | ++ if (LivingEntity.this.isDamageSourceBlocked(damagesource)) { |
| 1002 | ++ var ev = net.minecraftforge.common.ForgeHooks.onShieldBlock(LivingEntity.this, damagesource, f.floatValue()); |
| 1003 | ++ if (ev.isCanceled()) return 0d; |
| 1004 | ++ shieldTakesDamage.set(ev.shieldTakesDamage()); |
| 1005 | ++ return -((double) ev.getBlockedDamage()); |
| 1006 | ++ } |
| 1007 | ++ return 0d; |
| 1008 | ++ //Ketting end |
1005 | 1009 | + } |
1006 | 1010 | + }; |
1007 | 1011 | + float blockingModifier = blocking.apply((double) f).floatValue(); |
|
1066 | 1070 | + } |
1067 | 1071 | + |
1068 | 1072 | + f = (float) event.getFinalDamage(); |
1069 | | -+ if (nulldmg) return true; // Preclude any stupidity with null head items |
1070 | 1073 | + |
1071 | 1074 | + // Resistance |
1072 | 1075 | + if (event.getDamage(org.bukkit.event.entity.EntityDamageEvent.DamageModifier.RESISTANCE) < 0) { |
|
1092 | 1095 | + } |
1093 | 1096 | + |
1094 | 1097 | + // Apply blocking code // PAIL: steal from above |
1095 | | -+ if (event.getDamage(org.bukkit.event.entity.EntityDamageEvent.DamageModifier.BLOCKING) < 0) { |
1096 | | -+ var ev = net.minecraftforge.common.ForgeHooks.onShieldBlock(this, damagesource, (float) event.getDamage(org.bukkit.event.entity.EntityDamageEvent.DamageModifier.BLOCKING)); //Ketting |
1097 | | -+ |
1098 | | -+ if (!ev.isCanceled()) { |
| 1098 | ++ //Ketting start - take forge event in account |
| 1099 | ++ double blockingDmg = event.getDamage(org.bukkit.event.entity.EntityDamageEvent.DamageModifier.BLOCKING); |
| 1100 | ++ if (blockingDmg < 0) { |
1099 | 1101 | + this.level().broadcastEntityEvent(this, (byte) 29); // SPIGOT-4635 - shield damage sound |
1100 | | -+ if (ev.shieldTakesDamage()) this.hurtCurrentlyUsedShield(-ev.getBlockedDamage()); |
| 1102 | ++ if (shieldTakesDamage.get()) this.hurtCurrentlyUsedShield(-(float) blockingDmg); |
| 1103 | ++ //Ketting end |
1101 | 1104 | + Entity entity = damagesource.getDirectEntity(); |
1102 | 1105 | + |
1103 | 1106 | + if (entity instanceof LivingEntity) { |
1104 | 1107 | + this.blockUsingShield((LivingEntity) entity); |
1105 | 1108 | + } |
1106 | | -+ } |
1107 | 1109 | + } |
1108 | 1110 | + |
1109 | 1111 | + absorptionModifier = (float) -event.getDamage(org.bukkit.event.entity.EntityDamageEvent.DamageModifier.ABSORPTION); |
|
1123 | 1125 | + } |
1124 | 1126 | + } |
1125 | 1127 | + |
| 1128 | ++ f = net.minecraftforge.common.ForgeHooks.onLivingDamage(this, damagesource, f); |
| 1129 | ++ |
1126 | 1130 | + if (f > 0 || !human) { |
1127 | 1131 | + if (human) { |
1128 | 1132 | + // PAIL: Be sure to drag all this code from the EntityHuman subclass each update. |
|
0 commit comments