mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-12-26 18:37:59 +01:00
Store MCAccess in PlayerLocation and MoveInfo.
This commit is contained in:
parent
817ac36f8b
commit
432c7607aa
@ -46,7 +46,7 @@ public class Critical extends Check {
|
||||
|
||||
// We'll need the PlayerLocation to know some important stuff.
|
||||
final Location loc = player.getLocation();
|
||||
final PlayerLocation location = new PlayerLocation(mcAccess.getBlockCache(loc.getWorld()));
|
||||
final PlayerLocation location = new PlayerLocation(mcAccess, mcAccess.getBlockCache(loc.getWorld()));
|
||||
location.set(loc, player);
|
||||
if (location.isIllegal()) {
|
||||
location.cleanup();
|
||||
|
@ -39,6 +39,7 @@ import fr.neatmonster.nocheatplus.checks.CheckType;
|
||||
import fr.neatmonster.nocheatplus.checks.combined.BedLeave;
|
||||
import fr.neatmonster.nocheatplus.checks.combined.Combined;
|
||||
import fr.neatmonster.nocheatplus.checks.combined.CombinedData;
|
||||
import fr.neatmonster.nocheatplus.compat.MCAccess;
|
||||
import fr.neatmonster.nocheatplus.hooks.NCPExemptionManager;
|
||||
import fr.neatmonster.nocheatplus.permissions.Permissions;
|
||||
import fr.neatmonster.nocheatplus.utilities.BlockCache;
|
||||
@ -73,9 +74,16 @@ import fr.neatmonster.nocheatplus.utilities.PlayerLocation;
|
||||
public class MovingListener extends CheckListener{
|
||||
|
||||
private static final class MoveInfo{
|
||||
public final BlockCache cache = NoCheatPlus.getMCAccess().getBlockCache(null);
|
||||
public final PlayerLocation from = new PlayerLocation(null);
|
||||
public final PlayerLocation to = new PlayerLocation(null);
|
||||
public final BlockCache cache;
|
||||
public final PlayerLocation from;
|
||||
public final PlayerLocation to;
|
||||
|
||||
public MoveInfo(final MCAccess mcAccess){
|
||||
cache = mcAccess.getBlockCache(null);
|
||||
from = new PlayerLocation(mcAccess, null);
|
||||
to = new PlayerLocation(mcAccess, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Demands at least setting from.
|
||||
* @param player
|
||||
@ -355,7 +363,7 @@ public class MovingListener extends CheckListener{
|
||||
// Use existent locations if possible.
|
||||
final MoveInfo moveInfo;
|
||||
final PlayerLocation pFrom, pTo;
|
||||
if (parkedInfo.isEmpty()) moveInfo = new MoveInfo();
|
||||
if (parkedInfo.isEmpty()) moveInfo = new MoveInfo(mcAccess);
|
||||
else moveInfo = parkedInfo.remove(parkedInfo.size() - 1);
|
||||
pFrom = moveInfo.from;
|
||||
pTo = moveInfo.to;
|
||||
@ -479,7 +487,7 @@ public class MovingListener extends CheckListener{
|
||||
{
|
||||
// This might get extended to a check-like thing.
|
||||
boolean restored = false;
|
||||
final PlayerLocation pLoc = new PlayerLocation(null);
|
||||
final PlayerLocation pLoc = new PlayerLocation(NoCheatPlus.getMCAccess(), null);
|
||||
// (Mind that we don't set the block cache here).
|
||||
if (!restored && data.setBack != null) {
|
||||
pLoc.set(data.setBack, player);
|
||||
@ -795,7 +803,7 @@ public class MovingListener extends CheckListener{
|
||||
boolean allowReset = true;
|
||||
if (!data.noFallSkipAirCheck){
|
||||
final MoveInfo moveInfo;
|
||||
if (parkedInfo.isEmpty()) moveInfo = new MoveInfo();
|
||||
if (parkedInfo.isEmpty()) moveInfo = new MoveInfo(mcAccess);
|
||||
else moveInfo = parkedInfo.remove(parkedInfo.size() - 1);
|
||||
moveInfo.set(player, loc, null, cc.noFallyOnGround);
|
||||
// NOTE: No isIllegal check here.
|
||||
|
@ -245,7 +245,7 @@ public class BlockProperties {
|
||||
};
|
||||
|
||||
private static BlockCache blockCache = NoCheatPlus.getMCAccess().getBlockCache(null);
|
||||
private static final PlayerLocation pLoc = new PlayerLocation(null);
|
||||
private static final PlayerLocation pLoc = new PlayerLocation(NoCheatPlus.getMCAccess(), null);
|
||||
|
||||
protected static final long[] blockFlags = new long[maxBlocks];
|
||||
|
||||
|
@ -6,8 +6,8 @@ import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import fr.neatmonster.nocheatplus.NoCheatPlus;
|
||||
import fr.neatmonster.nocheatplus.compat.AlmostBoolean;
|
||||
import fr.neatmonster.nocheatplus.compat.MCAccess;
|
||||
|
||||
/*
|
||||
* MM"""""""`YM dP
|
||||
@ -33,6 +33,9 @@ import fr.neatmonster.nocheatplus.compat.AlmostBoolean;
|
||||
*/
|
||||
public class PlayerLocation {
|
||||
|
||||
// Final members //
|
||||
private final MCAccess mcAccess;
|
||||
|
||||
// Simple members //
|
||||
|
||||
/** Y parameter for growing the bounding box with the isOnGround check. */
|
||||
@ -101,7 +104,8 @@ public class PlayerLocation {
|
||||
private BlockCache blockCache = null;
|
||||
|
||||
|
||||
public PlayerLocation(final BlockCache blockCache){
|
||||
public PlayerLocation(final MCAccess mcAccess, final BlockCache blockCache){
|
||||
this.mcAccess = mcAccess;
|
||||
this.blockCache = blockCache;
|
||||
}
|
||||
|
||||
@ -522,7 +526,7 @@ public class PlayerLocation {
|
||||
// maxY = y + entityPlayer.boundingBox.e + dY;
|
||||
// maxZ = z + entityPlayer.boundingBox.f + dZ;
|
||||
// // TODO: inset, outset ?
|
||||
this.width = NoCheatPlus.getMCAccess().getWidthOrLength(player);
|
||||
this.width = mcAccess.getWidthOrLength(player);
|
||||
final double dxz = this.width / 2;
|
||||
|
||||
// final double dX = (entityPlayer.boundingBox.d - entityPlayer.boundingBox.a) / 2D;
|
||||
@ -574,7 +578,7 @@ public class PlayerLocation {
|
||||
* @return
|
||||
*/
|
||||
public boolean isIllegal() {
|
||||
final AlmostBoolean spec = NoCheatPlus.getMCAccess().isIllegalBounds(player);
|
||||
final AlmostBoolean spec = mcAccess.isIllegalBounds(player);
|
||||
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;
|
||||
// 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;
|
||||
|
Loading…
Reference in New Issue
Block a user