mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-12-30 20:37:52 +01:00
Simplify checkDamage.
This commit is contained in:
parent
d5c76ed416
commit
14b0700259
@ -55,7 +55,7 @@ public class NoFall extends Check {
|
|||||||
* @param data
|
* @param data
|
||||||
* @param y
|
* @param y
|
||||||
*/
|
*/
|
||||||
private static final void handleOnGround(final EntityPlayer mcPlayer, final MovingData data, final double y, final MovingConfig cc) {
|
private static final void handleOnGround(final EntityPlayer mcPlayer, final MovingData data, final double y, final MovingConfig cc, final boolean reallyOnGround) {
|
||||||
// final int pD = getDamage(mcPlayer.fallDistance);
|
// final int pD = getDamage(mcPlayer.fallDistance);
|
||||||
// final int nfD = getDamage(data.noFallFallDistance);
|
// final int nfD = getDamage(data.noFallFallDistance);
|
||||||
// final int yD = getDamage((float) (data.noFallMaxY - y));
|
// final int yD = getDamage((float) (data.noFallMaxY - y));
|
||||||
@ -64,7 +64,7 @@ public class NoFall extends Check {
|
|||||||
if (maxD > 0){
|
if (maxD > 0){
|
||||||
// Damage to be dealt.
|
// Damage to be dealt.
|
||||||
// TODO: more effects like sounds, maybe use custom event with violation added.
|
// TODO: more effects like sounds, maybe use custom event with violation added.
|
||||||
if (cc.debug) System.out.println(mcPlayer.name + " NoFall deal damage: " + maxD);
|
if (cc.debug) System.out.println(mcPlayer.name + " NoFall deal damage" + (reallyOnGround ? "" : "violation") + ": " + maxD);
|
||||||
dealFallDamage(mcPlayer, maxD);
|
dealFallDamage(mcPlayer, maxD);
|
||||||
}
|
}
|
||||||
else data.clearNoFallData();
|
else data.clearNoFallData();
|
||||||
@ -130,7 +130,7 @@ public class NoFall extends Check {
|
|||||||
}
|
}
|
||||||
else if (fromOnGround || data.noFallAssumeGround){
|
else if (fromOnGround || data.noFallAssumeGround){
|
||||||
// Check if to deal damage (fall back damage check).
|
// Check if to deal damage (fall back damage check).
|
||||||
if (cc.noFallDealDamage) handleOnGround(mcPlayer, data, minY, cc);
|
if (cc.noFallDealDamage) handleOnGround(mcPlayer, data, minY, cc, true);
|
||||||
else{
|
else{
|
||||||
mcPlayer.fallDistance = Math.max(mcPlayer.fallDistance, Math.max(data.noFallFallDistance, (float) (data.noFallMaxY - minY)));
|
mcPlayer.fallDistance = Math.max(mcPlayer.fallDistance, Math.max(data.noFallFallDistance, (float) (data.noFallMaxY - minY)));
|
||||||
data.clearNoFallData();
|
data.clearNoFallData();
|
||||||
@ -146,7 +146,7 @@ public class NoFall extends Check {
|
|||||||
// In this case the player has traveled further: add the difference.
|
// In this case the player has traveled further: add the difference.
|
||||||
data.noFallFallDistance -= yDiff;
|
data.noFallFallDistance -= yDiff;
|
||||||
}
|
}
|
||||||
if (cc.noFallDealDamage) handleOnGround(mcPlayer, data, minY, cc);
|
if (cc.noFallDealDamage) handleOnGround(mcPlayer, data, minY, cc, true);
|
||||||
else{
|
else{
|
||||||
mcPlayer.fallDistance = Math.max(mcPlayer.fallDistance, Math.max(data.noFallFallDistance, (float) (data.noFallMaxY - minY)));
|
mcPlayer.fallDistance = Math.max(mcPlayer.fallDistance, Math.max(data.noFallFallDistance, (float) (data.noFallMaxY - minY)));
|
||||||
data.clearNoFallData();
|
data.clearNoFallData();
|
||||||
@ -203,29 +203,9 @@ public class NoFall extends Check {
|
|||||||
*/
|
*/
|
||||||
public void checkDamage(final Player player, final MovingData data, final double y) {
|
public void checkDamage(final Player player, final MovingData data, final double y) {
|
||||||
final MovingConfig cc = MovingConfig.getConfig(player);
|
final MovingConfig cc = MovingConfig.getConfig(player);
|
||||||
// Get the max difference for fall distance.
|
|
||||||
final float fallDistance = player.getFallDistance();
|
|
||||||
final float yDiff = (float) (data.noFallMaxY - y);
|
|
||||||
final double maxDiff = Math.max(yDiff, Math.max(data.noFallFallDistance, fallDistance));
|
|
||||||
// Calculate damage that would be dealt (plus return if none).
|
|
||||||
final int damage = NoFall.getDamage((float) maxDiff);
|
|
||||||
if (damage <= 0) return;
|
|
||||||
// // Heuristic check for if damage would count at all.
|
|
||||||
// final long fDamage = BlockProperties.F_GROUND | BlockProperties.F_SOLID | BlockProperties.F_STAIRS | BlockProperties.F_LAVA;
|
|
||||||
// final long fNoDamage = BlockProperties.F_LIQUID; // Checked second.
|
|
||||||
// final IBlockAccess access = ((CraftWorld) player.getWorld()).getHandle();
|
|
||||||
// final Location loc = player.getLocation();
|
|
||||||
// final int x = loc.getBlockX();
|
|
||||||
// final int y = loc.getBlockY();
|
|
||||||
// final int z = loc.getBlockZ();
|
|
||||||
// while (y > 0){
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// // TODO
|
|
||||||
|
|
||||||
// Deal damage.
|
// Deal damage.
|
||||||
if (cc.debug) System.out.println(player.getName() + " NoFall deal damage (violation): " + damage);
|
handleOnGround(((CraftPlayer) player).getHandle(), data, y, cc, false);
|
||||||
dealFallDamage(((CraftPlayer) player).getHandle(), damage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user