@Override
	public void runCheck(Event event, SGPlayer player) {

		if(player == null || event == null)return;
		if(sgPermissions.hasPermission(player, SGPermissibleNodes.MOVEMENT_INVALID) || !sgConfig.isCheckEnabled(this))return;

		PlayerMoveEvent playerMoveEvent = (PlayerMoveEvent)event;
		Player sgPlayer = player.getPlayer();
		IBlockAccess iBlockAccess = ((CraftWorld)sgPlayer.getWorld()).getHandle();

		this.to = playerMoveEvent.getTo();
		this.from = playerMoveEvent.getFrom();


		if(!SGBlockUtil.isPassable(player, iBlockAccess, to.getBlockX(), to.getBlockY(), to.getBlockZ(), to.getBlock().getTypeId())){
			if(!sgPlayer.getEyeLocation().getBlock().isEmpty() && !to.getBlock().isEmpty()) {
				safeGuard.sgPlayerManager.getPlayer(sgPlayer.getName()).addVL(SGCheckTag.MOVEMENT_INVALID, 20.0D);

				publishCheck(getClass(), sgPlayer, SGCheckTag.MOVEMENT_INVALID);

				playerMoveEvent.setTo(this.from);

				return;
			}
		}
		//Player did nothing wrong, reward them.
		safeGuard.sgPlayerManager.getPlayer(sgPlayer.getName()).reduceVL(SGCheckTag.MOVEMENT_INVALID);
	}