mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-11-07 03:02:11 +01:00
Make "fight.direction" use bounding boxes to calculate entity height
This commit is contained in:
parent
5c9d204ec9
commit
d315e08296
@ -4,7 +4,6 @@ import java.util.Locale;
|
|||||||
import net.minecraft.server.Entity;
|
import net.minecraft.server.Entity;
|
||||||
import net.minecraft.server.EntityComplex;
|
import net.minecraft.server.EntityComplex;
|
||||||
import net.minecraft.server.EntityComplexPart;
|
import net.minecraft.server.EntityComplexPart;
|
||||||
import net.minecraft.server.EntityGiantZombie;
|
|
||||||
import cc.co.evenprime.bukkit.nocheat.NoCheat;
|
import cc.co.evenprime.bukkit.nocheat.NoCheat;
|
||||||
import cc.co.evenprime.bukkit.nocheat.NoCheatPlayer;
|
import cc.co.evenprime.bukkit.nocheat.NoCheatPlayer;
|
||||||
import cc.co.evenprime.bukkit.nocheat.actions.ParameterName;
|
import cc.co.evenprime.bukkit.nocheat.actions.ParameterName;
|
||||||
@ -27,19 +26,17 @@ public class DirectionCheck extends FightCheck {
|
|||||||
// Get the width of the damagee
|
// Get the width of the damagee
|
||||||
Entity entity = data.damagee;
|
Entity entity = data.damagee;
|
||||||
|
|
||||||
// Safeguard, if entity is Giant or Ender Dragon, this check will fail
|
// Safeguard, if entity is complex, this check will fail
|
||||||
// due to giant and hard to define hitboxes
|
// due to giant and hard to define hitboxes
|
||||||
if(entity instanceof EntityComplex || entity instanceof EntityComplexPart || entity instanceof EntityGiantZombie) {
|
if(entity instanceof EntityComplex || entity instanceof EntityComplexPart) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final float width = entity.length > entity.width ? entity.length : entity.width;
|
final float width = entity.length > entity.width ? entity.length : entity.width;
|
||||||
|
// entity.height is broken and will always be 0, therefore calculate height instead
|
||||||
|
final double height = entity.boundingBox.e - entity.boundingBox.b;
|
||||||
|
|
||||||
// height = 2.0D as minecraft doesn't store the height of entities,
|
final double off = CheckUtil.directionCheck(player, entity.locX, entity.locY + (height / 2D), entity.locZ, width, height, cc.directionPrecision);
|
||||||
// and that should be enough. Because entityLocations are always set
|
|
||||||
// to center bottom of the hitbox, increase "y" location by 1/2
|
|
||||||
// height to get the "center" of the hitbox
|
|
||||||
final double off = CheckUtil.directionCheck(player, entity.locX, entity.locY + 1.0D, entity.locZ, width, 2.0D, cc.directionPrecision);
|
|
||||||
|
|
||||||
if(off < 0.1D) {
|
if(off < 0.1D) {
|
||||||
// Player did probably nothing wrong
|
// Player did probably nothing wrong
|
||||||
|
Loading…
Reference in New Issue
Block a user