Change signature of MCAccess.isIllegal to AlmostBoolean.

This commit is contained in:
asofold 2012-12-17 17:02:04 +01:00
parent b397c491fc
commit e2a1fc6a2d
4 changed files with 16 additions and 15 deletions

View File

@ -10,7 +10,8 @@ import fr.neatmonster.nocheatplus.utilities.BlockCache;
/** /**
* Compatibility interface to get properties for Bukkit instances that need access of CraftBukkit or Minecraft classes.<br> * Compatibility interface to get properties for Bukkit instances that need access of CraftBukkit or Minecraft classes.<br>
* NOTE: Expect API changes in the near future! * NOTE: All methods returning AlmostBoolean must never return null, unless stated otherwise.<br>
* NOTE: Expect API changes in the near future!<br>
* <hr> * <hr>
* TODO: Make minimal (do we need WorldServer yet)? * TODO: Make minimal (do we need WorldServer yet)?
* @author mc_dev * @author mc_dev
@ -71,7 +72,7 @@ public interface MCAccess {
* @param player * @param player
* @return null If undecided, true / false if decided. * @return null If undecided, true / false if decided.
*/ */
public Boolean isIllegalBounds(Player player); public AlmostBoolean isIllegalBounds(Player player);
/** /**
* *

View File

@ -92,17 +92,17 @@ public class MCAccessCB2511 implements MCAccess {
} }
@Override @Override
public Boolean isIllegalBounds(final Player player) { public AlmostBoolean isIllegalBounds(final Player player) {
final EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle(); final EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
if (entityPlayer.dead) return false; if (entityPlayer.dead) return AlmostBoolean.NO;
final AxisAlignedBB box = entityPlayer.boundingBox; final AxisAlignedBB box = entityPlayer.boundingBox;
if (!entityPlayer.isSleeping()){ if (!entityPlayer.isSleeping()){
// This can not really test stance but height of bounding box. // This can not really test stance but height of bounding box.
final double dY = Math.abs(box.e - box.b); final double dY = Math.abs(box.e - box.b);
if (dY > 1.8) return true; // dY > 1.65D || if (dY > 1.8) return AlmostBoolean.YES; // dY > 1.65D ||
if (dY < 0.1D) return true; if (dY < 0.1D) return AlmostBoolean.YES;
} }
return null; return AlmostBoolean.MAYBE;
} }
@Override @Override

View File

@ -91,17 +91,17 @@ public class MCAccessCB2512 implements MCAccess{
} }
@Override @Override
public Boolean isIllegalBounds(final Player player) { public AlmostBoolean isIllegalBounds(final Player player) {
final EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle(); final EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
if (entityPlayer.dead) return false; if (entityPlayer.dead) return AlmostBoolean.NO;
final AxisAlignedBB box = entityPlayer.boundingBox; final AxisAlignedBB box = entityPlayer.boundingBox;
if (!entityPlayer.isSleeping()){ if (!entityPlayer.isSleeping()){
// This can not really test stance but height of bounding box. // This can not really test stance but height of bounding box.
final double dY = Math.abs(box.e - box.b); final double dY = Math.abs(box.e - box.b);
if (dY > 1.8) return true; // dY > 1.65D || if (dY > 1.8) return AlmostBoolean.YES; // dY > 1.65D ||
if (dY < 0.1D) return true; if (dY < 0.1D) return AlmostBoolean.YES;
} }
return null; return AlmostBoolean.MAYBE;
} }
@Override @Override

View File

@ -7,7 +7,7 @@ import org.bukkit.entity.Player;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import fr.neatmonster.nocheatplus.NoCheatPlus; import fr.neatmonster.nocheatplus.NoCheatPlus;
import fr.neatmonster.nocheatplus.utilities.BlockCache; import fr.neatmonster.nocheatplus.compat.AlmostBoolean;
/* /*
* MM"""""""`YM dP * MM"""""""`YM dP
@ -569,8 +569,8 @@ public class PlayerLocation {
* @return * @return
*/ */
public boolean isIllegal() { public boolean isIllegal() {
final Boolean spec = NoCheatPlus.getMCAccess().isIllegalBounds(player); final AlmostBoolean spec = NoCheatPlus.getMCAccess().isIllegalBounds(player);
if (spec != null) return spec.booleanValue(); if (spec != AlmostBoolean.MAYBE) return spec.decide();
else if (Math.abs(minX) > 3.2E7D || Math.abs(maxX) > 3.2E7D || Math.abs(minY) > 3.2E7D || Math.abs(maxY) > 3.2E7D || Math.abs(minZ) > 3.2E7D || Math.abs(maxZ) > 3.2E7D) return true; else if (Math.abs(minX) > 3.2E7D || Math.abs(maxX) > 3.2E7D || Math.abs(minY) > 3.2E7D || Math.abs(maxY) > 3.2E7D || Math.abs(minZ) > 3.2E7D || Math.abs(maxZ) > 3.2E7D) return true;
// if (Math.abs(box.a) > 3.2E7D || Math.abs(box.b) > 3.2E7D || Math.abs(box.c) > 3.2E7D || Math.abs(box.d) > 3.2E7D || Math.abs(box.e) > 3.2E7D || Math.abs(box.f) > 3.2E7D) return true; // if (Math.abs(box.a) > 3.2E7D || Math.abs(box.b) > 3.2E7D || Math.abs(box.c) > 3.2E7D || Math.abs(box.d) > 3.2E7D || Math.abs(box.e) > 3.2E7D || Math.abs(box.f) > 3.2E7D) return true;
else return false; else return false;